From 3c756c45addc46dbb78b8f1cda3c530ffc332826 Mon Sep 17 00:00:00 2001 From: Satvik-Singh192 Date: Fri, 7 Nov 2025 12:58:34 +0530 Subject: [PATCH] feat: implemented unit converter --- Src/Unit_converter/unit_converter.cpp | 193 ++++++++++++++++++++++++++ Src/Unit_converter/unit_converter.exe | Bin 0 -> 75117 bytes 2 files changed, 193 insertions(+) create mode 100644 Src/Unit_converter/unit_converter.cpp create mode 100644 Src/Unit_converter/unit_converter.exe diff --git a/Src/Unit_converter/unit_converter.cpp b/Src/Unit_converter/unit_converter.cpp new file mode 100644 index 0000000..06f73c0 --- /dev/null +++ b/Src/Unit_converter/unit_converter.cpp @@ -0,0 +1,193 @@ +#include +#include +#include +#include +using namespace std; + +void clearInput() { + cin.clear(); + cin.ignore(numeric_limits::max(), '\n'); +} + +double getNumber(const string &prompt) { + double x; + while (true) { + cout << prompt; + if (cin >> x) { + clearInput(); + return x; + } + cout << "Invalid number. Try again.\n"; + clearInput(); + } +} + +int getIntInRange(const string &prompt, int lo, int hi) { + int c; + while (true) { + cout << prompt; + if (cin >> c) { + clearInput(); + if (c >= lo && c <= hi) return c; + cout << "Choice out of range (" << lo << " - " << hi << "). Try again.\n"; + } else { + cout << "Invalid input. Enter a number.\n"; + clearInput(); + } + } +} + +namespace conv { + double metersToKilometers(double m) { return m / 1000.0; } + double kilometersToMeters(double km) { return km * 1000.0; } + double metersToMiles(double m) { return m / 1609.344; } + double milesToMeters(double mi) { return mi * 1609.344; } + double feetToMeters(double ft) { return ft * 0.3048; } + double metersToFeet(double m) { return m / 0.3048; } + + double cToF(double c) { return (c * 9.0/5.0) + 32.0; } + double fToC(double f) { return (f - 32.0) * 5.0/9.0; } + double cToK(double c) { return c + 273.15; } + double kToC(double k) { return k - 273.15; } + + double gramsToKilograms(double g) { return g / 1000.0; } + double kilogramsToGrams(double kg) { return kg * 1000.0; } + double kilogramsToPounds(double kg) { return kg * 2.2046226218; } + double poundsToKilograms(double lb) { return lb / 2.2046226218; } + + double litersToMilliliters(double L) { return L * 1000.0; } + double millilitersToLiters(double mL) { return mL / 1000.0; } + double litersToGallons(double L) { return L * 0.2641720524; } + double gallonsToLiters(double gal) { return gal / 0.2641720524; } +} + +void pressEnterToContinue() { + cout << "\nPress ENTER to continue..."; + cin.get(); +} + +void lengthMenu() { + while (true) { + cout << "\n--- Length Converter ---\n"; + cout << "1) Meters → Kilometers\n"; + cout << "2) Kilometers → Meters\n"; + cout << "3) Meters → Miles\n"; + cout << "4) Miles → Meters\n"; + cout << "5) Feet → Meters\n"; + cout << "6) Meters → Feet\n"; + cout << "7) Back to Main Menu\n"; + int ch = getIntInRange("Choose (1-7): ", 1, 7); + if (ch == 7) return; + + double v = getNumber("Enter value: "); + cout << fixed << setprecision(6); + switch (ch) { + case 1: cout << v << " m = " << conv::metersToKilometers(v) << " km\n"; break; + case 2: cout << v << " km = " << conv::kilometersToMeters(v) << " m\n"; break; + case 3: cout << v << " m = " << conv::metersToMiles(v) << " miles\n"; break; + case 4: cout << v << " miles = " << conv::milesToMeters(v) << " m\n"; break; + case 5: cout << v << " ft = " << conv::feetToMeters(v) << " m\n"; break; + case 6: cout << v << " m = " << conv::metersToFeet(v) << " ft\n"; break; + } + pressEnterToContinue(); + } +} + +void temperatureMenu() { + while (true) { + cout << "\n--- Temperature Converter ---\n"; + cout << "1) Celsius → Fahrenheit\n"; + cout << "2) Fahrenheit → Celsius\n"; + cout << "3) Celsius → Kelvin\n"; + cout << "4) Kelvin → Celsius\n"; + cout << "5) Back to Main Menu\n"; + int ch = getIntInRange("Choose (1-5): ", 1, 5); + if (ch == 5) return; + + double v = getNumber("Enter value: "); + cout << fixed << setprecision(4); + switch (ch) { + case 1: cout << v << " °C = " << conv::cToF(v) << " °F\n"; break; + case 2: cout << v << " °F = " << conv::fToC(v) << " °C\n"; break; + case 3: cout << v << " °C = " << conv::cToK(v) << " K\n"; break; + case 4: cout << v << " K = " << conv::kToC(v) << " °C\n"; break; + } + pressEnterToContinue(); + } +} + +void weightMenu() { + while (true) { + cout << "\n--- Weight Converter ---\n"; + cout << "1) Grams → Kilograms\n"; + cout << "2) Kilograms → Grams\n"; + cout << "3) Kilograms → Pounds\n"; + cout << "4) Pounds → Kilograms\n"; + cout << "5) Back to Main Menu\n"; + int ch = getIntInRange("Choose (1-5): ", 1, 5); + if (ch == 5) return; + + double v = getNumber("Enter value: "); + cout << fixed << setprecision(6); + switch (ch) { + case 1: cout << v << " g = " << conv::gramsToKilograms(v) << " kg\n"; break; + case 2: cout << v << " kg = " << conv::kilogramsToGrams(v) << " g\n"; break; + case 3: cout << v << " kg = " << conv::kilogramsToPounds(v) << " lb\n"; break; + case 4: cout << v << " lb = " << conv::poundsToKilograms(v) << " kg\n"; break; + } + pressEnterToContinue(); + } +} + +void volumeMenu() { + while (true) { + cout << "\n--- Volume Converter ---\n"; + cout << "1) Liters → Milliliters\n"; + cout << "2) Milliliters → Liters\n"; + cout << "3) Liters → Gallons (US)\n"; + cout << "4) Gallons (US) → Liters\n"; + cout << "5) Back to Main Menu\n"; + int ch = getIntInRange("Choose (1-5): ", 1, 5); + if (ch == 5) return; + + double v = getNumber("Enter value: "); + cout << fixed << setprecision(6); + switch (ch) { + case 1: cout << v << " L = " << conv::litersToMilliliters(v) << " mL\n"; break; + case 2: cout << v << " mL = " << conv::millilitersToLiters(v) << " L\n"; break; + case 3: cout << v << " L = " << conv::litersToGallons(v) << " gal\n"; break; + case 4: cout << v << " gal = " << conv::gallonsToLiters(v) << " L\n"; break; + } + pressEnterToContinue(); + } +} + +// --- Main --- +void printMainMenu() { + cout << "\n=============================\n"; + cout << " UNIT CONVERTER\n"; + cout << "=============================\n"; + cout << "1) Length\n"; + cout << "2) Temperature\n"; + cout << "3) Weight\n"; + cout << "4) Volume\n"; + cout << "5) Exit\n"; +} + +int main() { + cout << "Simple Unit Converter (console)\n"; + while (true) { + printMainMenu(); + int ch = getIntInRange("Choose (1-5): ", 1, 5); + switch (ch) { + case 1: lengthMenu(); break; + case 2: temperatureMenu(); break; + case 3: weightMenu(); break; + case 4: volumeMenu(); break; + case 5: + cout << "Goodbye!\n"; + return 0; + } + } + return 0; +} diff --git a/Src/Unit_converter/unit_converter.exe b/Src/Unit_converter/unit_converter.exe new file mode 100644 index 0000000000000000000000000000000000000000..c874c72942cbd4e67c6755385e372adff273e473 GIT binary patch literal 75117 zcmeIb3w&I~bw7Sr(%Q28kid2#9)UHn6B#U7vL)FD47-+A-o<(>df2itT&<*)wDD?p zv%9io3PB(ftSn9x@~BBkq7c&9fix~5i6FFLzAO7(itdO zyf|;AAnkK2O6Nx}QFeTBaZnjnl+ZjynNmKWEX>L(Rw{u+pDabGDL_geh-Rbzln0#T zrprzRx}vBBjsN^t8}w>J!NI_yE%Ka*OsG;oINq3|tXagf?EkQ$oF)UwYXU4}K11pV zC`wTVc;WMa3lTF^Dma@Cwk2sCjUE$UX;^gwt!8T;kQc+o&wKV($Dcu z5y26BNQYhc7%nH_wa4QG8bJ>!$0%pL28eHv(_?)y2An1MwBcj8oJ21XV)V##$~Zox zN0dxq)? zJVPyowL@-4^-x{W@a@kt@ZcMzC*AL0Qcyfe`<{lG==aL+*Emhm-DiJcB1n zGodFKI$0-05t{-1-ZzF(;W_E1=u%F)C&*Eg?ukIRC#iUb+^0QB`Z#luPeBfj^*SY! zD^NG(xxt<4TYwr8YSR65Dw_#<`8P3>jYDD=L_k|)-6^D}z-o+Idy;jh02}ipTgIn6 z`G1~=$|=v_-BU{65j49T&63LCSzBM;(^msM_3~OqH;cjVAIrc02p9tK*E=+e%zHnB zsEp%r)E#<~3$gqOAbEzeJcsNL{pa+wXXtq91?ZXj%4+;8M2rpDANm4oTLr|Va{pLj z(bE)qsU*-Q^PXk~zlWNv!#_`Q`6S_8I#iIloR_~V%k70^=GO=BeqGt0_jE4NxSC7u z!8pw|%7?9jtC-Y9)*MSmQaq#YUl)kIbWHoEz z9)&*~0~}OZj=>*BJr5M1HrYZD#RFxpB>KGQ8YRqUsArz0-1KF>8B<+-IT6+5GP)U7PE6p}R=fGhfF)0w&@|MRuUk=6LFxYXBkQ5H%fb%5&(-EE1LwV~l6E6^D~T56@?EO!lXvaBc+xyhsW$ z<*}V2A(C|y@EBt86UZ`%aSfO^xE=Wqx)GP@#L#NobCUEB%C=0w4W;!ww;5cBhWDf! zL;Ug7`FO%Uzxn{9RW|l~*RY|?`d}mVL8<4^;vakA`pXZ(pFBg) zQ;0+Xe3}721z>G*af0d&EguEUGxV}&$o}1j0UxTHa!vmY;NO;T_u1)|sao>HA$vcT zP<0@72@swDI%o!hisHg3erWM^q~PF*jkn!?<~o=G1L;mAwTJ9ms5E510gWfW-zDW2 z6PLr2w68!7$+!SimV+Km3X9he{ri8A$Y(C*nO^ny6N-|5HL+kufycpd?5l27l(H8+ zhdc$TUt(p4hD!l)jpmUw&ww*s_n=YHnKx0d+t1b9vST~>ZK)@@`G5PU>HAJ2sZF{t zk^PtqSu|N=z#qMWNFG}LJXUg^p|?|UkR#693Q|#I1xuJxq)+cTDVa3 z4E+-3PVJ>^620A+`b~9#!`?SSgvwq_t(t*U1>kSy7gVn-f-a@E-J#y@+Wow-|6My= z+g&Z1RvV$tWlXEhSxDSN--lA9+t5$X3`3D&61|}y^{oP3^tTP7e-H3v^~yDyQgQ?HxKveq0B5_0XHOP=6OgS;A4i z$tWC86$7Z5=;hQ^D0&VxuUtd++C&9|k@630MQ6H3X|gAuJ+%BDP)YqVpLYbb`4?nm zM;NvF55Ol6=U-iohUB8me6HJFceqr<)d1+hxOdolwke8U-f3?&mG7|oOy!++XIgoq zseFgM$W-2Gcc4ssc-qQRo!@SI0ju9>R|MYFEk=1-?PpEp-S(8Je24vrsl3yEIITQp zD&Jv0W-9Nr_n69e*jr8Io%VyK@*VbmLz&0p;;+$y{C)-$?*GpM7zNNXlvwF_hUPQR&>7EYRZk=m z4>*ckqw^VPo@dliR93uU_4N+VP|ZBgNklM(!1t?H-lU|qzJsALiS-tOWz(+{OFRfU z4BtLm$_~;T}PL1@rz@n#x%h8b=S=luqR zrV;Np0MC?Qpu$v#=8|qF!(G5}Pjg(7a}D4a*cZQrSUJ;#W@0>&?WkU}^L?xxljp5G zlRV#|P*WH#bG$>#LqeXv2I847pl8kUyacdoRM@Rim*)|{NuChN^E{dfdGd=WP6to4 z(%|_#RuyMHw~{1y{>-CDyN1)_`4L(`Xz_gJlTe)5V{qD*f8c{~>cQ!(zT2giHB1^I z`NO(2OPDmfD}Dn%B&jGIsW+($UPPXHHIKCwJr)pJ{}h%sx>TPF_8B8!a`CU>m#H_9 z7gGu5ku3~6^+g601JB0<@MA{cumJWk;Cpy?epUe6jKISJxQzkD$niM=tORhzk%Oti z0vsbpMdp!X@!6S1j=#no<>0hE|G<41l+J(Tc>Omsj~r2uwu~I){-%*5JO2PJ;qyO! z2@NOHIr;a;nfLK=V>f7M{(Kz0f|#K=SPA%>`MWEYiI_RFg87~nKU6OU)kDjJdb>B^ zG~^j4SjS`B;m+|FD88BBx|q^b3OE|i3f?yLO#silOk;{EPM>AC_($W3P3Lm}AmWpd zd|H2;8fLiJ9QW5wrc3HJ0MFd3(Y40S;0i)~{!9|7KAsuYZrYsKiWsa-7Q2vmpOrI< z9#oTmgn85yPjxb$euKc)qWcV&jI8{ZfRh#KJPw!X%rucsbRs!yw2ah8{_rf5bfbZ!<^CO(g3%=UPMz_C63X zYh}dTYlxU@K||}yVrB#uF>fOBXqx>cjK%x??bLq)<{G7tL?^s~KBF1w2PmH*((D#e z%-=6DOpqqbXE`Q$$RmIgH5y@CL3#3sIX#5L@sXd!=Nm0Peg=2fv`BEt zNc%4UF16pqO#OE1YYZ3vNQ(xcMIXw>_*i}e;-d{fijQH|Ld3^?n;B-R$_P9tfF(xY z#|7{*1{7=PPYYm<5%?zp_`ji-c2joKjhxZn19$=P@!em~6d(JU^)RFKUr>BJG&OU4 zTt%|ZB|g3a^Un|;dCUl6#D1C?fyKv*ke1@(MHq|vl!XAC=>SM^2s$wJLttrhgQ~aw zG;3Y3xS5%nkCY<}SNQWLj+@#8;F(`*{>&rsT{o?!t|<-iS$m9?h@%OBE4Ru*NXIVk>-i?x7bM{I=>X@-?LQiKTXn3 z^EW;KA(H%Q#Fr^QIEGCi`(XyQf0EZ?i>mK$hlfd0ZO;yyNA~AvNTA*Icd&Ck-M30S z0-4MaJA=5L1J)zJ8hX)_%o!&-uVa@GTfmdcP;(z@k}cQ{&KaK`AM8DA8@&6h()SB& zpta(5fL!5~$?0k0t3SYTB<*`X%66&qPug!s4$h*ax`8j`8z%kOCZpIvln;tL*klxs zkih%<@Irdxkd;`B(kM!NKYsA;!mPwq_;2gG4f~yrWJ{q3JCkDD^OLllQUw7&cnftN z_67&tXLBd70SdMW`EE5V!uRy(0T44S;h@d$ylAt@eYWp!CT&KgX!COr+ep}zg)Yh@ z-(c1(?Jx)qxv~@U@L%bJSn1OJ8}6?;X?^!}co_Sm_r7ruglYZc%U|86l}?&%*qYftRNzk9-iXLAzRJI}eNbMS0-;yV1hXBQqiCFYaW@+a$| z(il9N%rIGp!i%!tMBx{*upWiCW#I!TEW2K`xeSH1vakq+R#6xxncl3TfKh8310@F@Tn>#9RZz^o&xOf^#jQP#W}Dpa zMY_wBDhXG1q7*S(?b( zzxo-r>yClxW;FirY>kOLiIa<&Pfi}zM&8@cG&JoJ%I_ZD9|vmEqXIsd=_kRk6ck!I>?^kFsaiZA}b%m|*O zrvT3K)fq6j>ti%-IqMzz8#j##)Pqp*GoK=Tp#l$rFbJ?9sHUmKI9$`}f`)84mki$R zP!g+PL4b~@-p@8R@hs3haeNU^F|?tX&qyZ*Ok|SoLeF(XgFT0&6qC!{6Z7*wUY!lA zAiMA*#N{lRs_zPxbLJpRBO;!g<|1pS>1dILv`|Az?4&GcrY4=prIOAZbS9ov(%2%O zd=jBlQn8H>xt~II0!DgD+)_a?oV}X{`4s#P4<&DK7skGQ=J71*FUFlF1_}_8g!@Sa z>d@}%zh#36lo?wDR#RsJyb&VFA_JcE8pR^F#0O;9Q45MaJg;R@_H6}zhj4q~8J2M* z_6?qO5 z0EKpV5*RPXg6X+b;%zwIWX>?TO|p(8H<;%+58`w+BMDEV%G10nIi53j)if9nxnCN* z`=y)rbtl~~v7LH&`rp1r)5>7V260XSPPvoMk%(I55S=`Mnw#9G?#dInv5#Pp(=u9{ ztUHZoqImxN5+r?lJ@s)jcJZG}eUI(SNj1=YKN&&bOm5ZT@Dk8Io;pbIwK|;Lga95T_mI?nML0l1Nz{Uw150Ab_(Ern*5XY0hHKKwhx)qKY|_>wi$<^!LfYL@l*~b<(yPK zcAh<}Pk0Vh;{lGL!ZT!lKj@saufTu0Fl;?a=1MMqoF(?BkcegFBpzC%P9ji9$e}m1 zN8jv@K&)SVV$8vkrp1AOw-qNtTc_vXfzSBLo(tDZWytaEq%;{C+MmtNAn3(Cu5op4x-? zN{BXD%p^~IfJse=I{8Z_PTuh3d@<0m6Hr&fvERENjNsT5hG_m4Fb3XID$z7m*HrY}@C!{b((!4$7qx-cl z_mi@;Hdv7)!6C{Rfe35J$FYa(UnkHZ`(6!sB|{zsQ*@i*&b1T*CK(>{da6J32q7J^ zZ_*ln2lEd&X#r%fXI1X0$rkX%1c0@AUnQ6S5`thMU*H+Ce-LPsBoY8pG?q@$7`hV= zT_$PCfD)-Fn;~V(`Ntr`xAs94rfmn4A%g-*`zVlT;$$9k$bPTZW_pNQ$o>Te!X04^ z*kG-~D3)=p*bTD%b%qKX6ms7nH6RmA&g8>@!~vuiDp*&269O*Nm_5fR@L@~e87QRz zNG!_eJ~{uu4`E%Fd*B70%gR6S=Q8&ITSDMYI^S;4l@KNd5ob$bB95GbO(9M@zl?-O~)0KI=$>UX%C?d zT_^3kL=JqfV}!`>zI2eRI=LiO2%O2>6g^IY+I-HGAwc8rEB`dCO&Vf6cIcxxnO8q? zC*q=>V6z^#6Nt3vgrAJj%#uQ$&f0b1h+RU|+od>|7fig-7eFu2cogsz3XZ$IMLKg* z&Sm-E8K*2&awcadD*=FPi?FQPgoP$Hs!;Utg{?Ce3seS=&m;KcRfF!gY_#yjgh;|U z=iwyaCih#hXQT`3f;n}g98Yy%Q1)O^vR9lzJj{f$zjGaRJ6Dx@?gMcnoU)u6?@G43E@^GyLY;;& zPisQmCK1?OqBd=Uk}`??66yxJ0~Pm~i_jVGr@px7QeL-+-OP~~lb2ApP>?R0JUJ|T z0ZUFy;nST|j@9n_7tiYB9spZ+ z%7dbOIiRfvSg4EnAoa)0ICy4;yKDp@?VYmY-ma%f88YVG7}&WN3pz3}obd%oG;1j` z><1ziDY|Z-O5v^zV;cVIFc7r>Z}&1{(vha?<|2 z4>EFE&^s`@@qNeda*0WeL-rqIi{3@s7|*5X49(MY+n4%B{FCBKdq5z4(}KQ3k$N6j zgLfAx7|5|wrG00b+h7W;l9f~+{?TR&ZY*%l69sl45#~ejGO`t`1XaQ*rHMZE8n9&F zV$2m1Os{HZ{i~4iu56o-Y3!+OL0gpHSy0h#JtRIs;N9K%EO5A zVFLV>0NlgE{!Ho{q8yP3Ul4#h1j5Hfxn3gNEdZMZLa!(nON8A5a3ui@m+7>w({pI^ zPaL=r{tJ1^!~3i}(~w&53uvL8q{1ZSS_!{9v^<6e2wCsY_f!AyI_{kF@Q>Y!K(pGR z68=!LcBpF}KQw4QdHAEh1yOeL@cFdkfk}`V{GEN@H*oIniyqrqaqbTcuK~l_pU%rUR*kBxF z&s_I6CXjORGFbp$LUq~<5EznO5<~@=rxXS@m1(RqUg`MoG1E2WH1ktj=CU)bJpAY8 zdK0mWh4Z#RDA?ZJ(V@oG&VB2O%St*!Aw^YVf$m@&Cxg{4e2+Vz2E$zuKsy7O;AtGa zVVoWgb~?g+z3qWmiK98T-{J4}2g4u3}zE~h0cev}D-Hnb!#L*E6CxYR=KuJl7l2=?@?5GWdyAwT* zsz`WmAV#O00nAg%Ry*nfD8(JGee@y6wqPjI%Zho*y48jvtL2D!%6e0qx?m^}&r`|) zq?`$}Vzr|t5J;F{m8RBIou_PA?bzb)*h6yH!88yl+?S^~dL5e`iepbNvU_-*vb~%k zPZ>s6LL_-uqkngLdITRIKBdo2PoG745a}s=U4*)Z*`hhn8x6$#iN07MgF&hSp?I*5 zYf|Iyi3P$vfgq%WMf4)mNnkRQ7+Y-%g!Tr*%qTo-#)erksr%fqDyGMC$8b#7f&ZdZ zh0-?qP?^cUBM|KFNn{XxEBsUMN_y)6x<>RQD=|SB789B}T!;H2ec?{tmpsd`H5`c0 z%|zPMjqDztr);R5{nNzT9trjJX0mK;P;)gnODGs(WhSAa%(!w?CZwU&R(~iI3CA5p zElsPLd5r*5J4Y=OwYL_c_3}JryZs^lpK6&uY@Y1`F1uRlz0HoQhWhR9M#LA~Oqs3K zW)@dG;Fxj-e`6Z){$mPoTjeS633oqvnYfyQz0pv>(Gm_C`?&~V9glti9yRHs|8;&VMdTjSGBWkMsE^SER>|@$!+hdD3}p=6T5#>xOTH z6OPVEFNJy_7K_9jMb!;;E^qy6MXQbn!`*!$e=L~T?=npwU5sZcyRpY_#aIh%E%MbiG&M0w&5^{6Sj`$1Uj5L6 z*L4KqeW8Q{ukuJlB93@3oREepdXYyUib|*x=!8$!S4$~c!h6DzeL_1Xx7zDZ^g!Ao z9G_hkr?-EsiWjZwUgKERz1ra@iUkswCpM#?c>ve94tCgAysxsHUK)}JBCNXn!4L+n z>p7yUvy%<{tD=q`f7}s{ID)I?cL390H>%b+ z_6Gx@PAZ@S_;+~#mV!vDaz|R#Ddm%P@X?L7;qv*+e%+Q|ET#&ZDJe*cPoK_x4llNd+c{r_nIITRE zMz7RomS0JeXQaYh@4U`j9!aCOwW{iRM-ifG>yF|bh^qdLm1<>qabHI)Q5=oLgZ+q{ zo;8m4z91sLeZON%EYN|ew#gsHaxcEd5yNa+R#CF9giiI~x=8P${Vw{;#rU{59$Xwx zFU}tq=gW)hga5bIS9}%74{BhoulRbfpa&550g6-P31?bdQ`P46se}{G`CRh;`t2F+ zv(JatMcj)PxM%@k0h|SRFFwi$Piv6RMV`_=eAXaO>EWe_b>u01WSOGuMxN4FmMcmR z@|3=fPXc***QgDj0ptsiF2&~n@(!dY@i~b6IMOBWRg_N?4$>NYMv(U*T~??lM+hJ3 z&dc!B8~HY*L43xMk0RZV&r8S;ARWTzH1fkpAI9fZbHeFC3FU*_rjYe5rvO4s7E68Tc3H{er>JjPSy zReUxgPbtP#r5brkH{i5VE#V*ytx=R#py81j_9h0ihM>HW4J!sl7!Dg87)r;x|KhI08v^eOTVq{s1@K%Ub3HldG@r*y^j z&=+}1-**FS{uuC)uEwVT`BJ1$;8Tb^rS2P{JMxq++>CnUDZLG!8G@_$ZI^G=_W;@|1oGA0P6RK84Q!@|1oLpJT|6BYmwJ zJdwv-tNc4YCqQ$qmn|pDo|A3!Ey&Hb=QdIfI&b0g`v(eOBYdcDD9wb^0{9+*L#b_H zj(wr+QiUklh~_#@6L9y!?0NTPm8QWVsEs}gb1G2ZZmG|)DLEuh-aI9*abBstEhn1o z%Nny4EKmyC7nLq-%Zo1X<&Mo8&zZ=Y60{`E|4J(OUbc9?vbZNl$$d1ZG`lS;O7@vT z%uP?*-dlPYk{`&j|K)t;=UMje&sY8``{&u3rIu1=@X% z+PzBcZ1yb0zRp&98NJ*Ge3j-U2=2vr8TTSZDF^H|jd#vMjMa0;D?kwAa{?!>GSRhN zBJC&Wo-aP=z7APmf~+SXYcph}$4H$EAa|}=?s<@VNv^UamRGu^uqOaJ2-s-@YyvRld-#yt;>!IYcoHnbUq(?-0LZss&E&M(w-YU`~B7I7vVgzvw5@l03cWC)^I{ezHVSTf+N-;ZC&?rzUy>gmu|`bys~;u&h+AQ}L@FF@HzG z+v#>UHU%4-Rn&iw*RRJjd-qCj&4L^0UV0~td_%Kad#sXl`d9}Yy!z(IF1u- zoMMCs-pA`gad%MhT|&GQ8&tKUzrU=kY+buQ9>n>+L<}bayd6!6va*gIe@ul`!9?8K z;coKdpPR|r8H{5~Kfq*qYZ;@ni8l{MfNE{)uILB_{4qCb)~Vh|oIVMEf{gIlg5t!>aCxPv4R+~#zcT=V6+t##R?N?r6^wxI-!;12EEMMM%Ll8>C zdx%dc?#&=w2C^N^AX)*U9gy+xUFl%cdQR|N<+;sE@ zclcDUi*)vd0v!<%7wkY=D|Cb? z0+TOLRGjGQ3gToYe4>+1&V&L4B@%sbYjJ7_`xt;#sqtu_gHAK4TnAY1rkvhDZ$}he zmc!*xarOn2?Rp6z^⩰CLCDp{p{Oyrg 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