From ba95fcf0f812ca10ad01c0b1cdd00ddd77d19de9 Mon Sep 17 00:00:00 2001 From: nghiadk Date: Sat, 21 Oct 2017 23:44:59 +0700 Subject: [PATCH] design pattern --- Homeworks/Factory_Design_Pattern/factory.jpg | Bin 0 -> 20847 bytes .../factory_expample.rb | 45 +++++++++ .../Structural_patterns/Adapter_expample.rb | 52 ++++++++++ Homeworks/Structural_patterns/adapter.png | Bin 0 -> 21451 bytes .../behavior_design_patterns/Template.png | Bin 0 -> 22843 bytes .../behavior_design_patterns/template.rb | 93 ++++++++++++++++++ 6 files changed, 190 insertions(+) create mode 100644 Homeworks/Factory_Design_Pattern/factory.jpg create mode 100644 Homeworks/Factory_Design_Pattern/factory_expample.rb create mode 100644 Homeworks/Structural_patterns/Adapter_expample.rb create mode 100644 Homeworks/Structural_patterns/adapter.png create mode 100644 Homeworks/behavior_design_patterns/Template.png create mode 100644 Homeworks/behavior_design_patterns/template.rb diff --git a/Homeworks/Factory_Design_Pattern/factory.jpg b/Homeworks/Factory_Design_Pattern/factory.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c69c39754893c8ff15c27f21d2d507f01b8923ed GIT binary patch literal 20847 zcmeHu2UL^Wwr;RDR0IU6O7CnS0g+}QAl*O;9i!# zy;lH+6LbZKnGe(P01h$G9cG~0dk5gyuj+p$z<;J=$B!O4e2DJEekt@kfbQ_2Lq|>? zJ9+%{kwb?L?`w7F@R6g(7%p7A(sP`VNeT-0j7wmVy8$cdWoG38LGERicAwytHgJpW zl99c7Qy=l@F*?4O&oVfjA9(Av6{={T>!p3`9RAfpKhi$eqeu3OL>cz2cH|J<5xT=i z_J#eL=ngSlfE;F$V!R@K;|P!260gj?*qe`v_J#mw4%6)`a+m?20vLTI|A5$SgbvSt zK`g+QWyHNbD$*E@aC41?!PQCluz``;Ex_ENAVZf_?YalO=1ZW^+1^%K0QfWD&Oaa* zJ{l$BQrdyXy+M#It&4Bc+~S?d3#cM;S-Sjls@{^4@mr5Mo7Fnp*M~xMDtU6c*%k_O zlHP3p&i%I?{*8zKk^SOYVoJPR3W&ZtwOIDlkoO#~Q&`xf<50A!X@Y@b((E0jhkzry zS2kBquIHtp2tp^fZ>>%6nFKG>Jtph_rV6>4!E5F-Txy`_q?Y!Wl0@XD@Q&3ql?JurJ$B6}6eg3`Il_mZ!P2 zrx+Tr_M7H;yPv(s>OerwipNKy@^jU%VWVmc0(Etuh~`R3GFZEKc(xgI=lY10u1G<{ zmkPg=UB;OK1*~Zn1}Kjx+xYOzKB-IPAXN&eUBzqE^|)d7d_;bdPa)8w*V9AJ2oGnK zfg+_?D@6zeE?`u)16sng`Dhs6r1`n}6p|Uy;%n|HoZjQgO9Je<9?VZ@9RtEZjbv+>k{M@jY^U{w)f4 z%|ZKK>FbVTWgL+|Y1*5gHnbz2IKA8c-0_@eta<^iZr6fi7obFZ8W$t7k_y|-f_vo_hJXJCDG zUDtb3RBm4cH0??as8Gv0#yMv;n(poa;G+s*4_-L^%jc)OHtZXY5$iD%zYlwR1a>yZ z9r>)U(lpAkM2AIQnmjwZrFs3={(fZDC$w55X%P5Aa7i$w4KxU?Bfq!<05EPmp|uGP z6$iB7UkEOrqde0iS$|8ov+pDRmZUmPDvm9s4CO8&={=e&_*S31aYg2k@SvVl$`09F z5pZ4+PKXoH*9a`oj7m(rWH0jskXFG)_Mc8?Xai?@>@hj@q+YL%b5 z5$=L=D*eTUoJ%BGt_A}`@s%M5>#V34EN-Ud38@3+z-u^QOe|t%0c{0lXpE-}ohCiB zg(`~W2hv4+(Q&Z>cRQku?`22L4NT>FX;RhY86X5IcqptcChxOx_Si}NG6j+Vm*a@$ z*REDAK0>2j$qh7V7)Hbph(X2mn#>ph#U#XI$&Z1wi20vF_#3~Oxni4N>dwsBBqHDr zWiYUj>6fl9RrNhUu-v@7Y~3YMfkr0TmWVth3k?(FA$Zx)P-ddIoOQowrlnMK1U@oJ z+3(~Uq2^rxi_@#t88_DxhQamc!B%C4@=64n61#1lf4)&{BwC7rxaDI_n1brXr!ev> z=Z{HDc)n#dH{mQ!?XS5xYjg%CX)Yik2u$dJ4&jq+!zt(;6RRG4wbrp)4;ro(z#0rq zF5DSPA73JwA+>H6qBJW-86c+B>?8wz?Nt|_NgrZ`j@P+2-q$F%=T0E!#Nw&vax2R0 zZn0l2MG8FCL5L7C>M~pB1-l9UEKVOoKK64LT+Oa%ka2()d{~#&z;C<@h1W70PiKZj z>vf^5b7!_%aR~;%_DsML{@6fBpetShu3{rx^o%yeGQIVfWVNoJa;bCMH8^e(!2aSp zU<8*(Q`)o!VdmrpI+f_{50>UFgmv9Ru8%B$UMj0QH6hD~Uln2$xHoq{+}xO2@uz(? z2hgcLWT+7|k(4tP81hrp@5m=aXjU28j%ViPXs=B;)}E?XL9MPbYMVQS{35MOZ})0# z0H^7wQ#OCERylQ9dC+tdXdZ^A$paJIQT97Rm3A*beiWUSFTJm&=SDISD<~ee!Y8yM z#GVJ-V(0zv#ZqpvTrxf-sMuka#r1Oga?nXh(!F`k#t{qa^hDZWkqRO~k0;XwDPmuC zk+52LZ8AmWf$(#&k@=T8Ws6SbolsNTdT9!uPc2W1EHSo=FgZQz|Fkp~)$V?iHzGGO z$??TwlI2s#t*1iwcg535MJ};g{Pf_W6;Y229YLv?oywU4pKOh90p}C^m7(HhV4Vwt z>^GRA)gVyWoCNJ&vxpeSi?YPZE@m%ZRX3RO>GJzN;tx&~^hJm!T$8^-d=%FhO;fAI zPg1s-z9eVv8=fw9v_5l}aUoY_0_vou5V#w+p;w%_2Z(|caVm5FEUbK;4)?u%4s(w^ z={R@Hj8ND2eBew_DEC#xOJ0O;#wd|xUSj}9;=^AFW%3YbDl&fd3p|&bhtDpR9-5ER z_E-^fA(+cV-lmev`DkR7;GDU!hfCA+Z&}e(b~v;hS`l6+=fx1RG z+$6z*b-gA%{jo5~a^Yrz;RE`yZ#qToX{UP-MFRd&HVO%lYO_q5n0;7SIJy#MAm^Tj z@%4DoTfni9LxqRlP##p3vEp0PO5J?@s?RA7XF&z8Gj4|?$~tCGq&k}!nX4Dl-R z`X&SSty9pIif2SLp|c-FwgVIw0+5Wrp3O6?eLAJk8}2^shNfc2E+Hlqzk?XDPtx=5G08@?Umh-eitG z-}T+?9OV)fHQ~!_lL-hN7)u&2K~p1X(TR%1!)Y zm1Z%pEuym-56)f|_LT}`(Kc|&482yT4pTQ`wgKreH@dl6(%LcZ*$y4Ip=i( z-d05WalRo4fZ_SsHmdF!vLIOWZm~eyZp<>Jr&)?pxDd!Ju#Gz7KL3q7M5A7uQEFYW z=cC~Jm!*j*)ZMzeA|$$4G&sWwjfLZQ;j-C{IO}SaPY=3%m!`Suhvr8Od>g1NiEdg< zck=n}OC=K|&@;PnWj2@{(X}+}@9Mr$Gt|#fBlmj5Iila}9{yc%-xzr|Cp%)ad5}F_ z!wgd$1xCn2m}l4g^LCD3O9>_tl@Em$UZTKmSmy_4qhsw^8+olvy9oJS$b~Wo2_M^P z7U`t#hS`{8rS-3?oQez7HK?a;apj4JdOD63Zq*qqrS|#7toU+RT*_FH?^i7KS+`4* zKL4PG9ul&l{C2HuR>HGffgc(ZTs5fOufu4KsBC>#IjB@^Om#{85a`rde8Bmj0mBHE zu5Q>dZSk-o@vrAiKTD5TMbtHk=ZX}RJ`INXN2Hh>MhFz)pARm=%&NT%dzT(a>l;p$ zj?&7^on_ZehAlW1%m;Cf5NUrG(*zmqE}6l!oO@lrmlFqSqdeovld-Bc+Ju%r)iChI z<2yI?Zw^>Rv8T;QRWmAy*XwGmajuyB-VFMdt9}u`XdN^z$77DI-KH^p*XBl9o;`q2 zy<9IRk-Ip4pzZV%O(%`BCvl$Rvo3@jlSqcVY@EM@`ZCIzK;$j6!M4>3myYT^nAm3i z1>o}VKfu5LlhzdIDkW(H^AqG2%^KRVs%V9X7fHa?t?_fm3Wc)=l4sS3o9`$t&O>Q~ z2JPXl@Zrx#H_*lXM$FLDNCMcykwk1z0HWMUfm!71lS`u0(M`KS<-gQPOPtJ=GOf8} z%b31X?K^@;c0 zs`=cE5wB2BY?F3#X^)_UHbny_%k8Lqd_(Z@$)D`rD7vJI>&S_Y15p#O`K#luAIlnMlH*{5=$fTas`_L1(P}bs5rhZDaPbzQw*W9z^70i z6n6D$h4Ip28CA=z!qg_Oq03YtKjNrH?!daJ8Sg$~hS4ImDDD2_(;vR`{^23)3#=A= z#GbL$rCewTe8-CRo3atpiwNh`ZoYI#!72${&D@eAGq?xXObS&#TL>p5CY`l1u7+VX z%y{ms2u&N7CV|wHhK-X63kr(gG1K(j;w#drO{=>h^z<_L{I%W!d}4a%yMaERB)MjM z7)IAZv%sjZ&-bLu?`x$M6s!LS`5TS0A~(c;?}}I(-`RZI(i>B5iQ5IKy}Q@**7M0q z!khLQxIPssUIliX%^f)n!7$77;A)56DK3HW0}ka*7W5#$MOj}XiLdcHBE}DRq|X&N zsHg$AlH?@QnP!&#uNdhcZg6lWm(A3%pcB5dV#s9U>BeNjWOyclh_+5%pop#98nQpY zc+uh^Kd-TJB>b_G4Y&D!50eSjfi27DoELep(RJ9m?EVMo2o!S8DWP56oz!j?jodlC z2Uv8UejB`e6ih#a-HZ~E@UI#Lon~(~I&*(HJn7PlhD}|)p%mu8xRKvmcHhZgtk@WM zsq(5Kbl7u4J$e#;BCiI)kdgCZ?EyO$J%u&0pR6za0{gfjx}5oS4)ZhmWn z-An*et*4TXYLzUMq5YmUOUj3dNS)WyJn7ldgWxwu8&8XAq%+Idk54?K+|qXm2rrU# z0!sgZuTuTC`G@G(WNrL23*{au|BlJ!gPK^eGmOT?q_jRkk{58YhqX zyyS!d{yT%c`tge3=!Q4kC$$=akPlzl6*mSb1bOlSDa27)iL?vNkLHhXv-TfBeD!yZke} zPqZO7{9Xg0y)R9z{9MFh;n|}=dNOaUto))XY`C35Sz}AP+!S!PXhSfj z(Klh8r(Xk=UarISYaVlc32qvbcHQ?T|4D^sPZw>L8Z{IPWc+m=@}TcD_s`^dk%t%l zh?ef}AQdXTI*TV%guV+)fx&wOw#h}AEGacC5yRr1N1a}FYbPm$6ojmGR$VOenDCF3 zE<@O0cz8{7*Gl_8dBe4KS`g+g`V@Pxu1NnWH;96zZHb6Pd`iHjjKD0FiVo~4U3w{I zC7{&XGhPwd#aD--91SA8-l-0R9XWnv;LWh($CfTIM9oH5&b0M{%2?(zc9X@lNcKG#duv}liEE=}>LRaEP|LGXp#qprF? zmmmClK+*Dxq2Yjg(|kskKwX>on$Q@oZBZ~5ci8}!va+(bhre# zW^V|RykL^*`tpMlP$Ju6E8?VBag(Bixo0d<8BN#&IJi@04N`uyq{+1SskUl+CMTIM zr||I}pwL2dSHe5UDlS!J(X=Z-$iuttd|u`D?+~_H?GRj-IKm_+(g&x?06lMA887Vt zkzsg3SfvftL}u;EBJd{S7puCLhT8%<`;*Aec^6eq#s$Iv{65DN=8wj_u^!zYzqejn zEhWoM-8uAsL%NxCKYfW>&VE10AgC}i-}(V_Z1}C48}ECaei5zHO`*iFOiiOJ*r1Lky?jzLyNRvNPme^)Dz z*4e6}=Ce3`?U;EVheAj|hu_eU_}R=*Lx({F2n5EMKF`sx9|VJ01&;8wO4zg| zY@ozNE53d){)9Rz{b!*QYYd0H+{l{JrO-UoJyz@xz-SV zIVmQ`2$u+i!80(?$Z4v3F%%Vuo{sPqy8pD4w2+6L*-F-*E0-gtt9HXOjcqKgs~KI; z0Vl#nzeT=lc+&UTtDtzu!3bic`YnD%6gYuPZq6mS+bA%9_Ql!bveAOqrc=(-2BiYb zoSn{7-@S`WAiE~QvJz9_F2ZqYHKz5#QE+*3T*;=fya+Bkpqhju6x2mexa3Ems}j(v z{d&43Y8#VqQB1x%$h|{WL_}V`R{nX`Yjj9qr##EZ0zQ|(2P zqPI#X!uL&UGpqbkA92U(R3$EFLcE;Sgs+$v6G?xIQ5`8VjbFDHXj_3h(^z8CX>Uv0 zN-aKnAw9Y>kq!5Qfz#oFMhxwG>A-Qn;ypmkr#fWl`zs-(RZvQVIvLW)TW`V7kI5i}3Pg+!d9YFpV{P2B7eb6=6=C(U=(?pe=04*U^eZD_ylB51t_ekE<=Y4o#BPEugoXQ z;&>rPtkzZB5ax^hegWbiOaio7j@PkHWqOoRW8W5$!Ar_mg)+nRH@p*ETWKqPHJWcR&$SW6i@gS8)W-|N7X!I@{ zbc@leR}!dxC4SV7F85ezva zB6=lQKy(tV&THI=vn3F!85orKBoEcuF9gxP`JA3eBCn>6c;CMDMt~#mN?v9lPf=Nf zh#`N3iwT=UGp#MgB{5M8Ee#^eW+#5|5bf}n?GQcRXXd@IsUybp9v(BZtd~4wL@QTT z5Gx+cn5EcV&xdban&z#vaCy&eUdSN(_+wQybOo%{P#-;R##m}?1T1y$f_jBMp=RFE zH+6l$al^x#rQPE5RbrOCHiFVun?t zW}xGm1L6;^4jwsM)6=(d%^Lx#0GqCW>Db*)7Z*s*PUM$zuBN z8$Tglh|{!HwsC*{+!n)AqSI1!O@6Y{;R+T1_I|JBkjYBNdfs^=r*8O)`C7NyZQ>fK zSToH$tykstw3%CEdPz@z=godQSM1asG6ZH7ah2-fCDF7T(YLt8z2>xqv}TK05=h#y zjS-p(>YqxUUEbUSIO@4B47R^q(;qu^_2Skbzkiom>9e9r>D!hldDF%n%}xHGT_4|b z%87!#ff~*Ao9$fcjmvqRw9YA&tSx!}TJCO&t$D2X9w2Pdut4;|+rD8;IoMIy65q82 z9Efh+1K8oBk>M}g=W>03;bKqK+`_g8`YTztd%o$YRZFTRYLSi}<$%w7g6OZ=&;zwY zfm>|7s(L$@GeU8!94&+b1D;miu5Du(0r^jG8NS_CSU#mE1GA_fcdtF8jzoMAF+Gzz zRi;EqAY(udROYrg7e62b67zhwzCM*-z z*go9?=EsJoWyQEOIq*2h%My5UL$|rH?l;{bMIRet7)B`nP>t7{rTQlTiH`}W8ys3NMIbzW{F#=Hs42(?SLx#DD|ImWqlc^NUGFMxr3S+ac;oLq^l}qIPn! zJtHA5<$n3W!QZ^lqdHm!*IS<4;LrtI5+Os5JoS7oMg`H)4jBI|vioi}cUA95KJ2SP zufaCELRPehFDRtg;TE4`R?5gqy*$+vO*TFFZh}Y0dwSsugI;g@EXY=BB7f?4Z|3o zY#)y~x457UjoB;e-F<395#=gMBHpI?mVr%tXgS5r*qE(zB|lB|;pQC*Do1(o8`5?f z9Cx~w#bY_o#1iVKs^$DkO?&tTax=<-JCM6`*PwMxe1(|P#g#<1Y*TIBZdg=3{5iUM z51?3kq^(>2S!l82qRG;hec3R~jJeK;9it4sou;@*QRy-q=yO`D9QJbhIxZsQ{3TI~ zD&`z&tckZbeX1S1q`ThGKoCsln3h+L;?CDgfOF)Pk6jaT?iTkP8c}dG;fr``oLd4* z0>Q{c9%WS;85r03q-;^g!mDyHw>!4WWFkQnIq5fujgxJp^8&-%8FE_JL`;$uIRRhjoBvBJyp~3oedm+nT|&p%1WTyGc`o==jLHWjvu>vCP35 zUuhd8nvTbp_rBGDk&)KnZJ`;F>dSgisN)*Ks@OD%pVqu~DZJ&me$1P-a(4gQb3?Q; zY$C>V9V$YE#k77q6^#hcc3X~~2$yimBa+06N_$sZ^_ZB?*IMY$JkJYiRmZ7CtXDEl z)?4yyp_Jpjl|{5IlvWd!mgFt?m_*u=kF4;T@Zl>L5xfSrCO~X`pGxt)`Mh&^q5Xc* z(V+#1wv7>uMlD8cWvyi(hSwcMtTQk}6L#P10di*CFNKd8x3o5hGjh!l!TD=jy6$GY z1cB5dsa6b*N1jY#REb|$B{L`|%=*VLjKR(LUf{#~g*njrZ#F8*`8oBPq3$DDSjUwz zcX#J&XJ7Xs6QtB-#Qy~)i!G(`b{{a_3Rwoh`D(%!xOYMeqM)X{t+ zf*#v>6gB9ny)4ravX1g7@vB47WZI>5A}|W>8nr5v0e!%k?tj+FmFuzoVQ|vV$`_QG zt2#T~`eEanuvv!{IaWvfFrcE$`8J#_kE*;EZX?lB5d5}!pBwO zs5Ab;&l#c{ykGS~*ITJo zRbKBi{4%l$)&*+I`q{`Rm}v=g_)B_q@*W^o;@q{`^`WS-7wpSjKN}eVj=uUn{QNk& zVLFbj3&ql0a$n@dJk276FSWJv>j=m*b0lZ?wln)YY}w#x@J0>4_Qas;_5jGN+?bf2 zP~YZ(bs8`tnS=ngGqY@K1^icy{I(r2q1x8o^WZNw-p`&^4&>qfJl;MccNlmhwDuks z$#DCoPG*N31R>=9QbKCZvEMrU)#H1)Mi_jDPo48>4% zzmTJL4N{bdYdj)bCopHvEbS!H3_x>nNy9>-6XpGtwz1*dmySp{&E)UT4*1+-Awh)w zeLccHXa%STu>LPQ!)t0(vV!k-Sf4*IK(ye2wg*V(G#rfki+$|xWQ$fSTXd-j)Zc*P z2JdGTJSrPxofXb@%2&6C7HH!5e~u|U zy^Y&{cJ97oIJ3zwhR*A-W80MR#qkul!pv=RJ}Df}-48fRdxdrVsozHbn?U?;qSE$* zDGmjl-`@QB8(gmv#`K$D@k0;4L+39(kMuZuCMn+kmimTEBDkNM*(J&}vQcw=7v&U} z!e@4bvbzV!Tpkdb{luc}4n{EAs%sJRhF3y^vFN z$C%TpDg!%r5{|{@c7TnaF) PLViqcq*lvYN7GrFIMYUvj0W^>|c~ZC;Iaq;JINd z$>^)$DIDVD9^h(G60+peOFHOZ#a_@**nF1DN+k{N?l;l>eQvmw#2nkpjkDH!BIM-N;>$a8tqU@kTQO zrRvquzenAFL-WAe|C6D~q3EF4TfuU^*PxY8rok!KAEh?s_-rz~B_bjP0`Z!D@MGig zKI^Abudlvky~oD>HGX(XP-H?yDhG(UCM}T=f#Ix1|5j4DsbA9v2MM#RJ4pFc2ljaT+Psj&zVWOy15^9U?p@ zmu@r!mFV37`OEp96iP=G8;3%RtfI(?_B5W!NRq5%_v5~)L3`W41FJXv&`H01MEon# z6JOSE0KXZDD>l#`WKZi#f!+BMV-aWbXN`95|5O%gWWOxHI7T^lZ*JSlv!=VZyH$Uk z0t{=|e%~Ag7kwXzE@Dyn=qm8P#g}q@l2677z4mJ1 zY$n&bi6U4kw7XLkUdfqgUzzPQT{E3Fb^6#BT-WY$+B=_{uWRi~gKF%S#lf>_7i9cK zz>OvJciBH&O;2=my3qFRo#IUb4-s}5eY;D(RwOyd$UwZ3V@PeF(0iV#; z0f%;U@?Gl{;?RhI6hu~%>?-XH1{De!%H>~-`TBHMkaukRXaO4~KXKQjS@~S&RFRv% z#id5OB;~}w=PRw94$Qj0v=^x<75Cp~zsQy~Wf*~yn%*O@G1N5_g}}RO>GLgwcq!N#(JPo1RIQi?H}sLBl2unZ*}L4 z-|5btQTqzsj7ph!gXSb_e^(f}-LfDOF{_6TPm<2=u#5|N4q~R~d?X&%vD246{WLm`{mrK$!XFf$_Kw+CHefM-)J zbW9FA7pu(*PpXqRp5~gC=;>;v)eLvUu)Nuinfwt?_9uPhpEf)G%|idkuEMHMxSt4d z@aoCHqaQ=IFAQ?bJflf+V~7yMrqAgQI(l1S^_`)5uVuL_5%+EE@i`3$W7f1L`<~Yv zry6Z!dTis7)hG&bOG^h@<2k-LqW?+Pl~2w6Q;o1ZNM&w6r1a+5zw!9_1Ht^-vj3;t z2fQ#zPVc%0&}wvIRD|x|N*~7=?BXQXuE-IRqH8P^2xiSxttNBHRI0?JvFu-96>C3` zIoZ1hz(?+!_%4{yH`jZdt0|i0?qe&hUc8?;|nf^66Rqjzx-}_fm|p1>Ff|q z`|QWY$xf6MC4!5fdgR!t-<~7<8J_-G6Zs!!nh}SBI5%tF)h56eo*x-Km_v*oKe+JG zJ1dhr<*fKL+S4-AH8x_MH0T6Fiil(fKJ8J-I%^@=5#;$%W6bl`?6BxXFR4O*`^j!c zQ$iF>*8>c%=3kpB>F=C2fAk^xi}>zB%5P-mUv zgwpM+w1FZs7?|C=q3#F?|L19%mq=zB5EVzho1cWwCK6&KDf#+RuvJl?HP~Ri zUNXd|RZ&6bl%Kab1c#7=Z< zku4UhGY=Xq;#Qqp~NNP+!D^?ZdR|_US$952M74U)=+A zptSb@39agDrOM_{HtdqGZkZ&^QN7ER(0S_$o;r2MD_P_TTn%a(X<6P_argb8;pf=k zo-se$+-<2$O7JF&5T&cZ-Y)4AFYBY;sD(sXGJ9+riWf6!+64&^oS7W+b(mR7NK7Ou zL+H;iw5BOz)Osy;aA}SzueT%g9;<9^6LR#{>JumSJyqi96mYjN!xn6Ny!g^MKIUmK zT(ezJP9s`fz!?VC?&*$*i2Ra1L8u#?5#9vb^o3&2N_Dx#L8YR4kdxEX#6){MKDQ(J z!h_)~7p7{e{+*k%W`Sg9az=_(K1{8aa}8viE4h0iK(PBnzM;zbo-&#Nvl53_#m9_1 zA_`Q4)Zoo&pD*It5qe%72-jM>*t7uE@{F=@^b~n*aMWX-O?xO5$LpQTojKa)Y$>2K zj3!oMaw0Y(#l3t*Q_#iHej)UHB(3WS;!cHXQWl9OFqzgg9^{kAfFY{E?RIu&HGYgS zpV|z`Xvx2s22v@W)kpAbxl_7P1=MvzZ{A8HN4TH`Pq{V;>Ju1%jEyKvHlg4O+PC~$ zB0IDpENm5kcCqN49l@nEoBa(KwhT+D;olrM&Ms|V(O3b{pZ_zT@IC*ZwR~pW_}o6t zzd$Io9)CD7-oh4%rLVgKX=;SQOy;hHU~XgdJY3YW9gAdOy7&1um{--U_5dow%@(Y- zERms3{7;0%JXqDJ{2*EEV;Vlnyh_i#AEePG|Gw^V;nLT$W;#V*+rK`3YjM;a+9vK* zaVBQ$6Gv5w)#sGYhY#M4`cjiZ|G4OIzLB@%!{%MCvDVx&<;}V!<%73tzkcNQ#hkKa z_qrz5=bZ4AsXE6Fy^@l$vt(EIaQc=CBz0TqZIXdgz-qup|ARMdJs-=TNIT+5l%&6Z ziTmw)c~9A*M7BdV&;B&s^n2_7+4ILmafjHz|r9omEC=xW?52qn+ykbj#5Nm#oJJ zzVx(eFc{}z0)*491-@Nv&8=uZE8~(F?JJs*)|DoE*OzYD7;n63SV-=Y)0jms=wfEN$Y4DUPm4C< zv*Jw2FikD;65_t@<2YxX6BT~icsA2lD(sVMq0FX^FjYuxs;6Ck%q;_U@3q-~;o5jJ{J8D{LwqN<(So+mwYM>5vf^FEk zD9m84T^4JskcaAO62BE2gCa;oBET$)ajw$7N|!xuD1lmvu^($}Ze2(f=z=1PTB0a3 zIyFtnNhXgm)Bq1iMl1>eV%Y=Sj>z2=VBBPCB4y3RyeqK$8gd6PGWCxHz}bM$(>{BE z${aoSrn}hql_9#|-)SFzdY@J-+M* z+yf+bYZrG@RB~iq0;UmN?I0^oM)zpAo4bUM^$4HEcyMsEy(8DGNxYj(WQaROc2;B$ zaOB$Evx>4`)pbkv<5{J7lLYzZo}%n9w#f@SO~u%gyp`~_=}9sW$O0TjJ1adrtAD3T z9tl}$1-dJlM{>0El6|@i_9d?ez_GVQuVAmj+MGD_8~X*Ehp`Q&C0l179&T_Bwl{(_ zNwF5|(r`Su1=E-mD}3;TiHt*^n^a&t04z&v64+U2u~rG@Dv0}YH=DKWd+rwf4$ z`n(5FFYZ5$!#QT|>cfn=7zYpw@A~mjqys@hC)RXkJUs16dlw8L zsiGYCcsyPjBzoD86L^83#B3Ty_^cXOe$06N<~yM zhtOc2hi#tT^--PS`#tCP{;v10*LAK_8Mf#1Joj_o>t1W!`so}RwptI`+zlg;|jNo!Se18cjpmii<^GjmgY zeyj7A`ub*87tF2u7Zym9NE=CV2luPl-|cC1IIT7^TQn#@e_6;;TlwIjeV>)9MD{Ux zR2}pWr}sH`ozJLiBs=`1ag#{_E$CE`2S+SV^r>f`{i~d}nR#yur9QLpQYWv`&ep8uwi9m%nQ7qJnfeT%nE(&5k02OUfBhu)3*T=?VGULRNDi*5h> zMT3?te|tT>NFO!_xgU%BxrorXbM}mQiH%lkXYhynyW_Nl_*3X`Iq})z^@n8s{fl=) z<*BPF@zutDva03s)kcAnDSnYAg4KyFUNU;jC;U@aHkRADTe4XvM)z{$R~N}=zS#F6 zNxVVe*9OIGQg2N*SmsHgKWk>D^Y)!iwGlJrNKX79@hXg`uAZv;7CL=PeY}ircecWc zmfXbD8UH_bSiQ;kgj~QR&!vYE`P^TWtmb%Cn^$4AD>%>peXG7okp^T{5X@Vw|ubHGa?4>!&2Kfeo%p` za;o<GC z>o|M<`~#;aZq4~F6B84^|Ngsr_pQ=tk}{XzUKSGTo%{Fi-@A9OxVZSsmoFb8B$kuU zoj>p5;&R=`$6BKy%gT^Kd3j|C}zzvI%Y8v15m*sHl*T3jL}L8_dq1ugo-WW|Wz> zpmmfx?p;sX$N5EGhQu0$MKf^h_GK3}E{l|EYHErQw-I-n&8>n9fV4%x9PqCY4>>0xj;i)9R|pvU;z)SBaT@9vB-FNdH_>A+&AV zHgWO#l9G}SAC4uc%}#cwCa{uU}kQvh~>Ac6TIW^pJCe2 z_Vw!%Y$R`M;>SWS#)65q@K>*1sVq0K6~L{IcUn8+IE-JeadxP5Zn|BD;{D`&k-YGw znrAlMH3@2o^&M>Zwn<8PikQm8tYKr8RovOatLe1d^6jdzE$!_oTA7b_iz6w!=UZ@_ zCx`DkFPoy1$1Y~(-1d%b&6+#7JNvIJPCohM+e^>ohYlUWa)W|`D$YzsNZ9dg-YjW9 z@ci{_{fZblB5rKDs_Jnt$y#HbaZzpU?F|hLTQ_fByKddpt5-8FlyBO!iHL_wmo6C@ z86|6Fy0!*tOwu~JJ?y8)2iv3ETzl)&7c;QqTMQ9$6z{64DqJBv)ZCMd3|GW1?ro{8 zdQvq4@5z%VA3l7*hSZum;-^`3op1a54|SA3aGja-^z>Xxu1V2#Yb{~s;)>#On|`8S z8kB1Ae)6jq*Rd$+i zh=r|fq?mcrb%FeC9^?2S76F~+K>U z)_915nbC&E96R&od@1uLNlywggEX!p(!u~Xzg0E@k&BqcEwP`Ov}tU`rSF}Y8oM(8 zG1k|}!O6+bUw~_fy?x`yF*fkE5XnPNPcIkOXXVP3w{PE8VPxiHK|pk^5FV=e&Csx2 zL&xC|eRTN+*U8Sfo}QleNT*}Q#?AS8X_C8l+qM+nUbuJ#69rj}Sld{Cb8t;(L#FwW zBi?3SrVSa$V9ajLuFY9i?E&)o`}e;H>^%G)%dzXN zANlm;JZ=H9p6c{&O_4Eu437H;k zFvqgFoCo%2nl&N~68qHCbJ59Z%JOE?8-Y<_Zh-{j80M>GtYv)j07l3|?Om}}T#QmC zGH}(9ukQ--L1g#Sr|+hrrtk^~C^i;Qxcogh+fZ)Wq|h=@`tk_wU1~$-;&oXuS<%o-8`?F~gmeak}}=#BQvitYu+|qf%}9K4;0@ z;XzU>D=xk@n`Y0epis)Yo`^c*b%)$cjXvJnpH-Ut@L>##Kpw54wKVv_g9lTz&Ijce zh!Xr%zZAK(33-YrUJN#j|?Z??scLo8C-WpW9Z^G43n@xkwIxUBd} z&a-E}th>I&MY;0ksAr|{iSNWptJsiySCc(7lOO3_RJPGn=T+ZQSY%>e;Kmy`r4dT; ze)YtbIhpZ_dY_@;#&-3H-e5J+>XMWN2Y6h>i>_#K`~?&7%^F z!ANp@KCq$im6#w&ne%k#4^T|hR;sjFAqu4ac*2=+-@)7;aQwiL*S@*8t~`y3Jqu`7 zp^%7@N>2_GGoRhj@bWo zPfbk~y?))=-j4qx!xg`IBikH}`eTB{cU|W`e4`_OrYk8$+_tBqql1-`Gdbmm&4I)z zt+WfrPoA`IDPHwxY$2(O?BmLsxtc6bi+Hh3(qU*b50C8BDDpiLRz_x~orT5YjErMP zj(j|yA%4cpOxn8RW83?1mUZhk?6KG=Bct1V4Zl%!MgQ-Ygv;$n=WpM+^I&T9)wMMT zyjBM4OifHg?78%^ut9Ei9{+xmsNLqDpY1ZO$3kM4k{@a3v>^{9_ka0f z(OWMn#koJi_|xOBD8@MUN97k{j?Y&243q@&-9$+lYqTTMh(hpAPDy)Z`b)^$W{ue{ zNa;jH8vI_A-h6+(gzdYcBE!m9#hRKL-19En?#YqvB`eoIyYyYw$P=kM!>E!+NNA{1 zNhS|f6uB{x4Q&+vBU)hx18;VkP514%6vLK_7cWlF%qZ|X&&`bCbtc=w%{5P+e5jKr zE-l?uRMcL?< zX^cqluWpeK#GLS?lq0d@-5+c|(~6 z1x+C$6Uh`u9wuyfL!Mf3K}1JK2Ur}XF(oc8ZoFTvucIR*EUc@mYZ7?|iNpxE?JS;k z`LbmmOvdT;FJHbye}mLyU@(`nO!?%=lW|^gTY&}x=XO6%ORLIbxxd=Lz@T1^sbH!v z$HT(|*di=6G##j+Dy*%o4L9&({yGYAg@lDwqm_5)=1(he9gyOV=nYIe@ih7D?DYfl z&ALshuCOPC>>(&7mZE2n(v`N19HU)jUnUyn6X(GCq?chT*zt3sTJecA*WUC*wM6+3 zqwLN7y$zY+B1TUgN4mBuMTUgUN~Gpd z3Z8lG!+ihS{mS}!aU3^(nBtAD=BdVm)-K#Od8$f)?%j8TAZ`M~}+O%O5>@bUi00=lb=y?HsJE+dQ5*PYeN{Pz6kpYovW<6H$qqvu#W? zHN(==ZGe2j!^4@*;aAhq(V^4HvF`MzM6&`Hh)ieR-)edA(4j4xHwOd+q?t9=1E@DN z5S<^g&hn*8Cx%J|BJSR;sH|MLU;)z1A)^`K+jzCa1l72%?sx_@xfz$sH&G2AJot{# zraqai7uqEyrS0hJt7a|V9!-fZE-TYWszy`XTbF7GD43d>O1&>5A(4ZobW$oP8|}q4 z_J`x1OgucTcb$RN=f>RTYU7VT(8+T|%yi&v0xzCaQ31G#DWD75aq1~92l7p5SeR|! z=TnoVbR>87{pE9UNQ*mla_vWZ>To^L6@LBt)z;RwLh3g9s1RYpW4QSFh)g81!v_!2 zlTSQ4O>|@hb2I%E@0-$-9l$uaQur=h4nQL&3i3lXkdv#cD-MRLf<3|+71h*?0A6IfB~xzZ+MdS*4CwD z93G+!Vfs1KT-VUhkdg5wa^C()rx5_|k*`DaN>G;F*MC+<&Gxd=ei>#cTGyUZod46x=X-DEG#Sunolz_Mn^^z zj~#REqy~F1EnKqlV(p^{+9qU7q!;W_tMqMd90lNe#Y_i4#GZ$u%y;S4a1+*Hm)Z zbQq;!_3G8m&dvaYtJkbK?8{2#7u&V#Hm_@fmW)gRs^;FkdpY-79-Lag@1AV#PzfJS zh=0cpXY^&X2&%0SpR2if|7dSRx5P>k$#EazqOQJP+I5-Y_TH?nvwQPX;BP)`81ngy;d!)@;o9)K|=j|_JYYV4TZJo=z;8m+YJ$#h>~-ep)L5ed&p=*`($nm<}6DOU}dJ zZ&oy^C~x4+PzK@@!+H31GtIP*94QXgb?pR%cN*6C$n0BH3 zJ~ANgFB;MAD~!?rgBzrs?GGM&b^p+Hv_U+6wE{bKoX)i$1mJ7@{CQ|-2q3e!r$=6D z`8Ya~DD*=nDS1Ia6lY#sMxxzS%S!sf7TP62BC$TYeEIUnxonHCl!OyjR>QY$F?H5d zfUFnq}nOM?Y!cM_f1mKK8g0XYFE3EC0%d1E=etPo@U)?u3kpLEVrKS8GxW z81k9bM-g$%Gg2GP|8g(S$?6o-{pjWA9^OWa1Jr4E?ZJcd*4Al#tC8u6JkVHEO?;?N zAunX;Yczm3rfm`=K9qBuN4l!3kDA5&g$EeefadbAf`@zJHVI#}e^(Cun`E&sg24CS zIQfj#c>@tE{F&QDMb*PvKpJIr`tXUDR@|tk+MCC($^0ML(T;;sA{XoaV0+CGApQS2ywP^>vCj zI(nvSpOHZg6keijk3#2zF)) zE=^jRh=xWjZaqEuL!?yq*RN!cJ=Pt!u3x`yZPQ#|Ute1*ws-HTOfS%B=)&Yu(5&AL z4&It)RuS{I_%`?Z_wSjP9YXR#ax|XXM@JGejO{0p&OF<}&wu{hxe`-jGzwFry#lA7 zSs=X$fU#04LvW!KKs%6U=}CS1w90q{kB}aYc;1)kg${7@=FPY{YnhqxEjL(q-S5%C z9a-^JdJ)O}2{bo%-l2hkBl7YkrKKFA#%gGefreC6RDkiGS$C?CJ^sATNU~O(6~yXBPCu%I=#nr>eMMDW`7+J5s7NNOO`Cj<5@r|UiW8G(kudAW98t; zF?i3es;UaS23{8=i;I_#^*<++Zht^`eB`ULvi;OK6BE;gatR{n4_VaSv25;{TVO&z zJ&ATx_cs!0;wwZULhU@=ITr;6YVwA=jNkRA@t3A~1&>Y_tt3^yfFSty1cQI-efXEA z7P8+G<3D6S)ZIT3Ltv;#cMeqFEy7Ofaq9HP-@Y13&uo?n?K-x_4{3a46hm?%Nklq_#w!y(cYLEtXvi zk0>fi;VWDCwgr}egr=_acOH1L1f;4dXU~zLzMOtpS=k`%e25hS`Q!ILoFkDUeeM_B z09)QkgnoHyLV^);f+k=^Mkkum^e2Z&Q~;R7XU|SHZ>QZu#TgwPojgWIvKNo6oLh@< z%tuN>W0F*-1VrZ7vRwmxcdyOLeUiNz`+;g^9=d=@AAt}vaCF;b(iSNx7xZnADuC3< zWHNq+;*Gq9${S0irkgjS2iUqaZ(edoeiv^~Pp`oGBt0tgb7#WTg zOt=#~7AtE9w5B{iA0Ok7_g;V*K*|7?pDPu}_W3Gg05Sn6vBO&3N|BNdxKq$M zDBftvA*Fer(^Z_q|vBk?~Wo3aDokoL&9@o0I z000+6Q82%jfw{SEU;iyj^zn|kZ&)K#fs}$-M{pTWpFTwii&f(VGb?*@1F*-ON;n9* zzPi+{+}wptO|Dh($MGw-rxVx-Mb&F1XQH-05Dh119`uh+LW+nx8j7lFz{i(l=`;ma z%hc4g$d`@VF=BECNJ71(g<8=owD??%nm|R};hS zbEBCBrp@_{rKJk&z2b%+?$Rw>jBVMvX%i*$8w*7QI2KP&Fb&!r?d@YILB`DlZY#b; zrg)DvIi*1IL0%`6gG-kNLHa85R%qzD1Old^dsmX4@F<_&*XZr-ZDDB%tmOyHDsFuN zwSi!to%-{zQhIWRSz}_3rI}eDaGs3QC?PxexOxQy-n|Rqr|t3M$2bgx&^K%IC%n=tK8t zlL+eU?)5)$qLAS)oVddyL`dHUh>z)IX=zeV!BeV;QH5Ul{X>djBIVk9K%)cp8S3jV zB?H=2Ag+l30D%<~b3~&G5}>3}MGUG6wz<=6yx(n30-_}zo8pb5P@8KfRaun{CEZ(# zO#!e5M;sm&CO!7q3VLaMEb$DG4Y10t>ZIWKal0d@kmMoUq5E1(0hp8vFBq*isTgyT za->~=7zS+G#{)K!6{I1qA=At9@=Ms1C5#((RQCccPmOeI7)SRV@@F-i8zE$~ABAY`w`T5p?IyaB#u&p_~EKE3lZ>*49Sv2$m>RUEBQ7BCyn_RysP_qHEg%Bh!(Y(jdUpItJ~9ejg)0(=b0G?JPL7%}Of zv5>^N9As2#db$gtfYqhiutZAOnStUr&l@=b)C;vo!gYE)(MB5QYS-jY1S%FSTm|(R z(0+%`+sX?f$P3wa3s9FJ$e`O*Y33lsD>P)7^6~O&K0fn%R@MYT6>Gc#_csIq_tB|T z1N6@zP}VU|uiPFS5uu%MTgEuu5fL=pUgie9&XdVJf5MY`eXkmcY zpWV4S6cS4-E0DEF>iCQH>C^AtzeliGA{(oid5j^{GHj^hXwPoYSn3=Rs)aGRS&nh4M|M2MD2jor-%sBLV7An-`HV75lfT+S-A4iV2 z0`w=8aVV4k{xexz-%@wI`J?R*47DwJRMNg8$ubFaHZ{^jG%%=7tbRTX;L3p`@$vNq z!<3bilY^a!iXxO;_;n!R?6Ds>)2nES?F0a`2LZQu<@$InT6=rDF7#@!M?DWO0w_kg zjMf2jrztc+4JBlaFi{0|zSCWiXUMN`X>mqU2ud&kH@ReHq12RF`U)wJR*JmC8W%?< zu10M?wut?&2_8i4wqiEOG+TpGM_}N%l@lAaKT9};fHFvx2?OhD^ z{bO`tgLwfzLshv=X9X3PB%o0nySdxE>0#ctfgO3E_}_zk#0{X(g9ZaH)ChspKk8)Q z-%U>?2ea2EpGe}XdnTUD8<^-XclB>FVHvGaY=wMQRK)LhHEc3;RjSqa3YM)1rFE`n zG&8k^<%%%Fuu*v5z@S41$m?UBciIH}8kSwHv4P|+sZ4yKvp&5W{Dy!_9Bge2Wj_VO z|ItPFzf=>22Eaz4kCL_fgOK`v_tdTb6B92hH1z%R=?q#t*9#I-eIoPX8-MHY2z>g# zvIG9zD|r4_b1tiS_CJNv`Ic8P{pEA`i{`giJvk80wEyr24g~}|NC^yQ=c~eWw*b^t zv9eCvh*VO0-zll!Y%bD955Y=1(!y`E>aqFUq>nOe)4Ug=O9tkQ^b7AFrg#fze7NRh zc0B+7mHY#AB-%B;847)Q7Te8!k#lr6{D2~b$`gzhx*U$Di?BSlLP@j!amVq}(PR7# z5~4dCMLL4hD`0_icf3yg+>`Ir-Pz{V#x`3RDT#SM44GZ71w#tIsl8v^94l*=5nR8! zmBx7ZhS_S$p3zZuk+acE=W2bnf3xj-msY)hxK`w%9u@RRgXZxyqn~fHM3aBULoglx^~>EVd?r*M>CxhU72%Xtzt7$y(6=Z zQ>pWUb)sWP$6xF0kUXS<|zAyDZt&`PJYKQa3HA*_U4u<;Z-cOzyHs4m( zqcc{K=2oScm~H;k^{HM}f(}m5tlp={PUM1aD|Hea!DJN9yFiQJ$W*| ze=Yc;ec+3R^h|57?X{yLt-d;j@A~0;6|$BQ*g93BG{3O5c&d#Dw%Q%)nYqx^`%ukg z2_1=b5w6lL^2qr>ruzef2Y!6&m)Vvr)^Vui8X;>F*LB{gC;#hjZ-vxdN8LP_cCXZC z;8i!x{OM-pHP(j-xA>OGQ8;=)S9?4|LsBCs!`OCeJ_1yVuJ} zA7O|1+l~dkQ~h<<-|`2F+$+#`+PZxC@9UQSrzscM3f}8@ReM^3N zgFhE9Cs|fL>b5d-ikNJds_!DvpLX_=3f7#?FionvAu`s&z8qz)wyVgoRzhq4)3Qt~OGsog zVr23Li6ppj{?Th}BNhn{Eg;Qa|1+Dpe{Rv&DJ#u=L_XOkgz#qPG_2YbESl-V#9D23TnMBegRxW0mLt96Q=ThH&2CZKT zD%!7avb6f%^&9zM&ZDwU33}3V<#~t9nMJb#owL9DE|BV-z7aX9wfD-g5skx1)D8SJ zj^DD0L$Iujp(+;2p1_7z3C^fb$NRYPg>L!y*n*0i*)}qFy~b|Qy^PH_(kty2Nk+i1 z1E!?nzi{WgT|JTgqRZUpD+k0@Om+{I1P0Kb-E?&J@sWT4O_e(oP}<4tWJI6?pbxS>I)+2Rl@VPrTSubG{>R9ixPjlRK>N(PzgYOj`^h4R z7iKM>dQcR>J&{PFN-&rVzZXLT{Pz8O8w-n$s)R~(e>BczBP@tLn5sSjrL=vB$N@DB zvJ*C#Q<|D@-n=37*~t%{lc+Gn>s*9D4=w}TB4oypw9TTT>G;Q_qUWS9p&8iyn`_%x z?=Vmt0|SH0%t$TYDML6}0RB^MH`0ByLC*mZV63D3fY#u0GQ@Wf@YEu;_;%dhd&i{y z%jCW1cdAOlj`Yod_UK>XLH(zD)F#?Y8IIBK;{&@&f7ZlA%d8ugF|ZI2ihueQ;oBAf@lja# z9qiKExA3Eat7vO&)dtOsR-NLFZO8;lyWa#K{?B}*9tRTgc4XuR4vr}xbvXreV8KyQ zG7u}lC#XdiK4ocyk=qGv8^9>o+cW4+z$8DcTY7T^8WTbuOiWOdJvhlRi?h@Z7hxy7 z-4f7+;Ta~svMQ4zAT0!wqY>gGS?!SukfYIuty#TVQc@CZE~udKZ`TDPW!$9EtUtOL z%_GR2vY!emV?N^~szQQB6Anw|ix)2tH|r>`-n@Z?vW|J?tn?Rr;%}bbiWxU3hHz}= zW0SFF&^ttDgH{WsQhGA9Ms$7nJfFuN*Xd_qb8>Q=9?1F;RthdI8NFhrga+){n^&*& z3=MO#v%C5pT`YqyM-#pPXl+otEr7hyx4e&%X)Y;A?Ad^p3yrs`iV8aJ#jto7ykjN5 zg7A%|u(npmiJylj79bOHHPH_JBOwq2MYns;K?K>CwJ}IHIOw+moHaPRP^)pT}$!s@@n|> ziEv34GRmxn$Ve1aIIte-7PwNp5dgbQYK}_0+`4tE;o!H|K;Ldt4b9>sTcO6p^njhp82|x;GqSR{TyH4+KK1P8RSm8^pM zG>74b&3Bv2PfAJ}9hydW29bl$<73c*dKPROtP9uFXv@h6R5;wxtDyr;BD@;(FujR% zuG-Y>G8U0`EK5ou_ET!BT2wTN~lZcru~)L|@IYbm=O} z+O=yRo_s>7UmtG{Z&-{PFSO^7Tem(!oPfse#Ty(hSE zECw+SiF(Ia^zZskJJTtMDNiOaTh!f3N=hvAhMCWWJ=ICIm2T_Y*TWoT3po)%C*?Lf z4bBL}_e=?23aoGyRaMqtuG}U{b)l8qj*5b3aG?A!m(k%Vdq+pv!-ti^cPlzJr05o4 zvPGepM5;arNHDo-?OL#T1|T7E7M(lIVP;{1a%q9n&n}gj>Pf}bg(9B^-JBq0(8HIG zh6V@Qfdj!kVq_ONl4Ak-Ri)hg{CQPnWeaSVitr*Sg)(rL;ZP3hWLRUmXUq#`Y?1Ni zJ`XOmtbKSY75e}xApatM;+8eH`F1$?37g<(FTREnq<($X@hGC>btOExNP(aRs6kp# zdjHYJ3}ptsGOPj_C5(1jMh-+6WHpd5khwN9tOX%n(6_}_Kp+L|rcQxtV`Zfk!Uxuw zv5}D(=+HyM!&EQQiKH`l@C}F!z**Q5Q!onO8g&Z6lc6N4+d9?m!Btc%7DB-h(v~W~G0rqbVT*UP6vwU5r z=;6V70tEwPp&1OG^~-~@oz_yOzjMvOngPGGAyi*m+YH<3CuR_dX1+lxs)_*59dkdH zu=Fw(-d+T`eDUJ0M+5WID$~RDnNZj(mNzz7l)8l2A-dD~mdqQYj-<>?PxJPlqA!1V zO1QIbf4245HV>$QP5>eb$-)@(fMe~1#Y4=*y!k0O{nEIVr5|uaohLLUV_s(8mBK^p zYJY&-fCpf#X%AFrY=U#FNF!C=t-28Z=>(~!X>O>VZKwXE{K+AAI7ToVsCRy%X z_ldd2ae_aB5TEq;EA|IQQ4>iLFahAkqO&s`Lf-EhZ#ICZ;dl-Keg%J)eLi#7yfqi}Ig*d(}N%g)MXJ7741b{fl}7J!~cmeLF|bJb}0@1knMeD@ihqv3Ef=#C%8(W zOh3GPXKiBxm)So!YTyZe(0dkoFuR`t>J7!aI!R-!r>?TBOesMPQpZL}auY+XprBE; zz@F2Fhe76@goOt}|M(hhjReLj!Lp>uJ0(Y>mFdYKZTUj$lEjlK^hPYAO+Nv;b)p2b zSaq%;+lr0a2VV)p#=6)+hpny7%sHWCmPJ!p8Ph+DI&Hw_0^X(*!aoH3wLgUaGdqz$t zC{@m{ml&K>W`+Q}Y127K0AMjc6c=0A*+uO(4NG%|F$wykuImK#&Yen>Xcz#1R55Xb zY)2?2OiUX~I94e49k~KMq6}E7uFe5#CoBe{qEc`lXeQ5g>&}T^{3IwfM^AD|O-u8= zc5QoR0#tSgSOxHWAU(o(Bq=2YL<=|)6cW-w*d@S|{xk=fRovUZuyF$cZ*SfD^8LFi z^p%j1J?CC|KXuv#4{}nqsN>OnrqP7gKptizIk{6fa;9@A^4PwBH*`sAiSRLF(&ZB@ zgphoIQqYSG4-F9mCxkqA`ZOGV11eYOBE>8A(GSjyHJ5>CPp{P>UhDCh{kU88ndT|M z3zzs__VPLm_kxa26Y@0s?u#8QEdl=imVi>o(96h#u}j8P68Oz$_t<|M6uSi_l!xv0 zwvyE10jg;Q&>fW%p+rb--uw#2?3XXUp*oP3w9vo)uG;4$y z^%80|FMFbU?k%UdWmNo75UY8-a0R>C&YY4Y=-*JR9Gm z4DRqa2~VEA{kS{b!pLk1Ps;7^a4ltJG_v4X8|)SJ}o=rqL% z{K=)mn*+06UX|3de{e{O0&vRPw)giJAnLH@A9I1#75nMbiFsX7T+KW*L;ArDfANVW zj=vW66(K4A2C=q0f9I5#Gt?$(v~+gb9Ge-yET9CG5sEiL53fqd2d`gm5f|6Yc{;lL z9N8l&iSK~>nPS$ag(USDl>|6DJelxl=+FE{Kh(ok-zyFvlJ7W@C^AH7U8rUl;dolL znPIVVQZ;X&G4v!LUkR%=->S731jKG8@@dbH;PRx~>X8oqr^|AG$~AXm!egO!8(x)n z?>;}(zfPsCZj3CZDP1PU7qdG&z%TH`S%Hsc(y0GW-4Wo@$sVwjRoW<>N0lLtai(<2C zf;;tP6fu<4CC3ZGZl8Jp=bMEKt+BBft08+76u4n4MmU#{XjkLFLbk{yj-#n!UiMq& znFaGq07)n&d7SWI_4k(@xkMTvrtsAvd=<2vuEs*^F;o8}Bb#@ulp0Cz5X5Ty0uN_C2E-8)0XC4fhw^`pz!sIncy3pmRb8925K7@^ujA-&9wN{*z7Qrp)Z8 zni^ZwX^J<-5Rv#WQU_~mcu0u7lM^N()#+~s1klhg!6#i=TFSR$$5HxS|83~#>Mdrd zzIR_iW;TR7FCUcz4hCwoWc(?tmojizK-mVf*zR&rMLjwXfGtZ!1hfy~lgEzq4 zP(LF=Lp!^=FrxDeQ^Xh>fU5^X>YnIO>*_!O$u<-sIe=%t?szc4wgAINTvSw)N`mtr zUb$-H5l}A}&4kl}W!0)DNZxR2OaQ1ycV93RQ^#5&Y*!D5!)v_1m{i+KriiHQc93 zfkPPUZP0MU2y;71Ri_QS1+q8RZzpD3Q0<&#W#6POc~q7m*27gj3_RTK!Gv9cfJr@p zY!K)?nO>WylE53f#a*o|vg><_5TEhovwt@Iw{X#6d(KiMCa{|GXK-r~4VW=#?d;4# zW{Hc|9Kgq4x9D z!&DDC>O2NdFc^e;U}IyGT-fteb!bW|67LGInxZ^bx|&%=nUm<)6N@V=hhdX~=!`w6 zXaH4(4qrZ5Aa~#;iV*0cm`nsZ?El%}XunRgjkxdKL77{n)IC?K&-KnvDfxHnK4RaV#86D>JX`S#K zA!PP|`@&%~J-c*ZY^M(SATAM%gGI2(Ko~~PXNoj4)HpFU1uwQWY^Eq`>6i9c-sh}z z!;o{AD~XA)9d?~eHSim?spBA_cjsdmDW`G{q@rfvVI;)Gmyu!027iZ{Zy6Sr;Es+9 zy(RSx-kwZA$t&m_Z7XU8pkfmyB*F=!fHA^-Q3Q=Vc{?z0q@$d>)8_2iXk;G?i;pIo zvdZ(CP%4u8_mJ)>5nTSv$!8X4FJ9~k6E(pR!Z?Y!8I`w%%Z`gyjJT3L{QMZo_AgM5 zBHm%abq}zvghaQ5=d@8ba$DK2&ST>m;w>{0V^v;s{Ed*id=wru);~Gnv-2br#Gd~U zEB~SlAa4Hsi@&bjt);{isk&;y=008h6Zs2PEcsg}Rtz1XM4H)m`TS>7<#*#H1-D&0 z5AlUgsfa~ru{ZjYS$DT25^1RL=W2+i=m$&PZ%DdlN$kwOO1HwQ32MY!%wW=FpQ05IJXa(48 zswdrS;qdw$*T%xaqPO=OXqpN5&YIokW&qMUcPbq@0xNJW*fBMy99LfG6}Q?0&qnsX z2~I4T^Q7p?yAbbX0!4B@$cXxJ>C%&Y)vDY0=@DRKwbzU!K?`j8fHjDUSxmU{8oz)0 zHlb8-QvdvUVV6m3LXn@|d-TI^q-vr6PT>CwM_yE9Bw6ZXtYi3;B&L1V?HXE|*JnZ$L$^Wx~@F3nV0**mAkckOJM{p`YhG2i$cAYyo z;ubPL5XDHUUj5hfPfx}y8}2O)hB?s-AHU!|KZuzTkELtU_}bgr@?ikON}gn9{__9@ z60NE&3z!nTiwK6zE+I9*6*Uh&_Mk%mLzJ3240|FhpA`h1f9jNx*aVD8Ktk&`Z0P&) z<(?XEds);RemfSgnArd#3x3~+&^0iCBY|!LkL$q%3leYjT&A5{w0f-zsi>fG_<+B# zvu|?PQ&?S{_cGavE^ zn-cL@=)=mSr+U!P$Vf{Q1|H0i+1lB8VMvdsf}1$p-rim$(UMk6kUdEgW$WBEFF7zi zCmcQ1mBfb?fGmizxMnU;$R!7eF(o|kW;t+|*0tJp82weMQ~;k1>zFLcD-sojo|s4N z={efmXl`r_uCQ?ocOtWB8WEgvvCgtPIrA!$rj}Nvm(1X+HINvb=%ZnX25pD-W5^3l zZ9F_dd3jPEk1=zKDGB^~jrF!TAy_NT>7$jm(ZgujJIX{>^T!w+2U2^_})opTS1X$h< zR5gL!Kxd%sI6%+O&yU?lpPSpYOG`_OPnz#EZ=h{|(+mdqB*7+_CuzJ54fKr((0d2y8KuWD@$m(W zKqVENYZ*<;9V4}1ZUMK}Q1FgSUESSKX`;fyvWGuN9H2*G&$S#U#^CWil_stjZD^>i z9V_O(srI=YV^OTEtVar(F)NOT7ZVh`rPHv6ab-gYN7= zgINyIBq1B?(|`S(Wz{LOmQ)wO7bp+Tz5A#^mg9uPfpn>-yy}T+)fVYKURdyz|MFVltLc~_%};a@+XZ!s=ACdW+L?g;UTu&&}L)! zu=DWmDc11JN#b~aaOKX(i#Q}u$i$R!m8ufn%jO&iT8-KIs2sE&;QQhB9YbVcbVCQc zo{!StRVLRTJQ{5ZQO2^&6VKRusfe?aA0zgS0IF!Dot&HqrzV=#xPrW`9u|cRVlmA< z_325OnPbR<-5taXY>`BNu2o>v_w}W14%EaG>Qxaw!4l!^)h`o_iMfmH)B1)fbr08F zf6Y7P_r7sBQH3gBJ(pcSQudYU7v_=IH*!N0|NnU1tkX|Ut{?{h zDrQMmMi``qZE)Lp<01Au=m5pU)5TNCYF6KUA>t09LVRLV%KuX|%)eHG3bR8X zrvtG?KVCe+C%2?k>VF8)|BBq6;-sHHiq}wYQU7^$ek_o8h&LE4$p0nm|MHrp%-3Ht zQ4-X6gG+@Qjdmw>4z_=rKapSS%MPkOEgi*3-YlmwpDnI3Rm8n{IGnEd6_!GC7ru+4ARbDsLSH}k(!L;Jm=d7ZjT+2d}VKkxjn{n9Q?L?QZ>NKPLZ zeCau1hEAYOxe(-QTh3XsxQwf9{u;c;)H|85hIWZ)oh)Lk>2KNQFH8Ar68e`b`!%Wv0wPKYA{|4>00Pq8F@%ILqlC0{BaI-9)PO@viKL`-igXGB64Kq> zwXb=e_x*m~KK8edWB;-Lnc;w$>%Q+R&U3AGu9MIgs`B{vp4_{2>lVJEf{ezkTNp6# z^Bm4y@H&>gmv!qF?JY$aNi8@1tyH{AZOz(_c#iHk4o6&a#ib+|dCiv))tXirCH&NA zWw6y=ey&&*&!K9FsARxfRy#4Q+UkeTn z0y$3izkN=E5HkSUb@)G@0Uzx|_WtJ!|Gp_nOF&`Sb4=O)9p|=Wx*P#PnHIwx_9>G8 z8GQ)-yC=39O8;|7OU&DJFkbFoLn{AsBP{rSEG8CS7HQEMF9VvXYB}v*s{0~0!#d@W zZ)*|po$_l7O#7Nbt|J=UzxRnz(1@MEtd3LflPUhqixFkzpSmFkK;8ZXSZk{ma_RprlIZNHN&&bjsk(?`&OOk**qJXntMz04B2xjb-^ z9fYiAbXVNHq2J)8Quq{ny|dLP)1LBITDd2( zVp2b}R)pEbZ7vIz|gQmt}z5>cGMI2(pniG>FagSfd7WwkMlCHe+V zeY|qp+qD}U6+a&c%d8pE?=WTXWIk`jI%8!+?3Zo$UTqkxfB&tjN#k>xVK__h@fj+c z<<6}43C+!E@VH;4%_JX})lgQHSbqCQ^4RhqMA_kH`M@&i(nx_$LHU5#>kOO^g=X2u z?76x=!XKtjE*k#(=%Yq+qt?L!RwA#nq22HujQDS|6d~fv4#E42QaG zj;V{DEyk`RVH{kfEQR7^`feHLTXwz$jaSE$LLK%!D0Uv=lii;Wb&{>iLX(~u`j3-0 z_nwTKr~P$%lysV)+Ax!OAC)P3JSIKmdvn#kA85Lon-$63(ma#!ru4;LmG`p_j#uA1 zDSx_SMIJ{|32R?n?f4GhjuaF(TAm++fhqQb(rF*Vd&cshy4AmiRfNT^PmNu+YgV4n zS^rA+lPaCI|A`-@OaDE=YW!$};n~sgq#XtHf!OIAEb=A2-fGGvw@E~IX&_##V3775!r3N69MsTet-MxcC`>gcXc(bxG4lS zI^4NOBID;Y=djRD&VAdx1O6 zvpQEM!Da1EBH>3&Y~3GgiyO}^U3MByo~GKifA_20{nnoKJ>1W2)@hT zB(E+}TfYTulkW-aqLdXN_Te8jqH(_euI-Udg7Fs+6UTcWT`woZ%Rbr1F!cY(GfIHJ z3=OAcOga&`4%DS`>g6(vq|@AKyeKMlo9O$&R$Px{o2jxh7|Di_F$jY-DV)E7wq7=Y zb-^;V=t4sLoRX<{I%X&Bni>#`i3KcoB8S&jNMBnUE*_)jB>Wh=Oxia_vrw*(u5$=P zP`mT)yME_uJonzK45SD;DU+L2N8jJBoV10g;KxKE-;@U$b*aU1UYy~$_sEw*Q=Nwt z@6|}EmDoz3o}D}tzfAw^xm}}R(zWyW0o4Z%f3FO-XsW~88~lxp(G+}xs~J5Ub-gJm zzwYu0bP7-wWHLP&}6h89GRpUR+U#p(xIB_!d*Y_a$)duusqPl&Ky zcXZ$mRsL2LPApoi8Xx%Kxe&q6M;tGduvp3I+VN&m_F^yZ&HOyYJnvTKefZ&c3;Wh#S0$rl{2H*$^Th1gHHD+Ed$%pdn;6hkV_l>+XN=UWi1b5Ilf~Jl>y4)Sw}YR}R(+8DTngd7(Vj3=VK#|>r^juJ1#?l)`R1aELat~iT@l*6qL&Omt;Ojt~Hs_P9g6|$^t~@bOKz~>JR#P_Cu8=<4#rM zjH@rjBpjo?`5s35F7r^_+n@>;>9igB$7e(-W5&3wBxUzoOQE@hVHbO zMAE0=Hc?oWo(Kn(o4I*Tw)Y!&Ld_-z`V!@--CLuxy!L0Q-r1fmUSN87Z{~6~d1;lA zxY!_DP z-CtsinxlnH+SYxeQ><2bGbgWKdMyKixfV@iy<1FVc*i%X{lJ0cM9g}7oTc<^x4Tm3 z&)FJgalgcXppZnIFwMK_9=T!$rv;D z@85Zhs7o0OjUkiJEVjaHxT`~K^FEKmd@Hhx$a`+sPiSket|E?mU|f0fbtz>i!-e&1 z793SC^b>uPSOb~LNJuBvgLF#%+06*MyH#DZdVtySaR z+=8VzbLIhQ1j0I${p$LZG0zllE?2}UXow;Q3kQ&Y;=(y`J6JA%RAI`CUPA2C0~Io& zRmIL0Q)2nU{CtM)UTQVp3XIt)51{$oFT7*DE;AAXZnIMgSkw8W45{X?FUh4SE^u(NDFs>wD>_F_I&D2c`G6JL8RVOmkD)j`a-cAM$ri|{N2qEfoZ+#Mgw1Un@%RBv1F3HsC*LW9`1Vo0{6 zZc6{;nq|T%K`7ViN%5eeGw8{Rou^5=oL|rV$G7UMmiFy_y1N85;K!?>kiY(uJn#@< z7_ZoyC?G=aH4ct|`B4xLoOD-?k*yoYRZBl=Wj)N%+lcCvU(Go3ES=vcE;xF`p=*1S z`Mee|4jhD%@gl5Hvr{9q`DG)#jm+~;r|hrjno$}u(hJ&Nw$qES9yP2B>Wkk}C?n~| z`51Jtj5kjQU{a{=4^HHc9?x8zmOiqaRfYeJSlwY73tueUb|M!nb#X_i@9qJMXs5lXNKGc3Igxk zEs1Z7CU$urCPqVM_Q=k1RZ2ULUID(2NpSXGzW&QZQT{7+v2;Yh6d?^27S&lkWsD5%}z}`aXzqF_)M} z$+GRg64;{`*VMAxq>76}dHG%@SvAk~LE25>@q`s80D1AcJZV1X7DvOHYI%TvHL3o- zIV$!|Oaok4w^IWPo3}ehRxC5UVzkZ=>}prm6n9MBXmDqVX>#Ll(*b?+SHR*pHo3bq zUT(e}vb7X%pv|0O@9+P33-BnV;H4M7mkTr_?{D83UWgJe`l^!rb)w3y7%e1J%mq;_ zN6xJ-ph4pGO@YCc(pJgO2VeinQP^nx*zN(>HR|(|I17DQN765X0Z_x+GDgBM9`P9s zn{+%vZB49nwEl9p9?0`(cV?d-uXJR2h-9`YUu11-z0a~PkN5-MG&=IAB z=IcpxNz9l)R1v!7cswTvpH7UZobyV zoTe2evLBKsZS?G=?Oj0QTEt%X7>#fQ@4nZE0^rC9o14iY0 zxff>q+_u`G0KaUw!b*quJ(1NgKL6kJiSHH*o)krZjs?A!%�X3cu%S@XyhG5XUH9 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

