From 59693aebd69bb44149fe1864611e488600395b87 Mon Sep 17 00:00:00 2001 From: xinyuleslieliao Date: Fri, 30 Oct 2026 18:40:22 -0400 Subject: [PATCH] assignment-1 with .md, logical model and .sq --- .../assignments/DC_Cohort/Assignment1.md | 16 ++- .../assignments/DC_Cohort/assignment1.sql | 102 +++++++++++------- .../DC_Cohort/logical_datamodel_XL.png | Bin 0 -> 26753 bytes 3 files changed, 80 insertions(+), 38 deletions(-) create mode 100644 02_activities/assignments/DC_Cohort/logical_datamodel_XL.png diff --git a/02_activities/assignments/DC_Cohort/Assignment1.md b/02_activities/assignments/DC_Cohort/Assignment1.md index d5ff55ce4..82243b7be 100644 --- a/02_activities/assignments/DC_Cohort/Assignment1.md +++ b/02_activities/assignments/DC_Cohort/Assignment1.md @@ -206,8 +206,20 @@ Link if you encounter a paywall: https://archive.is/srKHV or https://web.archive **What values systems are embedded in databases and data systems you encounter in your day-to-day life?** Consider, for example, concepts of fariness, inequality, social structures, marginalization, intersection of technology and society, etc. - - ``` Your thoughts... ``` +China's national ID (身份证 shenfenzheng) and household registration (户口 hukou). Similar to what I have read about the database of Pakistan, I think these systems reflect certain heteronormative assumptions about gender and family structures. + +First, the official gender classification recorded on Chinese national IDs is binary — either male or female. This excludes people who identify as non-binary, as there is no option that accurately represents their gender identity. +Consequently, non-binary individuals may feel marginalized or invisible within the legal system, since their identities cannot be adequately represented in official records. +What I find particularly interesting is that this binary classification is treated as a seemingly natural and objective way of categorizing people, even though it reflects particular social understandings of gender. + +Meanwhile, because same-sex marriage is not legally recognized in mainland China, same-sex couples cannot register as married partners. This can create significant difficulties when dealing with legal and administrative matters. +For instance, if one partner experiences a medical emergency and cannot make decisions independently, the other partner is not automatically recognized as their legal spouse or next of kin. +Same-sex couples do not automatically receive the same legal recognition as married heterosexual couples. + +Furthermore, even if same-sex partners raise children together, both partners may not be legally recognized as the children's parents in the household registration system. +In particular, a non-biological parent may face difficulties establishing a legally recognized parental relationship, despite having actively participated in raising the child. +This can create complications in matters involving guardianship, inheritance, and other parental responsibilities involved in schooling and children's education. + diff --git a/02_activities/assignments/DC_Cohort/assignment1.sql b/02_activities/assignments/DC_Cohort/assignment1.sql index a80923591..058a96d24 100644 --- a/02_activities/assignments/DC_Cohort/assignment1.sql +++ b/02_activities/assignments/DC_Cohort/assignment1.sql @@ -6,7 +6,7 @@ --SELECT /* 1. Write a query that returns everything in the customer table. */ --QUERY 1 - +SELECT * FROM customer ; @@ -17,9 +17,10 @@ sorted by customer_last_name, then customer_first_ name. */ --QUERY 2 - - - +SELECT * +FROM customer +ORDER BY customer_last_name, customer_first_name +LIMIT 10; --END QUERY @@ -27,9 +28,10 @@ sorted by customer_last_name, then customer_first_ name. */ /* 1. Write a query that returns all customer purchases of product IDs 4 and 9. Limit to 25 rows of output. */ --QUERY 3 - - - +SELECT * +FROM customer_purchases +WHERE product_id = 4 OR product_id = 9 +LIMIT 25; --END QUERY @@ -42,10 +44,10 @@ filtered by customer IDs between 8 and 10 (inclusive) using either: Limit to 25 rows of output. */ --QUERY 4 - - - - +SELECT *, quantity * cost_per_quantity AS price +FROM customer_purchases +WHERE customer_id BETWEEN 8 AND 10 +LIMIT 25; --END QUERY @@ -55,9 +57,12 @@ Using the product table, write a query that outputs the product_id and product_n columns and add a column called prod_qty_type_condensed that displays the word “unit” if the product_qty_type is “unit,” and otherwise displays the word “bulk.” */ --QUERY 5 - - - +SELECT product_id, product_name, + CASE + WHEN product_qty_type = 'unit' THEN 'unit' + ELSE 'bulk' + END AS prod_qty_type_condensed +FROM product; --END QUERY @@ -67,8 +72,16 @@ add a column to the previous query called pepper_flag that outputs a 1 if the pr contains the word “pepper” (regardless of capitalization), and otherwise outputs 0. */ --QUERY 6 - - +SELECT product_id, product_name, + CASE + WHEN product_qty_type = 'unit' THEN 'unit' + ELSE 'bulk' + END AS prod_qty_type_condensed, + CASE + WHEN product_name LIKE '%pepper%' THEN 1 + ELSE 0 + END AS pepper_flag +FROM product; --END QUERY @@ -78,9 +91,12 @@ contains the word “pepper” (regardless of capitalization), and otherwise out vendor_id field they both have in common, and sorts the result by market_date, then vendor_name. Limit to 24 rows of output. */ --QUERY 7 - - - +SELECT * +FROM vendor AS v +INNER JOIN vendor_booth_assignments AS vba +ON v.vendor_id = vba.vendor_id +ORDER BY market_date, vendor_name +LIMIT 24; --END QUERY @@ -92,9 +108,10 @@ Limit to 24 rows of output. */ /* 1. Write a query that determines how many times each vendor has rented a booth at the farmer’s market by counting the vendor booth assignments per vendor_id. */ --QUERY 8 - - - +SELECT vendor_id, + SUM (booth_number) AS vendor_renting_times +FROM vendor_booth_assignments +GROUP BY vendor_id; --END QUERY @@ -106,8 +123,13 @@ of customers for them to give stickers to, sorted by last name, then first name. HINT: This query requires you to join two tables, use an aggregate function, and use the HAVING keyword. */ --QUERY 9 - - +SELECT cp.customer_id, cp.quantity, cp.cost_per_quantity, c.customer_id, c.customer_first_name, c.customer_last_name, + SUM(cp.quantity * cp.cost_per_quantity) AS total_purchase +FROM customer_purchases AS cp +INNER JOIN customer AS c +ON cp.customer_id = c.customer_id +GROUP BY c.customer_id +HAVING total_purchase > 2000; --END QUERY @@ -124,9 +146,12 @@ When inserting the new vendor, you need to appropriately align the columns to be VALUES(col1,col2,col3,col4,col5) */ --QUERY 10 +CREATE TEMP TABLE new_vendor AS +SELECT * +FROM vendor; - - +INSERT INTO new_vendor (vendor_id, vendor_name, vendor_type, vendor_owner_first_name, vendor_owner_last_name) +VALUES (10, 'Thomass Superfood Store', 'Fresh Focused', 'Thomas', 'Rosenthal' ) --END QUERY @@ -134,14 +159,14 @@ VALUES(col1,col2,col3,col4,col5) -- Date /*1. Get the customer_id, month, and year (in separate columns) of every purchase in the customer_purchases table. -HINT: you might need to search for strfrtime modifers sqlite on the web to know what the modifers for month +HINT: you might need to search for strfrtime modifiers sqlite on the web to know what the modifiers for month and year are! Limit to 25 rows of output. */ --QUERY 11 - - - - +SELECT customer_id, + STRFTIME('%m', market_date) AS month, + STRFTIME('%Y', market_date) AS year +FROM customer_purchases; --END QUERY @@ -152,8 +177,13 @@ HINTS: you will need to AGGREGATE, GROUP BY, and filter... but remember, STRFTIME returns a STRING for your WHERE statement... AND be sure you remove the LIMIT from the previous query before aggregating!! */ --QUERY 12 - - - - ---END QUERY +SELECT customer_id, + quantity, + cost_per_quantity, + STRFTIME('%m', market_date) AS month, + STRFTIME('%Y', market_date) AS year, + SUM(quantity * cost_per_quantity) AS total_purchase +FROM customer_purchases +WHERE month = '04' AND year = '2022' +GROUP BY customer_id, year, month; +--END QUERY \ No newline at end of file diff --git a/02_activities/assignments/DC_Cohort/logical_datamodel_XL.png b/02_activities/assignments/DC_Cohort/logical_datamodel_XL.png new file mode 100644 index 0000000000000000000000000000000000000000..37908d5fbf77449996f8373f7c47a576f35faa99 GIT binary patch literal 26753 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
IS!U3(KijoP&q&=uv zGd8bak+Pkxrc-o?S34R3*F=o?c0<-~R(RlL9Q9OqV0G5FKaosM0&m|ee9bd3uNSdi zkr?(Pv{y5+(9^E4jdAWR#T~vkb0(=N0#RnNn$e)!IBbq|w18nS(|F11LH z(_e~%3SD_sPt=t~+r;@8E}C(|6iXl+eO@ zt{s1qeMhg}worQ4<&fA)Z__8cUR|?bQ1NLV$?~*!>XS?m3C298Pg{R}AHgSj`>INq zTu+;GpN!o4>Hq=0DqcZNj|KXa;FN+0c^Xmo)taK1damZQ!qQOcm^No)MCgWbA6H`k zXE~K=ajeK69!wN~q6TcU9&oI}53B0#P$({Buv1BR+wMo~jpKP7%K;k}vh=8^P$9NE z!VGZjr9Om^HhS*Ns>wM`>M+;D7sM@ueC>SqDZgqlXraWqPV~J+M1VRZKbp**VTj!M zn0t;c=N1MNIqDR8lEqXQSa?}nnIlv8RN|;rUOp?4`S7T*w5(u#DU;yKS$l@K5ot@= z&91Oh)tKnz@6OxVDJ>Et+=dHe17WKKfK|kaHt}5GUT@AF#YsZfN@I0CIc(4bXBUx` z1>dD*a}8YZzx~ET*ewizLOUE8nrR z1em>d;Ba6}qYpnq(%%MbvKy|t@SF=9tQpCBX7X6i6)>E-B$CyT!ISKzO^Ef_F^xU>HXCblr^-Dn zE_;9ehcW@Tl5Q_f1EJd$cn|6E%bB(aQEK)w)R)FaO9oc>J_TN)_BWCjTCizq8^eSKu5y%>WH3X54)985l>$8q7==}9XaE$xM`J# zOI@=RtTs8zYkqX|fW%gRD!iZ?p^`9^vtRq{INejDZKBP$dGhh!-t6LF)c)-5wv`w*~nmv z@cTZ2HANlt$GEMsbG&bk={1jZ8TS1$5F-aa6!zV0O3^zkCn9t>0xPXP$ZmG0i(xig znIx^);E+0Mv?yNd3G3Krzyl8G^8qd~fj=YOQlLB~w&gfcG~&(QUfWhhXpdg|O8q@` zs_)5gpEb+&W1De`(G8KUk-D5TYE~gXtMY4ckY>3?{O4{Luiex47QLM+oSf7Vvm;mQ zywKQ8f5XDB{^6(=*s;S}9)U_f@Y0*V>_h$>)o7C9JYYKc4byqy?59PKRDq5~EClpP>gnmKw$IxhgZwbYz;|tP(>J%?aCN{GuE%NJb!s z4^wgHa860=!`8+dW>)GStS01?gDA(6$DnRGA=v5~ZjARmxe7I6&p z-SK4xa&7n{=HZy{O|nCQK-=7>dd!@GVV>Rz_CxxZyI0ebr-E*}goI7LP)tgdDHFO& zBP|__8!;jIB`z$x_NC%z94zJP2!#hpdb(~M#ml_0)%Hc7bez%QNb1`YMRubv{RrT$ z@_0n4+yftlugXD0Kfxd-a+zXfVZHKh>@?5t;u0ecW{c;j<4?8EUnMFIyOx1Wzc}gEVTgSC5e6j26E+zGi6- zEq`FZ@t|eSyt!0a>e-V!mYhHBBKN0e8ARJf8S4z-***dpa`gieb@cCx4=X2ZGvTTX zHL|JO+k*txAI#2n&yIRYktTi^Aj87{F&-gdBuYp+Pe!ww2;J-7j18E}SarG2cCVmb zm7lD&^4{oTD6DO_`1Aw8)OVCH*8Fvlkdz&;^An8&oewFVa^KA2b}E$loYQ0ng}kGV zZfp4T#d^q?8*^p6yYG!Y0R{dJs@~f&lN$C{#ehjfKn9pZrk%%I7OMj&-zuobn&uMv zCBFu}hKyyN?vbx0wLV6FPTE&5%*`X}-mpiuJUqZouHd3fB2D^glN^^3)~!Zf((~bE z3-f~Vgo1Rks|PtkM6GY7?}R{=wEK}9!c8T>H4O3g_0at|KE{wlp+0EC+2B|OL7csJ zE4G?o(X&PSn{^9zI4|lf>evScZODnF9u_h=ly(bJwLn{a5!t(*ln>wV#g8~=yjL8L zTiWVQ$o7s&i`?Ov=asI2eC+YRLSr(;JlBj_#}+b|LAm%M(3#FmG0-6yM|d@iInPNe9PuIYDv# z=cGM8W&Kz;{e_4Y&0_Oc=4w;;i060i+G2QT@7inR7AmVfsqq`%{xGs=dcaAlEM$YuWypPZHIR|9>kSXjU(MSwHE=LH zW`uZ!IM+zF8Jmc(*WKpg!e5uN!QN^ZweWIRvvRYrORfU^Yi$fl450;ep~YoG5{x&s z8?yxMyKXA4d$TRGhv-A($dYpza2u-Lj6*p*W@`Apx~-P^ZIt8OdVPE8E*>mw%}sx! z>Z_hdZrhKVb)&MuEvs8{$=0#AI9A)qCb>nwsp(ajON6C<82?NlmeCuCS`q|$Uf6v1 ziZb~DzzRaY2#s+Z z9tCTKF1-;QSKigJar5Hmq9#_{& zXbbC?hLpb`jUegr9LAVf;aAIZYEprxD4g*lqn;hZS~Po>499?FLdt>W8rBwk{?rUo z4c1wG8uf$}dyWMe9>bcLjq4L%+#z~)n7hR3})C1pL*TTj(~-UkDG z9X6~BtxAbDwG_^1^mj?{3GZ!_h@bo*@Nyq8+}?MSIkOKEM&zHoWAhSeJZYZMTY4b{ zm`hC)+j^URw9_hjhdUZ)*S*E^e)PB<>P9+ed7ar7i+RizdDp(ErJ3J7Hona&R{X?M ze861*8-x!Sfvpp8z1}yp$#kW8p6^C!c==v0$bn8hWWB5>JvPi{i((G?^*!UelPb4J z5Gw|^G$kdHpJ0PVIC)oOe>^7-^iGT*arBMjJC1w)qb=wjT>h@9ms{xxpXvNN>D%MT zjU#unbO7H7^$w<9O%(&Jx<^eNZ)vS17?$dZhIcU-DL@pB=Lv9zy{tw&W@vkvks}<1 z9k?F(c~6~`)>wYn8lE|wAI6e@5U_SK|ISbdF}%Z((c8mMn>#xqu*$!-Kg+Hh>i)cXEYZ%pMx1=hKW;k(<+VtX!r<@EcJMRHc1j~z|v!`Rt$IzY@ zxt=feh6f&Z8+{-?ad2V$NFw4-MH7G*H)3df}}av^!fNya4qS`2D*HhqML(vnsJdG0o)&kuzbQ26lXXBeOa>qBK1}k=n$%I zkmZO=6@hofr-Z)O=e>K4u*Qa*TfqX$idu6hYtG0RrmE0yYdkWO~ zpkI|M@>DD5W-G(IdQSIfc8>DOs3OCh`Ej1f>W8%Tp72CIMXxx2?~Nc>a?a7`DLxGX z*s%Ngpcy_N73q((GOH=lb`a)eD0M{O$+Csa0G<*4$ko_9XA70deT^q4u-y<{ z+kllxFBZ3ZxA+`U2p_~z^HJA8TAOmWShVHN&+gQ!$0X=Si*of*^KWdv(P)2J=82d zhkO^4d@c=LsFM{T#uKgyqz`$YxZpo9)ZfQB_6&I0f^YF5Hx{O(gb0}*yjn~1MJsBu zED1GO6v-iZuaBYEPFR>Lgjq*ufPIvqSF@3M)ZSE{$1+G}YG^`&q0y}WN>?VJ93)?W zOCf^l)et=QRKrj|b-N~_jzv5qY~~&@i%hV&qq>+M4%zh@|JOGff)r;n-te-qnDrNG zv&?`*d?%P|tGncA^>u>HBRs4bF|9!E_0o?&5Rj|YHFS$U_ghU$X`9G7q0=@_=a;j; z3Ky`D2DKN~!^7{X<)}#9+55iEi&%~su4h_1MPY|33)4MbiDcI%)7h=JG`fr5bsa4r zvPE<7rNrQD(GJ=E;hx||zGxTlE}faTDfJk1pvr^SM|UN~uMAoy$>xa48Gjv64M(iB zEzuov>J(HpI z$9|BGl}y3Z5j`b|c|dyOs9lMPxp9=eg;9jm$>vvCf|D;WNyyjzRcHyOJT-w?jC~pY$b&x)h7->8@$X#$KOl{8~+qDEZTYWTEXX z9m*L&$gEzp;9zeJJwE(;?~DqmO)mA z9H0C#5QD5Bu5i7PMY~tO4)oB#P-*6!ElbyD`rdKwNSOOm!o^=OXd>!QtS56LaA(MofCM7OJYic5v zNd{SuXE5?SZaU*>eomsR3!}fs|2hkG*jw!;a70p#`%?=8&OK%yULIw5uZ%~cYam{- zzV^5S1mM__!Rg0ZePqua3KtJ=E)vtSh+s$OcZO?rv(r@qDNPtLi;I+HcblrllAz#I z=fOl*;nV8LGt1nPnR5N+$1K>)+fwO+83xgC}Gz54}RXu7QG)j$U znC}Rr?+6=yTK@v;Zum&rct}x4*NK3hEXa;I4kkTlti#-2%5gO~zpJiyvfr}u-EReYQ!R2=vZT${C3ZeDv_|AM};4EC{K@m)F#ZJX`zs@Y~E+5 z-x7%Fccal?TM*R}(V@mio0U%PIQlG+6LDj!E;MALG|$W9Trb+pFW|c>KQgcurbZ^D z0^eQ|UQ}W~g10 zFT=a;-nXuD_T*9OmGX6>`_b+Z1~qH%oH4Tb&2*d`4MxrCKd3OCTRB&Z`qL(m?ytnK zq9b16u9e4W-@e~~j&fX{&H0j+lO5yRf_1g0h2gUwHARK?>>uCA>>*9ef!W?1W~Y}` z588xBds8~UPKXuaEUiB3pwOYzO1dav3Xl^&Rht~E)@Z<;Qhd(tBi@hKf1N~+m9!F^ z>&V!FjB1G!GGi+xfmuY5RWV45Qx<8nw2!?H1}sh>1jd1kYPoH|cb4R6wUG2AfE`rr z9hv%bFewdC?No&!sHfRv#ECiUrsFUVbTEvdp>A23Yb|IEtzi~{vw7EZQ$)sKJWUfCpp7NVO97(k3q730Kv zo^Q?4?K*seo-P+wbqJWJK#&#bh)b-${uIdtX?pBMH-{VSU$rhzuusZgr0WXK=uewl7VIW?suCBUiD-f!ZRZn?C}pIdaWf<$KfS{HE#V@yyEfeiM0KCEW&I5rOmD z;~CX3Gp%5ym~g{9+PFh0qo=t2C;Il?H-Qu_2JI&3$Vht)JKdlkE4-!GEC-4Lq>Zqv z==2sjZtuO|2;kMWq(8s9qCWxD^XO%NIKf#R!5C`17wj%{!YBa3M4kW&Oc`13_Tzrf z6JAQsM-QBtVsePhLG@B+2cDiS7^#jlWRNH=i@#b}s=7pASEJ4T|JyxkmhXY&Ntp zU~;TwK{Eh?u=@}+Op&yZ2*i(>ZsJ2R+0@S;qk;ce8iD*qU`1_RQKT-1Kk}`?r&gJ3 zD$?tCMd&rX5(HnXO>}o1DojnM5b1bWHi2c6I`TONHU>`XU#^g4wiqKJtJJtq23&$N z!jBPa<+gV$KEhn@!4xXX2tMMuqTdg~9h(@)P`~TNe5}{Ea4u}hOKtQz3OK2ko>4ss zmN;l>bjexvo92OEpRd*QeVYKsl$@iJkuw0d#TY{@3y6pt5us^C31L%{2=N0#K1{W0M1}8nSGG5?K`yIGwqK46fTVN*J9X?~+))Lng8taD$O`40Pg((LWz! z#W3c-adu5b&nf-9{Jq!!KXN+?2cnB-K(@3D#Jjy?eP@XQ_e4(r0+_zGF+S>YzG7gp zc)=RWKt()KSTsr-D&Y1@PbEUx0r=1nZu)wU;i?rWXr8EkfAo!H*J*C1Sc8LKESjhI1n0BBNbR5+`M}k`y+M>y-4$)f(Q`cxq1IRF8Ug-JRI|wqCcZ z7`&~iA+X`<7nf{8fBK&X?u!;AHY4E5qSQK3YDXa}C(}hSd#f zb4}&lR>LB0sG#v|B`9G5$T6ox8*`A!YG%=Dpw5%q*4>7onlY&OXyzZ&BAC~G^~el} z>sj5|^65UJyE3}7=2!YIJ}`V%l-TxJQ!{55!9A3`np2E9Gu+N#)KjoU|70SeD|i~x zc)B>cI#5%xL0+K}MI#NfD$0!Xs75`c&}IlRkC=>GI|+|Z9DCm$2gWN!6fx)nau364 z@gZGq$fzFPiUmDW91vVNK1+9&NY24tR4@6M0&5mjVn5ys&`RbE;7K^4+hG#g`E;IXXJBfG=?xL8+I4YbIIk7+RHPa=y z%`t{0^~yvp6?R;qCH8Sqw@$PZZ`QR7!Z_<5=OPfe$Fc3di~RtmvBc{U=ev82*CpwW z2(gCu`&Zq{@^|_}fNS)Y8dXXw;CsBK{kn{QepAV~4BlI}TXIJMCmKUAC1F)_(iQVL zL@^Hi?)!Kgdg1Vj^Z>^MG5eQ?`|T8ya1yVlf6V=_8ddq87!>%Ma=bt3Hg|CgRYs?cevHNO+ULr4(g<2OdUSTujJm zl}W_yXX?`BkJWu{P6(1-*XnDyqAiO3Ah7h1(`sZxFTG9I(0}DQuawr!eMTu?61A3D zJ@YMgctE=z>9i!87CN~ibmm3g+=vKB&@4kMYj}aTYP*Q?gzGwcaj{-n9>0`Y#tdiv z5{pQW2a|sQb5h`{96Pi($dUbEk&Wa=NK)SEQ8~ZbF@TI^r*s|(qeLRojivZqevK@8 zCq!%-%&qJOMKmH*egOu$f17myf?HCx-Q{(AVnR~8r(-jgb#>Rix+EYtHyY=L#sEcx zE1KSXXuagO-Z*P>0nm$^n&jdwuQPwxSnEDJCKnN55|QZH(j+kdz`C*i;K;7{wDRm> z`dSV3w_pXaYiE#=ovOvA=s@;sDcLgYInH)LWF%TapPNkbD=E}-W8$3gJ7umHN`u6R z0r^H;c{c$UEkvfVINsrY0!en|%zX{6$EFR5ttuTS#D!4^ja`;So7GoU>gOA`PYjtq zJvE6VmmofTD*XH%u$;$`DOc99T&f|(Z_ZWGOCzLTj?HSm3hk97tlb3(70RyWtA63F zhsDB@5i&Ou5O>&VT0nM{x2XUt(&#Rs3qhNc@tre-q_WvLT(z>|-iOm}CogHAbBG@) zP8Ipa{qEIsO}fm$XXde)3uyiQ7wUk*XOvTEEi>SHx27P3PveJR_S|_;m3^OPh(qtm zI4@ZX$ay65$ED^#1=Jc3%Dq4kj*s3$Kr=-71De5PB5aolko>g8(}0z!vl%9i0w^&c zjtZIu3j5yM(Krxa=#^HaUWwIx2NVke&meR_DLor+%cy%rNrTioZ>efT1!w(&M-*VbtR!W*B-x zQA>S7thDJ#{z}KUoXOR~l#l#%4Skq@@K#mAF5hO= zW_dAn^qR=aU0HBN*1Ndj3jUa6?R?#$39^L|z5mgV(gw zlw7y8|G}k4NZYG{0aEOaBMq$)BU#dWz(sA6Cp-=Xi!f?c6|{@iVLf3y)!7d7)Bie6 z8R4KmwVAI5ex2>deWkyY9P>%J?fC0)U>#3jfvOBs!Gr7)`k zhki&h5mUFY&tA=MjqFzcj%|0qL^Ni;UlZtBf=BX?tQQt=fw8$k{0UKNDTG~_c}MPTM*wky z%y+rs)@~W{+h$62-8@RZ0bI_Rsd>BX;zBg#{P08WPrK^4{kxMjyZ5n`gwc9_pzR9T zNK9fm-36t}1Ptsd>DeZimM89rk;gdd@}AY%xgL6*2tP^i9~k>~Wy!9FflQ7Tqz%|h>9cSnR1!JckDQap4Z0kj2rwj@_0!;t_oY;qmZ+sBOR=ST? zXtOe?Pk?yFq{|U2f&qs&BOU&k@fAG_q>Ez2f^;!njlEI6s35w9kJiPngoFIp z`9czg0G~kR5LI%K5FsTy@bNR3Qdd<>RpdMaXMxsY5x-v^3n^}EGU9a`XSq>3Qh5Ny z^hsw|wKO?NseM@ja=sWMX8}rlgwZ^dfglW4{OU!d1jFZ0Zu%S@1?BvFgV5+c3JMA) d(g8$AY3`GMr$v2o6=*?GkWrQ{lr(zr{{XL1QTPA= literal 0 HcmV?d00001