3tT3pUpSE%+@oYF}->sWIbaHgkaNL*^oRz41{&{_tbbk8h;+LYI
zXtOHy6%DO6s`a)%H-A>wb?ya=`G{DFYl#`bAXJi6;qkka^O1xRzWBtr71Yx!#Vc?a
zJM5$9>*Y^}l;W1;3@AHNls9nA%jbU4kjsGxwK?j>)!(wh5K8u??p?
z-RXPbZt(%Xl1swF1W+z09CYjdaN>C~eEw_Y*0FeBp?iRff#zEO%I#k0+Ve)>ZsK0}
z#v45Y!xiNt3N^X``Uy%SI>>si4yGrr&l74C!YGXqx>y%5J2A%+QnUPdxpujMASban
z@eAFhESF53jDxISuS8EtL=KQ8Og@4K_i#DG)#p9=E0-``_*qn%Lfk;uz?UTaBFaKW
zb(Nwqb;6>wgcb@XDy|skC?vl38S8wP7EYEdebn&`eP8>u`y``j2&K3l9FZl>WqRVn
zyrZR~V~GzL=a{~|%SwiRvrKk)w^WK+%Bi$XDd~T9HcqA)rx9Kr2Q98&tFMFxSjzN$
zqMUd>ZRxl@OYz&WUxnH`uxWKiJc)!Tt~#5#1g}2-;L6)IluEb`099jfxYCs5)!$LIQ&zIbL;3f1Dur)8WtYf
zQrdo9+h1>AM?%C3jntLiK)csMylRS?v=&6iZC3}Q+utdC(_y2hVsYY}43|2oJAPdT?R~r3!!X&AP6io1j*A(B?6+8(Ds_`Ig1wP&Z>zjq`EA
z*xKkz{?5JFLkq_)%FK)t@0?o4%EXJ6zU=HCp()*YEnP=uXYQYOR!S#nb)9@c6?69W
zU;KAxoC=+C=6^RfPWntu?(r_xG?7-OPI(eX7s(-cQL=a_e;$T
zn*k#6|X$kiLuVV4~+mlni(N>cvQ~v|Dd(GR?kLg}K
z_;*jPbR7=27OQmM>E2h9b@2Ju?N{E;Z*__^P>3*kBK1)%;T^9q6gj6?+d(fJ#ryo&%}Al`@&;FFL1ue3})%717C
z4H5iW&_9vlQdLDWz%3_u-
zPTb~JE*93@K2ENG>;NQu#1N#DwTC&akCUUbyO@t8{a+Gd2>Q=74?XQ)A|4Ks^m;04
zw6ZQRYg!?0UT$7`5Ed;htpv=g
zl!up}ho7GdA;IPD>+E6f!{zMG@VAlwX9r^KZV7|BdO%&AY5&+Yw{Y?Fkff*oy>(+5Mle5CQW1;qdTr^YZ*_8=)%kXI4xN>SOJw4}m%%)(qhTBqSv9m-zo;
z{Kw&cDeC=SivPv<{}r{}tzoh*P6&q{p#LQ6AFuz-{6|rO=TF@KwGMwT@?W!vRR&>6
z@cf%G5LP5XQx+nLlu(GO76K!-*k6MV@nl87AB+I>H7sgV8U+5V2$9zELE6)EP|!9c
zpw?ud--(n8%a4R+RxhqHe8Yf-X%M9mN|xnsslLgG&d-+tlBQ{}CD}pLh_oJfYeJ~4
z>}ko_NeeS{KQm)8~#Cpj*mO&}(Pd3XbE*oWrz%--e+;olRdjT2k`BS4?=P
z&N8aS4~q9-kvC)LFG}S^xGYFHEzHb
zLqk*d@o9>9+@BY2ao@zNG-`e~U1=zPx;d&lEp~=qHTw82@b0RckdUy=V_PFWK7Ql)
z*ll=+@i_42hPObS32>~R(m7y
z7bYf()X|A#-{4XRDO3d4?r28V`d#cL4W^~1JCNMnoO8G=wq>Ss8TQF1P_IWvW8%_G
zU)-EKpl1j$MIw#={5fdY=)7K5#u|ZaAJV0UiY2{$xYSuO=fB*Agb9(83%6-&Z_l~E
zzxSQ`sO^7wV2q2;K&XCY70uMY$Q
zQ9gY-aJbk$aipoC;e!alNL%~Evrg~B+y(p^Ybz^AF9kLAM!@ZbVh6C;$k@1YW&U=R
zmo|SPo=UvfEL+HFwV^>Mj#JI*@!`JB@6tK&bR(`uvme#k^#tES$;yf`Pb$cy_vZSP
zg^ZN+B<2anT5?X#@Y8HeQ5+!f_+sA>4+u=G0dVsQ36&(_9`0P_n;ZBbDMZn2+yWGu
zaE$hsyF=^97?hE-zT+{`fcys>razfyIOywVa=T_#*IZJ~92Uq%7E>H7G$${0235}^
zpUgSXP1FL7-t;HXY>te)ij^TDA#rtd?@K_
z5D^v4lnQ$I^xKf)GewkY9*FN1@&j8fcpGmc+mPS(R8+vXKl=9|ygKXX*X~U9DPjq&
zKef27ggD2)?zrjv1@^zYO2VfBaS}5w5OsHVzuk)GfC*t@q-18Y856P-qoR3gD%VFNi)e^60T
z`R~p0`6_i8Lsn3yO9Fs_w{wo|l
zFrj-%^63DCCTkSRXivnp&=Zbbno(|@Io;gcJYFalTd!OvoD`L$(6M!~KVNUwjZBpK
z={!_$Rf#nsk+z^T`0RSJT+{#YAs}-o!_<7|zALmdrtd9xH`LzV0*Sq}w3I`Mcj>2P
zR+#62I&CPEOzszAKjO>#2E2)20crrA`DDR|Yv+}*AFv3HM#vV{{QBqS6VEf`+{
zhRN5zvP0O>)%xPbe*Ea^8M+!sV&I2LCxur`z8?z$e~qdl4s_#>+9{J&Q&^c)mkCXH
z4~HlOtHCO0j3Uc8?CtH>1V4p(7N*re283p+j5%&;o;`bZxAu+rfaDqP%g1t94AeAF
z!K|gFh0{6kVo$%^N=GM+Gb3Nbo&fO1ktE*$8QDqv?76b4rDc)w>~cKo7Pui8%oTDj
zBH?HE6RdX&RFijpqv?OXlgf{q77D@m{rRa9m^GQ@5nxB+>gMM5(tD7UV8icefVT*N
zNPr-8EUel0w1ns`-`~!zOwbUOiviq)o5bB)t1RdM?lM}jEaO|oJ9<9(gjbT)DLPjw
zi2D}+S65Kmd7+7}66ql~J)LD{9=Wi(TD9SU0H1dT@*+6cD3LG#M~~hE{2Q40`AgP7
ziClgO_~_*HG}#7MN?tm&rmpTH*i<>9fK4Oc8fT%(5@l&!p9>2MU@?3_(?>yO
z$w*FSh%McpZ`|!LM~y-p@zd3>u}}2rgxC5D^iWn2B@6KQDAiM1fT&%_e`?php1wkg
zDT$PUz77eR#hgVfmqyA~bt?)M}`LYNgf7hB4WBS#<*l_Omp}
zungL!wGdh^h;>?2T0`#0;n=G1lE1)`vcTg5K6TTO|K*~4`jY-3rWqYfT3cKD3~>s{
zg`Fu?GI*s8)zk>kFfcS>F#b3y@oBcpn}}Oy|^yV&N3Q&PB(B(
z+kBD`b)(v{y}iB7eu_O;(oYCsBnMFmY*wWs0Rz~ioMuSl+f9u*Yg|R*AOIl+#rNIm
zO3OR4XhWe-Og}7>c=JTvBW`bQIMXl52#{uv69Q)+F@);7y1=E%2-BsAYjtd<+LVoh
zLrLY^93*2Q0++(>WbIoE^#&>`sz~<7054?}8yipVif~DEWU}3ZgOa|I7vx(s`NhSI
zpaJThFBKIF8eNuJ+GY{=$@bay1PLLbxk0Z!hX41G9C0>g=7=hzW{a$lI^)j3
z9Qcsk^e26+&s1s)$VlagOZ+`K1x0yBM{ZVjw&Gqo1Z;-#Mcp?NGguLE
zz18`oCr!-qO7J+pmy|$0p0WT@IP6gYEz(46JteB8PV)`pi|u|~WZo@BdE(hwSzCy&
zXBPxw+k|ZK*$h2x3Ah#FGN>Q8#)Paomp3$|rE}`{oNf&N-rI9LUqIY^JIf3FkD-{R
z9scH!581*lCw*}gq7oACz4vCjQBY9QO5G|5gYnB2o7_SfDK!vh**?Nu@6og!<}gfU
zU|_I?=yd8|pW7=1Sz`meXNZfn&&@WgBsy9>+o<}(lLYCS-8Y(?Djmu>gwPWy>Khth
z78dmBsj1Lhv(Vv9O;F(70HP;Zk&VP_9+Eb4+Vhk-U+Kl*=HZzs#uRFTPB4E_(#^hh
zP%Z@W7&WN{NXy8C+@MDrP&;k%5exvBQfeVMx#Hec4bL5>?egTsZ(aGh0}d8M5iJ{^
zQj?Y%7B;pd(c6BogzrgMQDLEA2yKj&m6aXVey^YJ7ZOxPeU|?I{t8#u21K9o0<}h#
z8ikHWWUERc+LsZ&Vj6yatr0K3ku|ln{B)Z=
znYX0
z5#^8ZKtyiK!^vi=et$JPWrd5JP=fsRc(Rj|En5s_WqS|nX`uBIw<_)u+egm`crk;6
zchpr>;#P3RA`rQCIL9OkgG6e+e%%sp-2U3rM_B6hS=74k$ceq6B9#NRh%5NI_)}??
zrP;+%uPwMMIyEKbs5=xx|KxQqA1||9*3u8px6B$7S_B_-pv%d&Z4vfs=pR0OVD1NU
zeIFW{+ya*^~HY
z4E6<|Qb5$|s)c5p>_oaq@=A4<+JvCjYd-~T8^AD>45;Y}NB>)Bn0D$q>01qg@
zTL3-|?o)Cy3Uacilw=f?l+;v@jhd1A88s6F9UUDLEiDb0;W?O*ogEBjW)|dSC--B=%g@itFC_HXb3YCW
zKMwrA#Ldgi&CAFCAL4!J1(4za)&Of*7|Z}nQVc9ojE6x0-J^n-SpQM=e-Sng77!Qn
zKa=7l089)lEKKaj0}}`9KktJ{3cz{>BooAj;*c}zcnMiYvZOtI`LVH2_ZKU~#{2k0
z@6#H^OaAw=k79rr*pE{JqyP*oOdt>&8{BeRLe`Rkz@i$lAF4^=`yTbdviQ-RE
z*GVpOO|c$!3^%o1UcT;vB8?YSE@E7r4EPH0otmlCCe&fP>nkG&`bi%RNl@E~zp3
zJ_lxFB?gpK4n#86B$w+Tnr}D>jAE=5qQO@bho5WIbTbvoITilzjGF-!31#hls+eAS
zbYbSQzKovGfSISAp^x&b1EXtJW)!;wMPL~>$sj3Za$L8O4MBDV!-@yMP$+lJAl@6Hhre;$t@$2)L;O4ywq)~at~leR(IOGog!Lz
zkOoMm0{(`v-6M>#{+ixQOS3~U+I-%^Y|Iwr9VZ4%R`yCr-L>SNu6r*TFp!R!8?f{b
zRSE_<07q&MDO|`0-&7RYX6K_m8VWh%JDm}kCi(p`l2|%(7gg&^1KVNZ4JH#0k5HKI
z-x<`caG6Wo5aAV8H`r3IJ^)^KSzg=>AvW>j3HII6_N+-LeGs+~fKNj0?i*IVeSe8c
z3~vW{!Q#(&Vx-A~wADGd80+Mc5%BiX_mKmy^A5^_WxgtVqL$6ZWpcqMMI7|DXGYN_
z@YMokNoFO-REW%l;okkzMt2mQ%_>;Mqmt?5>S|-XA<$zGUD4(}G{slf$l;uA?w)&Z
zg`;)Ok&q-nSjuxjeT4me9Q)(>q9ZsIc5QeyMQG})fN;wKaC@q5fJuml9H#uZXEXmM
zZDS{9MKgiz?zx1Pt2`uS9sq(+WoVo+8lZa3-i6x3_cLyzoQq$?U}bW?`b(XVc0%NQ
zYPLQg6*YQ33T(f*5Z#yR%F0okt+NoIrJLWll%mb3x1FI@x-|lD9S3F)X5dIS$sW(2
zTUa1XQmXVL^rCRvGgA77hnz|u06X^j%7RzasJTq8>T8t_V%y~JEmJMNri1MrsUwF(
zcrt_jb=Bt!t7|OSaZ#YB<(wAg{|Ce4CaTef|N1b_70;f5*Xb(k>Kq_=&G-PYHh|3V
z?HOl96oS^nSY(6iSN5s=Xy2VVT9ahYO0x(uZqr=d;#GwN%dYE0Ww$ti@u26;mwneq
zmKGi)E>Z%747XuaWh+n43kDCu#67Cd@4|XJeTOWfgsSW@S$#fC$)ytaT~;lrwXAIp
zn%P^KD#Qb^==0Yn{Aks4@I8C8-(~E9F*Ou!8aP&1{~!mH*K2Zkg$t@--8frf(8M0U
z(LZs?PZWQU4}y|S5^X<;mkE$edlcZ)U+O!Q_K!N;EOk}B=0Y9n0iryWj>bcx^R^}6
z^{>y4TzE>Q(^1)5qab$GXvp4p5j*!vqVGf!3|1^q3<=uLs?G*(S$;O(l$oQluyEwRn6bBp7l@c`23%I}ckq6P{nS6=fOR9j#u
z4_=B-B51H^nm!@3XNGJgd$t}Hx-r|^&nJ)B)wPNjg_obdS47@C7mJFkb@c8-o%h;L
zLdc6W?y5gjJlb1!OBeyB61w1W@Fra$LJJ-iSZ$1#%tE!Y8O-;z+Kcw(G4FnD2#u_a
zuqAg-@IKF1Q@9pc6Nq6xF?srs-A9)}a$wjf$b%4y0a%0|LOmUQunG?uCNLN;YJ4<(
zG{eXJ)K?>@tVrf{>y?NJaYa=w_S0=8og~lg|k_R4bD4Y=^WR8l}X8^{obm|pRYV}?QO`DvUIJB
z48w2|KcbvkgEK!u>w|2aZtcAI)F2%3zqiQZ3S;=J;tzoq|KH|rZi2YYn6eP&>VQ~G
zJcg4+JH!#y1+9s(77yML9a6h!q;<2cy*4H#7tECvpN54dWp}X%ZmFrpR1tcbEi1=5
zpxhkAE*V((xm?B$4!;3vID@`dhU(QHDtFY(S^}ea(&^=u4}HeCo7ceBuM3tm+_qJle3n
zxR#32))gdF*!TBPI_175&)Lu4cbv!66}5aghsp^AQceK++-xD~4)yu(jbbJxrtyr=
z9{{xhPtJ~xi~?QC-!@|^rDd0rV+wYzR({ctB*U1wyE$*I{yNp*?D0-};OtTcS=6Ns
zC8H{YQgW*4w*POQ%|NDg=KYcgm9=p^+q;@)2!1k_tD~-V7#=%gW@Br7EI$
zat1`-=;ODyWtSTRhh^Wz6s)W{A1`7|-7f{8xk^JS%Il82f1b|SrK+JZHAe0x!vBpg
zKZC>ld2;~qB>E8{cJR>Qo*#;VDdr0WF9)06JNgZ-#tf1R5JUb_X!Usc=8*CgBssn4
zf*YfXtVYFBoQt?8Z5^*B{U?nrTa>&+EVAEjzT-z{en|?B5I|0-ergB
z#-;+TkBLdc^o60rL04N%=SiU*_U}76mGtZmFUX*51-^;fEa0@l{J&qO>q^{TjR!~N
zE|)f@R6{oogX-$+->Gxs@qN_6_tMYOW=#>0w*^4^dg%$u)XkD5?ppWYOl4>E(tXkH
zj^uMlm@iTFoJXvmjInN61`D$Yaaeel=5mNr4h782UraKY3OIVGQuJH+`}x8@bkh|~
zj9ozu!T3W+@W?Q%Yo^7>caP`2I;>0fGZqAoLn_tEKluS*s|WIo#_Bp*YJDoDUcxwU
zz1wjyG<(r58G^MavgC=~=B+}HCTFbO;#l-CY1dLdy0UCk>9wA0>OfMJ65k&Yc5Env7|?eY$^_R
znXW_Hqt>r6-V9nA81c3sfO_7~aga>_66;iHE;&Nns_e=rV8!?nVO1V-kjEB$jGS
zD^4@64ZPWU(>Y|d+=>*gzJzL(1?3wc|AtpJ6WXh=#Zz-oo6guntcN|;W
zvQb0|5Ie^VhVDgV!9W;Y$bv$L%jME-7caNKxTK??IKy6kVjv~Wo2?Wi+*i_EsX0|{#3qJ58VBPXYm_ALmN>Zje94%30R?I`IlZ^m{%%7m$Bf&yJ)a<6UnzE+
zNF>%z*$~98+ERM-&RxB8x21#ckaV-to%Q5EdAqp9WG`jzMGWlycdN(`gBa+%6ra9r
zxJ&o|?U6|T88?>nu#@yj{1r}Xpkp3yfW?u8QI1JTvzYJ7u!`P`a&DXP|Bi`Eg{gW>
zpkjcyu7mfN
zQIgKzoGhj~HXHWn9pA{@=0uyH9#;<@#N?$VYSpB%yU2d_L$-xxU+um+n$aAd?lq3`
z29aOpPVh^={=93ZVT|G99XF2w`UZgXj^M76URJ#j8>O)@)Al5xe}ax_Tk`JyGCikt
z1OK3(Lx(9~)seeqt(SOm-
zn5oi2Dmhjx%UUed*SAx_?$wJ2++SnenxM?GcsB?~|+A*Sz)Rn4wEF5v*9`d#fN1=iu2%zMYr6Bs-{_J+c1gUco}2gyNQI
zBQ1gi_Jil=u}e-WLceubFGtx+iM3p3;jGV1952X!t31O`#HU%O#*5NCym9wUwYBYe
z07z$IRL{nqU`?Yd1dIJTeUEBqcaP?cR6#?n__`R0QC6N}#d-Nja~BLIGY7;TKODIT
znbZB7ZZcDG#G@R&$iy!EX5$z1wKp`hdWyfs(QS*1&cFRQvv@|i
zluko`7^RAeCv2x4Ct3;5-@eaI8EQm#U_U!QRQB{3qu=JFv8CR1@%w1thJxeCRhrUs
zrcF*m&>Rg?`j5u>IUn5;l0%r2xonUow>1+**C5@yy3QT0<8X#6Q6SI=MkRZtG1)Ff
zq%4%a5p-YbD0*M?nZx};CXq}bU7xada&<g$qfqK48u!lrvmYW;Mk`iNeXl{t)c
z(S}V`(uX{GsRM6zZrNGhxxhE7JZD#CJdl){CLXPLQ;X6MM@XOW$i
zJgpYx1*RRf{C=9ASx(BSrbG6~xYcXSQ4af_FJHX*CR^t|6JYVRd#r@jeSsB!^PNkK
z)^RXXjD)A<@0mB%vU)q8F7w_r4b5>;ZY@nIt#zc@sDM+P$ql+f(XT$Oqo#vmkL^JR
zL=^e>d_oQ2k;8Y8gf`0%30D^bRA_^>e)u@+VAFPwEXRs~1^-ZGenH}@d=+SfIu?r!
zo?3C^CA={eh*7FCu^df(w>b%a+!+oK)tjrzP$>!BsB8F__pr#*RK@bztW6nBTK4Vn6B=YKhe!X&8
zU>Cp3Sd5ao2|>dfpL_yh%}eD{j2cYx7Y|n5qv8x~jc}%0o9h`5rl>33pIxe3F|#y0
z*^RTO0XGN`hk+gdrju>Dk2_r}pGCO9u+7s6VBf0a26gpif!?O2gtzFYXFyDPe#w`N
z>p}|T;~*pWFY_}+G{+u^L%>am4fp}T-qu?H<
zJO=OgxO}_UG2=<*=)pd
zXL=)mArY?}(Ykl`Bw)OkfU~a5>;=iV+uX#_>x9_peg3c#M0s5v+kEPGJRBP#mRyz@
z{Sf4f2$qE2*TSDmk1!pSm~YH+n@Fex?&1U6ngP(J^)SM7TzAZo=?FNbDxtQ;vnExY#
zHB=3bT&Ayz7+_bxT1h_3e>ZnACgc5~mauYBt$#J;a|l+UmT+r@gr?%O75cRR^>dNo
z>2&;fSohMqE+y48v7?q8b0Dr5i4Th=QCH$k?dbY@(W}2k-wxas)K)i~O;(xm{uzEa
z%#N>Yy3Cp2!&yygVhl1dyu5h@nvvDnF?x~I>Q*K)Js;1S>O-ILwSVHia$U?VQ1#gsq&
zs{V?!uC5@55%pwJQb8k|mo+0wk~*2aWSI}IcZ`z`VRsjK`3jNO7j@Ng(S74`LUL&wtxWk1=k6a|#}?7;M1O3;QdM9j
z<38vGY-K-WCeBVeA0uRk19+=nxSdQD_ASbH3rWABZ+9*zKI=b?yh$$
zz;ZK-bn+{}J}}oAm1kmMxtZY#&-ht2{Q$5z@j9(sdR?(B3X{n!NU%os>H?wWx3s9R
zg2qwB7MIHvV?!X#2(i08bU}riJ|M2DI~$JVJy?h{*l+s*hZLG$i&T)mg
zjew7o`XJ=7tk9!{PJiJa*gpg#F@OE-cL&Ew@M~P>n7k!4&fP9Dls2&0*6XR@E5kJT
ztyyEY;Xb9JII`WCmhp{UW-a#7zBN^|f@-NJ?hfo2`yS$w^bc4kv
z#v`ms;t|R&Q$Kf(Ox26j-p|Hm8{$q+V5APLFtxImKY={}_QQkBXl1H|cz4Gnt*tGL<49Hahgot>?>$R7`Bv_BaJ*23l>eX5zrvkGoU^%TZF3?Z^Y8kGT+!@0Kp_)EevF!EVCRWs;qfiuNM@gI{Y
zzoXDIE;TStw&Cvw=ew8DZngSG+Q^puf)+jt(WLJsp@29J53zAPGG;B|wwVic5A7cw
zwx(|h>Uik70Si`f0wL?%KPK`gjOTT{PY_rp{&-4LuXb6nIB*fe!5?<-X{h)X)yMr&
zfM;1iXe4z8K<=7xz1~2X*mgcU~V}`lB9%P`h@8_-bC7`MMil21W1`_!V
zNd7fCq3Bq<^8?{%;7jx5B65PRDVo{S|JGkRVxQjcmruf*A3`jlGg~=&Ny
zgh&bO8175s<8TOiAwTSPEU6poTKxa|xUV;!*TCp(aSwb*MIxt^>SJ~
z8vSEniAfa3x>Z+1*io(wGOrur<(0{y$KXf~6olOR0_I84M=bV=i{^Yj7Kmy2Sg-h|
z^1$4lTtK)Q5tcbX4Dm+qp8d5A8w5c@SNDj2iWX4sh9H9_mccjAG?sQB%{@=hwNa!?KMp
zs8j6q_JqG+_fF)V$C1vFi&b`K&D1S8xK=V8l8uulR{p67jF7YoIpxx;2%Oe*m~Y+e
zSY%BfCeAyuq2V{#yH;#pbKc}7ye%~@h^V5o9fY1Zkci}1N
zWwGj}-tInaKiBo8SGn%)&PbVdXl~&YrrDL40>lJrmDLkXNlpr$n92_rjg?SdV*6#=
zi06srF>^%T?U8@n`;Cdn!g8jwTW!cAe+Ko_k_s<%{E
zZH>^tX77dBJ*X8v5d8oczbl%v5KxXc-s0t{BM2s|B8(ja0ak~YClfrS48v=gNraGk>65qq09JDo}n&CdPr6LQNzEP$#*wd
ztMM*VRoGcXvl)38iI{SN>_Ee<{MiWeaQ^YsS~-7fgbY4(QQ50-=8JNxJBmV4Bg)|2
z4Ya@5NxExDt%tDC>a<`Ydve;?q}XUz^Z}rR;uSW3ggzv6Y_&apBh<4c-v)(7r9yS-
zyhd{iZ#O(Xm&3o_9Fpy)|MH9gH_~;Q
zgD$a^Y_&jRC@T+$1JHuRZvSCwF)lSLpNihXHH1R|nIxd?;{74*trrpNtk#!^OQi8-
z_pqP8Rj(Z@`K~|g%?30L_NC$tuRH+6E4v$irSAvx3#W06&(BLo42wyB
z6|44tZ|3}-+%J8*YCvUwII&g8gMOA@%V49DSkvHlb!02tSG+-HPl$Z1c)^3!*ZaHwrk3WCIL;@mw5
zM|nlM{2#|h+TvFqrN&&o2S7+1k-Hq(OtSR!v{?A8hxT6UCWBA1ihH{$m+Z`Ygybn+
zTgfe~u*mkHpSk~P-h7%Z7wFGnr}YoPaJ}7P+8EhWN+9-y1S4(7idC@
zt+S98_WsM?h!1i#v++8*9^Cml9Yki~MVr`aZ`OKT)^q<@H1wXRR-LdkfS_XLjo_xZwP+n&Cv%kM-g-1Ke)zgdno1513xe~t
z=YUEC0l~(1(4a#f0pf*5^IvoUAd<^0f>g5%YQj7c|4rp?u`i}|r9oUkqF0eIgz~9tR*}>9M3Gvb)F8z>PFOgCRo3VoU?H
zh4EZk=l%lU&2;{1X{;l6e#8g_zj!}qfuyw_vrqzA3&wZ$Fe~a}?l^P|l6b=BO
z447RpRL6J#L^i{^3$7hQ6dy54ySrysWYR*)5b2I(y8cnhfhkJx+BaH-jaYK7u8NuR
zyXu^5)RWrk>E^e81l9saidbigHIJ8@cBuHP5rBxwpy)VTAn_zxSB835q}HtMpJG=n
zf(=Agh7ZERr_LRH0LV&&>mr34{XCwF6FOq+J3P9hZ>(A?Ek-s1tt;Jsx$S%ZTHqEj
zF8SyzX-z^2-4{7m8X9bX#bqyYsPk9{BgKTTRFQ`b@VKGFMQd)-MwKYqK)TQe0EOj@
zNcj<1(@K+o42_1!gbOYs~o6bYcsqpWW>e%
zdf{Fk=tgD!)olJ{6qHTl7+dY7;G1P`wIKDZ&%n92CNPj9_=FW
z__ei~htc_8{Lpm5gNVuPXBK$_%&BsM!yGcx2VBEd$1#2Oe8#L|fC8TbAXKWjcrVC+
zZQ#4cy3(0$87HoyakQ1^)iifpmT2Xi>FF5TP=LrVvXA_{X*@bzdcVNcSA_O=m&2;r
zcVp@9pqtOimDEQ=Y8Q-ImCq^C87~twsJpE9sl!Z(f0vY%Ob9Ps@DAIDW7fPaAP6>LRqPmv?j3fs@~_`m)eNzmGDGN_
zrf4wtf^D%_36flhM5#aQA3f9OJ{Bc>@~0^5VkZA7
z+e|@Fh>D#jELcTKA%pscIVI)}XZUBiF9545x@AHFBt$CC41Z36=dbFfbx+Z5q^V2a
zpeYE!wB?!{>@kUSnl*oJJ0JSI#M_W<;XlX{CsL+AxvkR4-NV!6=F;#7fSlu)qSB7E
zw7biX^2JtwKWkKnt;;BGBQ8TXd%XldHtNaNsQSROx3G-KQiSZvLf7y8OX&a-ZmF#E
zdb0!K)-YEg*A^*FTyC71+pC0-*WH(c>1Pez=yRZ(rFNO}`E^L5LDBL@HAMw|Jt7M5Uo+zR`T3syQLxkoYI=NOdy&r)gXWBtN3xt|o
zM<4g=a_G-gGV=Cugej@*6XIrk_p|xomDLAWPM{tyEO%Sv$_Y!F;a>hQ3~G1B!FPt0
zy=a4ZCuMhc+b8V1w?G<7<8E&A=j(H-_*k0NU|WWcOJKDASiVDA;1WI+9YR*EB$^$V
znAcZ4WTG51f0Su$cY`DhLLiM$xo>
z56QXry+htpl1UL2S-EE#TX=M>n7Ay>KdgT`g~zbd8mBVKMRoslfY!fXLvx{(nj^UR
zPL0PnrOQSSL*ht}#WixmKcpDg%RP@0g7oxnF7fwuTOjYBxyy00Br7BqLRYuRucbXc
z@8)vF$<%^uAoI47CuZ%E9;BYQ;14}a!P(8J5b|Z&A?Hs6dgG3W0kkxw8d8Zw(yDXU
z4QR}iap)?|X%+#HGr`Y%ECl&K6d@sJchdJVy}W5RENwvN|$=KaS8WLt-GxM$Uo2q(^hkE)|jauqCP(^ar&rNW*#CVM`09LdSv23}{_`b{!NX&$YZocF>@{vcJ}fN&Nbb<@
zo}yih7ZiW|4;~pW5*Kh|aM^h4I2|Poj$~Xcl9p2r592l*vHWCU&IQ)~i39E9K=DXk
z-X|CkYLPeeFC7YXKKbt1%hu(t+Ay-^b
z-pf~Z@*)i3Por-TeT_j4gX!kXL^$)B=%0xQ&K4Q{-ROMrm+9rTww6f
z&wytWM057H$J7MVKLcg89Nv_Au||dZh{cVFB_r+14V?uZ03(J3Ex30SrhANpQ_IBy
z5Us^f#4ub2zi#vRve<>Q6=6m|<;5-%$8h$yD%ePo9fO2?uZNMjVPX2y9aqgUpmwHQ
Q)9}Bs)BnG(dLDlNKU{=zJ^%m!
literal 0
HcmV?d00001
diff --git a/week8/week8/ContentView.swift b/week8/week8/ContentView.swift
new file mode 100644
index 0000000..8164462
--- /dev/null
+++ b/week8/week8/ContentView.swift
@@ -0,0 +1,302 @@
+//
+// ContentView.swift
+// week8
+//
+// Created by ๋ฐํ์ on 2023/11/28.
+//
+
+import SwiftUI
+
+class TextUpdater: ObservableObject {
+ @Published var price = 0
+ @Published var additionalPrice = 0
+}
+
+
+struct MyTabBarView: View {
+ @ObservedObject var textUpdater: TextUpdater
+ @State var isPresented = false
+
+ func formatNumber(_ value: Int) -> String {
+ let numberFormatter = NumberFormatter()
+ numberFormatter.numberStyle = .decimal
+ return numberFormatter.string(from: NSNumber(value: value)) ?? ""
+ }
+
+ var body: some View {
+ HStack {
+ VStack(alignment: .leading) {
+ HStack {
+ Text("๋ฐฐ๋ฌ์ต์์ฃผ๋ฌธ๊ธ์ก").foregroundColor(Color.gray).font(.system(size: 15))
+ Text("")
+ }
+ HStack {
+ Text("17,000์")
+ Text("")
+ }
+ }.padding()
+ Button(action: {
+ self.isPresented.toggle()
+ }) {
+ Text("\(formatNumber(textUpdater.price + textUpdater.additionalPrice))์ ๋ด๊ธฐ")
+ .frame(maxWidth: .infinity, maxHeight: 60)
+ .foregroundColor(Color.white)
+ .font(.headline).bold()
+ }.background(RoundedRectangle(cornerRadius: 10, style: .continuous)
+ .fill(Color(UIColor(hex: 0x48D1CC))))
+ .fullScreenCover(isPresented: $isPresented) {
+ NextView(price: textUpdater.price + textUpdater.additionalPrice)
+ }
+ .padding()
+ }
+ }
+}
+
+
+struct StoreView: View {
+
+ let textUpdater = TextUpdater()
+
+ @State private var isMediumSelected = false
+ @State private var isLargeSelected = false
+ @State private var isDoughSelected = false
+ @State private var isToppingSelected = false
+
+ var body: some View {
+
+ List() {
+ Image("pizza").resizable()
+ .frame(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.width * 9 / 16)
+ VStack {
+ HStack {
+ Image("hot").resizable().frame(width: 30, height: 30)
+ Text("[์ฌ์ฃผ๋ฌธ1์] ๋ฐ์น๋ถ๊ณ ๊ธฐํผ์").font(.title3).bold()
+ Spacer()
+ }
+ Text("๋ฐ์น ์ตํ ๋ถ๊ณ ๊ธฐ์ ํ๋ฏธ๋ฅผ ์
์ ๊ฐ๋ ๋๋ ์ ์๋ ์๊ฐ์ ๋นต์ ๋ช
ํฌํผ์์ ์ผ์ฌ์").foregroundColor(Color.gray)
+ HStack {
+ Text(" ")
+ Text("์์์ฑ๋ถ ๋ฐ ์๋ ๋ฅด๊ธฐ ์ฑ๋ถ ํ์ ๋ณด๊ธฐ")
+ .font(.system(size: 10))
+ .padding(3)
+ .background(Color(.systemGray6))
+ .cornerRadius(5)
+ Spacer()
+ }
+ }.listRowSeparator(.hidden, edges: .top)
+ VStack {
+ HStack {
+ Text("๊ฐ๊ฒฉ").font(.title3).bold()
+ Spacer()
+ Text("ํ์")
+ .padding(.horizontal, 7)
+ .padding(.vertical, 3)
+ .foregroundColor(Color.blue).background(Color.blue.opacity(0.2)).cornerRadius(10)
+ }
+ Text("")
+ Text("")
+ HStack {
+ Button(action: {
+ if isLargeSelected {
+ textUpdater.price -= 5000
+ isLargeSelected = false
+ isMediumSelected = true
+ } else {
+ if isMediumSelected {
+ textUpdater.price -= 20000
+ isMediumSelected = false
+ }
+ else {
+ textUpdater.price += 20000
+ isMediumSelected = true
+ }
+ }
+ }) {
+ Image(systemName: isMediumSelected ? "circle.fill" : "circle")
+ }.buttonStyle(PlainButtonStyle())
+ Text("M")
+ Spacer()
+ Text("20,000์")
+ }
+ Text("")
+ Text("")
+ HStack {
+ Button(action: {
+ if isMediumSelected {
+ textUpdater.price += 5000
+ isMediumSelected = false
+ isLargeSelected = true
+ } else {
+ if isLargeSelected {
+ textUpdater.price -= 25000
+ isLargeSelected = false
+ }
+ else {
+ textUpdater.price += 25000
+ isLargeSelected = true
+ }
+ }
+ }) {
+ Image(systemName: isLargeSelected ? "circle.fill" : "circle")
+ }
+ Text("L")
+ Spacer()
+ Text("25,000์")
+ }
+ Text("")
+ }
+ VStack {
+ HStack {
+ Text("๋์ฐ๋ณ๊ฒฝ").font(.title3).bold()
+ Spacer()
+ Text("์ ํ")
+ .foregroundColor(Color(.darkGray))
+ .padding(.horizontal, 7)
+ .padding(.vertical, 3)
+ .background(Color.gray.opacity(0.2))
+ .cornerRadius(10)
+ }
+ HStack {
+ Text("์ต๋ 1๊ฐ ์ ํ").foregroundColor(Color(.darkGray)).font(.system(size: 15))
+ Spacer()
+ }
+ Text("")
+ Text("")
+ HStack {
+ Button(action: {
+ if isDoughSelected {
+ isDoughSelected = false
+ textUpdater.additionalPrice -= 4500
+ }
+ else {
+ isDoughSelected = true
+ textUpdater.additionalPrice += 4500
+ }
+ }) {
+ Image(systemName: isDoughSelected ? "square.fill" : "square")
+ }.buttonStyle(PlainButtonStyle())
+ Text("ํฌ๋ฆผ๋ฆฌ์น๊ณจ๋ ํฌ๋ฌ์คํธ")
+ Spacer()
+ Text("+4,500์")
+ }
+ Text("")
+ }
+ VStack {
+ HStack {
+ Text("ํ ํ์ถ๊ฐ").font(.title3).bold()
+ Spacer()
+ Text("์ ํ")
+ .foregroundColor(Color(.darkGray))
+ .padding(.horizontal, 7)
+ .padding(.vertical, 3)
+ .background(Color.gray.opacity(0.2))
+ .cornerRadius(10)
+ }
+ HStack {
+ Text("์ต๋ 1๊ฐ ์ ํ").foregroundColor(Color(.darkGray)).font(.system(size: 15))
+ Spacer()
+ }
+ Text("")
+ Text("")
+ HStack {
+ Button(action: {
+ if isToppingSelected {
+ isToppingSelected = false
+ textUpdater.additionalPrice -= 700
+ }
+ else {
+ isToppingSelected = true
+ textUpdater.additionalPrice += 700
+ }
+ }) {
+ Image(systemName: isToppingSelected ? "square.fill" : "square")
+ }.buttonStyle(PlainButtonStyle())
+ Text("์ฅ์์")
+ Spacer()
+ Text("+700์")
+ }
+ Text("")
+ }
+ }.listStyle(.plain)
+ .edgesIgnoringSafeArea(.top)
+ .listRowBackground(
+ RoundedRectangle(cornerRadius: 10)
+ .stroke(Color.red, lineWidth: 2)
+ )
+ MyTabBarView(textUpdater: textUpdater)
+ }
+}
+
+struct ContentView: View {
+
+ init() {
+ UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)
+ UINavigationBar.appearance().shadowImage = UIImage()
+ }
+
+ var body: some View {
+ NavigationView {
+ VStack{
+ StoreView()
+ .edgesIgnoringSafeArea(.top)
+ .navigationBarItems(
+ leading:
+ HStack {
+ Image(systemName: "arrow.left")
+ .foregroundColor(.black)
+ .padding(.leading, 5)
+ },
+ trailing:
+ HStack {
+ Image(systemName: "house.fill")
+ Image(systemName: "square.and.arrow.up.fill")
+ Image(systemName: "cart.fill")
+ }
+ ).accentColor(.black)
+
+ }
+
+ }
+ }
+}
+
+struct NextView: View {
+ @Environment(\.dismiss) private var dismiss
+
+ let price: Int
+
+ init(price: Int) {
+ self.price = price
+ }
+
+ func formatNumber(_ value: Int) -> String {
+ let numberFormatter = NumberFormatter()
+ numberFormatter.numberStyle = .decimal
+ return numberFormatter.string(from: NSNumber(value: value)) ?? ""
+ }
+
+ var body: some View {
+ Text(formatNumber(price)).onTapGesture {
+ dismiss()
+ }
+ }
+}
+
+extension UIColor {
+ convenience init(hex: Int, alpha: CGFloat = 1.0) {
+ self.init(
+ red: CGFloat((hex >> 16) & 0xFF) / 255.0,
+ green: CGFloat((hex >> 8) & 0xFF) / 255.0,
+ blue: CGFloat(hex & 0xFF) / 255.0,
+ alpha: alpha
+ )
+ }
+}
+
+struct ContentView_Previews: PreviewProvider {
+ static var previews: some View {
+ ContentView()
+ }
+}
+
+
diff --git a/week8/week8/Preview Content/Preview Assets.xcassets/Contents.json b/week8/week8/Preview Content/Preview Assets.xcassets/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/week8/week8/Preview Content/Preview Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/week8/week8/week8App.swift b/week8/week8/week8App.swift
new file mode 100644
index 0000000..034f0ec
--- /dev/null
+++ b/week8/week8/week8App.swift
@@ -0,0 +1,17 @@
+//
+// week8App.swift
+// week8
+//
+// Created by ๋ฐํ์ on 2023/11/28.
+//
+
+import SwiftUI
+
+@main
+struct week8App: App {
+ var body: some Scene {
+ WindowGroup {
+ ContentView()
+ }
+ }
+}