-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 Gp!^4Z!5QlS literal 0 HcmV?d00001 diff --git a/Homeworks/behavior_design_patterns/template.rb b/Homeworks/behavior_design_patterns/template.rb new file mode 100644 index 0000000..a661282 --- /dev/null +++ b/Homeworks/behavior_design_patterns/template.rb @@ -0,0 +1,93 @@ +class ReportTemplate + def initialize + @title = 'Monthly Report' + @text = ['Sample text 1', 'Sample text 2', 'Sample text 3'] + end + + def output_report + output_start + output_head + output_body_start + @text.each { |line| output_line(line) } + output_body_end + output_end + end + + def output_start + end + + def output_head + output_line(@title) + end + + def output_body_start + end + + def output_line(_line) + raise 'Called abstract method: output_line' + end + + def output_body_end + end + + def output_end + end +end + +class PlainTextReport < ReportTemplate + def output_start + end + + def output_head + puts "**** #{@title} ****" + puts + end + + def output_body_start + end + + def output_line(line) + puts line + end + + def output_body_end + end + + def output_end + end +end + +class HTMLReport < ReportTemplate + def output_start + puts '' + end + + def output_head + puts ' ' + puts " #{@title}" + puts ' ' + end + + def output_body_start + puts '' + end + + def output_line(line) + puts "

#{line}

" + end + + def output_body_end + puts '' + end + + def output_end + puts '' + end +end + + +report = HTMLReport.new +report.output_report + +report = PlainTextReport.new +report.output_report