From 3188fe3d4a76ba14be21ffbf754842ac166ee8f6 Mon Sep 17 00:00:00 2001 From: victormnsousa Date: Sun, 1 Jun 2025 20:28:08 -0300 Subject: [PATCH] =?UTF-8?q?Resolu=C3=A7=C3=A3o=20dos=20exerc=C3=ADcios=20a?= =?UTF-8?q?ula=201=20e=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exercicios/01/.01_pesquise_responda.md.swp | Bin 0 -> 12288 bytes exercicios/01/01_pesquise_responda.md | 22 ++++++++ exercicios/01/02_analise_programa.md | 28 ++++++++++ exercicios/01/03_compile_corrija.c | 9 ++++ exercicios/01/03_compile_corrija.md | 34 ++++++++++++ exercicios/01/04_compile_responda.md | 27 ++++++++++ exercicios/01/05_pesquise_responda.md | 13 +++++ exercicios/01/compile_corrija | Bin 0 -> 15976 bytes exercicios/01/main.c | 10 ++++ exercicios/02/.04_pesquise_responda.md.swp | Bin 0 -> 12288 bytes exercicios/02/01_pesquise_responda.md | 19 +++++++ exercicios/02/02op_artimeticas.c | 13 +++++ exercicios/02/04_compile_corrija.c | 16 ++++++ exercicios/02/04_compile_corrija.md | 52 +++++++++++++++++++ exercicios/02/05_pesquise_responda.md | 57 +++++++++++++++++++++ exercicios/02/3_1_num_magicos.c | 14 +++++ exercicios/02/3_num_magicos.c | 24 +++++++++ exercicios/02/a.out | Bin 0 -> 16008 bytes 18 files changed, 338 insertions(+) create mode 100644 exercicios/01/.01_pesquise_responda.md.swp create mode 100644 exercicios/01/01_pesquise_responda.md create mode 100644 exercicios/01/02_analise_programa.md create mode 100644 exercicios/01/03_compile_corrija.c create mode 100644 exercicios/01/03_compile_corrija.md create mode 100644 exercicios/01/04_compile_responda.md create mode 100644 exercicios/01/05_pesquise_responda.md create mode 100755 exercicios/01/compile_corrija create mode 100644 exercicios/01/main.c create mode 100644 exercicios/02/.04_pesquise_responda.md.swp create mode 100644 exercicios/02/01_pesquise_responda.md create mode 100644 exercicios/02/02op_artimeticas.c create mode 100644 exercicios/02/04_compile_corrija.c create mode 100644 exercicios/02/04_compile_corrija.md create mode 100644 exercicios/02/05_pesquise_responda.md create mode 100644 exercicios/02/3_1_num_magicos.c create mode 100644 exercicios/02/3_num_magicos.c create mode 100755 exercicios/02/a.out diff --git a/exercicios/01/.01_pesquise_responda.md.swp b/exercicios/01/.01_pesquise_responda.md.swp new file mode 100644 index 0000000000000000000000000000000000000000..5f182826a122f295f6920e18bdcb0ff5204dd22d GIT binary patch literal 12288 zcmeI&zi$&U6bEpZ5sBabzyrimHMt*!mXryV1*w%Pp|VDf@3peHi?6mXiV%W{zl4FQ zBOBZO4Gb&{{15EBYZAmEvqrLTY?-zy13ul^&r_qIkLu?8c#wIb7(u~tQIdlHaRVU#&dt;52 zvNV&=xaM%t*uZ1Yp?1?k536GRuOR~g2=oPRobKjX+KoMYaG&noJ?*E_g8&2|009U< z00Izz00jPPfmm;;4|2k5%Tr!owp;(S%PtxSKmY;|fB*y_009U<00Izz00cHrK+7BS zcQ=*#D$%|FU;Y38c}uAu5+5Z_B#tC@B<@K3lG^X9IU9IpY#9O&fB*y_009U<00Izz z00cHmfbxt6bY!RJjXvj!k3|Ew=y`-&b_Bz^`ex@iJ^>Vd$h6|ZkcDbj$ zoN-lcOIfl@?e|gzlP;s9X?r>2tEqcZ^MuMjJ32g|)unY};(1-#i-yU_a@16s3NCe! zy=IT;c_1U5V9%`4?dSFj2htO5=Z-@A$x#z+Y2V7kK(+SW)L=Z%*prNOkC9Om*|(P= a$`XMJEer2T // O que é isso e para que serve? + +// Por que todo o programma é escrito na função 'main()'? +int main(void) { + + puts("Salve, simpatia!"); // O que faz e como se usa a função 'puts()'? + + return 0; // Para que serve esta instrução? +} + +~~~ + +_#include _ é o cabeçalho de nosso programa. Aqui estão incluídas bibliotecas padrão da linguagem C que contém funções específicas. No caso, temos a biblioteca padrão. + +_main()_ é a função padrão onde se inicia efetivamente a execuçã ode um programa em C. Tratra-se de uma convenção do compilador e sistema operacional e um padrão da Linguagem C. + +_puts()_ a função imprime uma string e uma quebra de linha na saída padrão do programa, no caso a nosso console/terminal/monitor. +Ao contrário de _printf_, ela imprime apenas strings e não aceita outros formatos e especificadores. + +Por padrão, a função _main()_ deve retornar um tipo _int_. Por isso, a função _return 0;_ funciona como um código de status(exit status) para o sistema operacional ou ambiente que o programa foi executado com sucesso. _return 0;_, significa sucesso e qualquer valor diferente de 0 indica um erro. + diff --git a/exercicios/01/03_compile_corrija.c b/exercicios/01/03_compile_corrija.c new file mode 100644 index 0000000..fe2e284 --- /dev/null +++ b/exercicios/01/03_compile_corrija.c @@ -0,0 +1,9 @@ +#include +#include + +int main(void) { + puts("Salve, simpatia!"); + return EXIT_SUCCESS; +} + + diff --git a/exercicios/01/03_compile_corrija.md b/exercicios/01/03_compile_corrija.md new file mode 100644 index 0000000..f4bf140 --- /dev/null +++ b/exercicios/01/03_compile_corrija.md @@ -0,0 +1,34 @@ +# 3. Compile, encontre, explique e corrija os bugs + +O uso de números mágicos (valores literais que não dão pistas de seus significados) é desaconselhado porque dificultam a leitura semântica do código. Sendo assim, nós utilizaremos a constante simbólica EXIT_SUCCESS, definida na biblioteca padrão com valor 0, em vez do inteiro literal 0 como argumento da instrução return: + +~~~C + + +#include + +int main(void) { + puts("Salve, simpatia!"); + return EXIT_SUCCESS +} + +~~~ + +Observe o resultado da compilação: +~~~bash +:~$ gcc salve.c -o salve +~~~ + + +## Quantos erros foram encontrados e quais são eles? + +_EXIT_SUCESS_ não foi declarado no retorno da linha 5; +É esperado ponto e vírgula após _EXIT_SUCESS_. + +## Quais são as correções sugeridas pelo gcc? + +Ele sugere a inclusão da biblioteca/cabeçalho __; + +## Como ficou o código corrigido? + +Praticamente igual, somente teve a inclusão da biblioteca no começalho; diff --git a/exercicios/01/04_compile_responda.md b/exercicios/01/04_compile_responda.md new file mode 100644 index 0000000..d4a4f58 --- /dev/null +++ b/exercicios/01/04_compile_responda.md @@ -0,0 +1,27 @@ +# compile, pesquise e responda: + +Dado o código: + +~~~C + + +#define EXIT_SUCCESS 0 + +int puts(const char *string); + +int main(void) { + puts("Salve, simpatia!"); + return EXIT_SUCCESS; +} + +~~~ +## Nenhum erro foi reportado. Por quê? + +Porque o protótipo funciona e o EXIT_SUCCESS foi definido com valor válido do inteiro 0. Apesar da não inclusão da biblioteca padrão __ o compilador busca a biblioteca padrão libc e encontra a função _puts)_; + +A prática não é recomendada pois em outros pode gerar resultados inconstantes. + +## Como você executaria o binário resultante? + +Normalmente, Com o comando _./main.c_. + diff --git a/exercicios/01/05_pesquise_responda.md b/exercicios/01/05_pesquise_responda.md new file mode 100644 index 0000000..c5119c4 --- /dev/null +++ b/exercicios/01/05_pesquise_responda.md @@ -0,0 +1,13 @@ +# 5. Pesquise e responda + +Quando não explicitamos a especificação utilizada para compilar o nosso programa (opção -std=PADRÃO do gcc), qual será o padrão utilizado e como podemos confirmar isso pela linha de comandos? + +O comando _gcc version_ dá somente a versão do nosso compilador mas não mostra o padrão utilizado. Encontrei no _man gcc_ como definir a saída , mas não consegui encontrar o padrão utilizado. + +A única maneira que imaginei seria compilar algum programa com algum paramêtro que jogue a saída de pipe grep std para um arquivo ou terminal, , mas não consegui fazer sozinho. + +O DeepSeek deu uma sugestão parecida: + +~~~bash +gcc -v -x c /dev/null -o /dev/null 2>&1 | grep "std=" +~~~ diff --git a/exercicios/01/compile_corrija b/exercicios/01/compile_corrija new file mode 100755 index 0000000000000000000000000000000000000000..1d611592a6c0c16e5f70b66fca95e73e537f4673 GIT binary patch literal 15976 zcmeHOTWlOx89uwN6PG5wqzTv#BnvcyQM;qR)^J2I__8d z)HaeI@N~XC?E_i;ay_{jYeZi~$h=0bRKWN8Y6Zjy8JV|LImiQ|0#tGy%&TUD$Wbgy z2SC_^{!&b)lJbrLz9}Lw%;TY~wD=AyJ)7|}5|>Fq@K|KttHOI#c))cTClK-EnDFPY z#50PmWa9#i^5%pW#eScrfZPX{vD;4O?esS)yvCH*jEZ8XuU0_x_bKAZr4^6+11|GP z>2Is+piBIL5?*yEYfp7|9?E7~vUa|_(6Vs2yQRBRD;2bMuVWrpiatE2jvb#+)XXaD zB#bJ#3reR$l=VIMBs9;OJ(m>=xp z$K%Vamby~ctY76k#TEzV?5beXNtddi=YA^rXSVP!ZJ}=@{RimtUuC}Rl$2pmxTlSh zV-_7FXWDtvOfQ(mjGZ^L_GwG8nS_8IM3yVe!dJ35syG(KWvtfDn*mmI4& zKGK&hOi?0F7&5%AkFV;eOo<}I_A-#A1 z6T{t*-k(Rl;Wg23ClPZQZN(TzAdWyBfj9zj1mXz95r`x3&X2%f>h}FpKl_Io{X+F` z4k@L7b=66_ujyxhT65JqIk)RMQo9E((XnoSTCx8eTi&?ky6(&}%kF{ik#(kSf4}nV z?txRA~er!TN+jC2!s(${qvqQho^EwG@O?0Ab89KaNeS_r0lf(`B zXZ{;ck&!DC#G{eFSj#QEvbMhAx+^@`C$D;O@!}jrmJM-s;wWaZTw{2Lr>K#sUyvgf289P@3kTGKTDrw^2570c4xgqpK}pC_w@{Y zY#QS}LN!oZ|FvY_&TSJkAeQ42M<9+s9Dz6jaRlNB#1V)i5Jw=6KpcU0NCc2qh&)2% z2y(6>mmNL?iHkc$o|C-8CXtb^xL0I68#RlJyhVPV;sX2MHrxWsS0qUgxrIxTe2ARF z>tcTwJ5#yngL+7i^Fq1o@gX=O_i#n>5s~W%e}3-c!g-2Z-s6L+myV$ym4RX0tKvsV zoL)hD-ZLU;;P)@rKR=4Ar=nN6-ub4aJ$mEo$%s2WW_oh1*#99i&O^HUp8@j0qYbu( zAC9BO`^d;UJ=WLvvDCqdsdC;ar`kHS4z0DNyX=YWPq%k!t(}jG`aX@3iR1Esy5mN@ zIPM9uJR^ZgiNnK$mHhd-Bq{rLIdWdiWBqDG-ywQ@FG%#t5FHb$S=Fa~8P|=otP|?p zL4K}pRq6~?xc%UJCWdpK|DGVv7yd6$rPBDfI1Q!UE|Vl1&Qp6{a(+=Mf1>ZbRw<>FepbH>Tm~;}fLcMV3jK zKi+>*Wa9s-*dOx*tV`lQB==9;FP9~4}^t+OD*N)6* zH8x#z+Oz^Cv71x2;h3|E6eXuTGowwbdkOD`lQX6{<(-r1GX-NdTbMGlM#d==ONLoq zP}7CneAaTTjMiG&gOlxT!z>ofMZ?NF#YHt!G;@}bDd%#FLX8)`wdFF?|(UGA(Qq$%JV?YeN9g20zI3K&+#bWG))A~nl`za4;t&3glkOsQbZnfVOw z8yGr4UKu-YluK5I8p+eam@1WoD;pJPuK`YxHz8EqS+IFK!{)JZFqP6ui#f-fB6NyA z&Y@=KX-C7n(((nz(q{8zZN6BTw~EeUNHtZqX|IZ%5!KP&p%$Jip8K3xnp0Y4F;89i z=oEd+DXUnr3;9igLAIimHJKo_`K+TfZ@MLO^x|<3bE2?KILd0M!qL+SLF2#eZ}aW?w9DkGpujK?D?Y3 z_(A&cngaZ-_E)hl7pxcec|DDz( z7(do+K=hAwTXg&;@p;V#KGt=>%hE58k>dk&^_$MFyB^e+P>q2tz3bzq1Um$_k zT;OA!6`(j{{O|)lO?F4Rox;KiB1ZHNOS_KMZl!SpWb4 literal 0 HcmV?d00001 diff --git a/exercicios/01/main.c b/exercicios/01/main.c new file mode 100644 index 0000000..b51c653 --- /dev/null +++ b/exercicios/01/main.c @@ -0,0 +1,10 @@ +#define EXIT_SUCCESS 0 + +int puts(const char *string); + +int main(void) { + puts("Salve, simpatia!"); + return EXIT_SUCCESS; +} + + diff --git a/exercicios/02/.04_pesquise_responda.md.swp b/exercicios/02/.04_pesquise_responda.md.swp new file mode 100644 index 0000000000000000000000000000000000000000..ca0899915611ef574ab86935b42310cd5502c697 GIT binary patch literal 12288 zcmeI&!Aiq07zgmqiziX^1wP%y%hqm+GIkKri-&g4m{&5&gwe-d=N7lD>UTbjM zI=$$ftj~L_6T?d*%S`3oxKKG?CdS1wl%rI}Q8yeLdq3}l>OonlrRFpqkB;L)xk;&= zimh^m$rI7elJ&b`1_BUR71$acbvsct);!p!z1`vJG))1Rwwb2tWV=5P$##AOHafKmY=NP(bhvdVf0z3`ceUzx@CI z;{GSc3&%6Zgrne?=l#KR;*%i&0SG_<0uX=z1Rwwb2tWV=zbepd(zUUZQjv0wD{Bo2 zX>zZmD$ghg&S@&Fp1n?0O0kV8pS>9x8%>Flsjwmued7Fas=eVc^13jNR7SDXR`Mfx ftFxFC>D;&Zoo|zFN|DYNF!gRKueRfb3~%=hkm_az literal 0 HcmV?d00001 diff --git a/exercicios/02/01_pesquise_responda.md b/exercicios/02/01_pesquise_responda.md new file mode 100644 index 0000000..b21331c --- /dev/null +++ b/exercicios/02/01_pesquise_responda.md @@ -0,0 +1,19 @@ +# Pesquise e responmda + +## Quais são as finalidades da função printf? + +Formata e imprime uma saída (para a saída padrão) com o controle da formatação de strings que especificam os elementos a serem convertidos. + +## Em que cabeçalho da glibc ela é declarada? + +## Quantos argumentos ela recebe? + +Recebe um mínimo de 1 argumento e pode receber vários argumentos como as variáveis e seus especificadores. Não encontrei um limite. + +## Como fazer para que a saída imprima quebras de linha? +\n + +## Para que servem os especificadores de formato %d, %s, %c e %f? + +Para a conversão de valores determinados ao tipo. + diff --git a/exercicios/02/02op_artimeticas.c b/exercicios/02/02op_artimeticas.c new file mode 100644 index 0000000..6699783 --- /dev/null +++ b/exercicios/02/02op_artimeticas.c @@ -0,0 +1,13 @@ +#include + +int main(){ + + int num = 10; + printf("%d x 15 = %d\n", num, num * 15); + printf("%d + 42 = %d\n", num, num + 42); + printf("123 - %d = %d\n",num, 123 - num); + printf("%d / 5 = %d\n", num, num / 5); + printf("Resto de %d / 5= %d\n", num, num % 5); + return 0; + +} diff --git a/exercicios/02/04_compile_corrija.c b/exercicios/02/04_compile_corrija.c new file mode 100644 index 0000000..df2fb5c --- /dev/null +++ b/exercicios/02/04_compile_corrija.c @@ -0,0 +1,16 @@ +#include + +float circ_perim(int raio) { + /* Circunferência = 2πr */ + return 2 * 3.14 * raio; +} + int main(void) { + int r = 22; + char *fmt = "Circunferência de um círculo de raio %d: %.2f\n"; + printf(fmt, r, circ_perim(r)); + return 0; +} + + + + diff --git a/exercicios/02/04_compile_corrija.md b/exercicios/02/04_compile_corrija.md new file mode 100644 index 0000000..fcf6faf --- /dev/null +++ b/exercicios/02/04_compile_corrija.md @@ -0,0 +1,52 @@ +# Compile, corrija e responda + +~~~C + + +#include + +int main(void) { + char *fmt = "Circunferência de um círculo de raio %d: %.2f\n"; + printf(fmt, r, circ_perim(r)); + return 0; +} + +float circ_perim(int raio) { + /* Circunferência = 2πr */ + return 2 * 3.14 * raio; +} + +~~~ + +## Qual foi o erro encontrado na compilação? + +A variável _r_ não foi declarada antes do uso. A função circ_perim, por ser declarada depois da função _main_ estava sendo reconhecida como valores _int_ e não _float_; + +## Por quê esse erro aconteceu? + +Variável não declarada não é reconhecida. A função criada não é reconhecida também pelo compilador e retorna um _int_; + +## Qual foi a solução adotada? + +Arquivo 04_compile_corrija.c : + +~~~C + #include + + float circ_perim(int raio) { + /* Circunferência = 2πr */ + return 2 * 3.14 * raio; + } + int main(void) { + int r = 22; + char *fmt = "Circunferência de um círculo de raio %d: %.2f\n"; + printf(format: fmt, r, circ_perim(raio: r)); + return 0; + } + ~~~ + +## A sua solução é a única possível? Cite outras possibilidades + +Não. Acredito que existem várias soluções para o problema. Mas a princípio só consigo enxergar que a variável _r_ pode ser definida como uma variável global. + + diff --git a/exercicios/02/05_pesquise_responda.md b/exercicios/02/05_pesquise_responda.md new file mode 100644 index 0000000..6e108e0 --- /dev/null +++ b/exercicios/02/05_pesquise_responda.md @@ -0,0 +1,57 @@ +## Pausar a execução de um programa por dez segundos + +~~~bash +$ man -k "pause" +sleep (3) - sleep for a specified number of seconds +$ man 3 sleep +~~~ + +A função _sleep()_, da __ permite a pausa da execução de um programa até o número especificado de segundos terminar. + +## Apenas imprimir uma quebra de linha + +~~~bash +$ man -k "print" +puts (3) - output of characters and strings +$ man 3 puts +~~~ + +A função _puts()_ imprime a string e uma quebra de linha para _stdout_ +Eu posso utilizar a função sem argumento para imprimir uma quebra de linha. +~~~C +puts(""); +~~~ + +## Ler um número inteiro interativamente e atribuí-lo a uma variável + +~~~bash +$ man -k "input" | grep -i "scan" +fscanf (3) - input FILE format conversion +scanf (3) - input FILE format conversion +sscanf (3) - input string format conversion +vfscanf (3) - input FILE format conversion +vscanf (3) - input FILE format conversion +vsscanf (3) - input string format conversion +$ man 3 scanf +~~~ + +As funções da família _scanf_ podem ler entradas formatadas. A função _scanf()_ lê a a entrada de dados padrão. + +~~~C +int a; +printf("Insira um número inteiro:\n",) +scanf ("%d", &a); +~~~ + +## Ler um número inteiro decimal e atribuí-lo a uma variável + +Podemos utilizar a função _printf_ para converter os mesmos valores utilizando os especificadores de número octais e hexagonais. + +~~~C +int a = 3; +printf("decimal %d, base 8 %o, base 16 %x\n",a , a, a); +~~~ + +## Terminar a execução de um programa com um valor de estado de término + +Podemos utilizar a função exit(), segundo _man 3 exit_, a função causa término do processo e o valor de status -0377 retorna para o parente. Ou seja, podemos utilizar qualquer número inteiro como atributo e o sistema irá utilizar somente enxerga 0-255. diff --git a/exercicios/02/3_1_num_magicos.c b/exercicios/02/3_1_num_magicos.c new file mode 100644 index 0000000..2ab22ca --- /dev/null +++ b/exercicios/02/3_1_num_magicos.c @@ -0,0 +1,14 @@ +#include + +#define MULT 10 + +int main(void) { + int num1 = 13; + int num2 = 29; + + printf("%d x %d = %d\n", num1, MULT, num1 * MULT); + printf("%d x %d = %d\n", num1 + num2, MULT, (num1 + num2) * MULT); + printf("%d x %d = %d\n", num2, MULT, num2 * MULT); +} + + diff --git a/exercicios/02/3_num_magicos.c b/exercicios/02/3_num_magicos.c new file mode 100644 index 0000000..e428c89 --- /dev/null +++ b/exercicios/02/3_num_magicos.c @@ -0,0 +1,24 @@ +#include + +float circ_perim(int raio) { + /* Circunferência = 2πr */ + return 2 * 3.14 * raio; +} + +double circ_area(int raio) { + /* Área = πr² */ + return 3.14 * raio * raio; +} + +int main(void) { + int raio; + printf("Insira o raio do círculo:"); + scanf("%d", &raio); + + printf("O círculo do raio é %f\n", circ_perim(raio)); + printf("A área do círculo é %lf\n", circ_area(raio)); + + return 0; +} + + diff --git a/exercicios/02/a.out b/exercicios/02/a.out new file mode 100755 index 0000000000000000000000000000000000000000..c7336b2ef797add8f55aa9d5538b363bdf3e278f GIT binary patch literal 16008 zcmeHOeQX>@6`#A*i9?gzB~4m8fp~!inpWP}j$_i0v=`f#tgAS26Pu=muwLKo*^BPO z-P>#J3R0uAsFoX%@&_PP@ge>w0vbgKA%l=`6lfd-RUdb-&nf%kNUPxpbxeiIp~84%i|$} zGLH}Rk@5IEswpqTS@YF`r&!>Gyj4|f4}ngpqW=)+s`=*@@UJYOzXSAG);p4}L!>i$ z*)eQKFBn!)=z3J~r0xmD<0z1@1& zw9P@Q?3i|McSpWdG<%JKya`1P7D`2`M3=5r9ie$~i2ouu@Qi&C7aIY2JXO|OOR-lr zlkSHvd>OhSE*=CK6W`~2f2CGR{S@8DtQVxOO-VcJSw2SvVjp9laXKH+2gk)sK#${y z(`-QRJ^#os7tqUbBn_{TehG*?mbt75qX_Pj9+;s`-p|bjK`|;;uOWu2*wvqTv~@KG2VX zMmt(#BiujdtbwMrVIG>c)IFbQ7(>TXgy7%h`EO}Q*mzwVpVdzO<3a7@+#)UZigxz8 zvluugy&&Yt)9I^s zVqHgTo(3OnJUus&zB+z-<_8#9DB`WeW79b;arn$c-&JiQJqP*X$?@N7#jQq8F2=>3Jdo7(eF95L@A0u6oDuLQ3Rq0L=lK05Je!0Koo%}0#O8_2*?QF_bp5v zmYt~-bEbXjyTy!UC|Ogf6qL-VmqDE`p=cXcN!gIyrfg7Ka_^IDAsU|j>%)`l>r=6H zi$0FuZ1G#txl67)3^)h)RlwR=*F6DP2Y3)LcG-2O0Y3^j1BeN~jbe&DwO_m%sUxy1VvcQ<5P;phjw0w`7_cde*K!&2t*NxA`nF&ia->BC<0Lgq6kD0cn>4M>k4@tA+Hg{wThUQN$?jgE+=`K z)*aT9%kk=ND(c(j1Q+ST-{KEJ}Btg1e zf~X^0L&!ihF-hwYd95S+%qeXHU(dD!^WG)yzX>&N5?kh zp1y%f(WxlSo7K%~Q)64j6I%|qw5m<58%ceW!oY-axlLSl!(JHo7+9XCz$oN^>w~NL zW52{<_3g3Hbs-P+Qz1RB%SAok7a)463(heZ)yb5Ux!-V=bxhppk8^1i;-woz&T7%~K`!A2Rx9V1p8s7U-0#2fXm|MQ=(&_PJpVfX z{$c$!$W&X;T@L|K*eQUIczSqRqykFFZUKE#)cf&d>vqtuimw#>oMC-C>RAY2AC(g> ze*pAKz>l+!gMMYaUhsHj{bAH&4Md{HkT?qZB=mb-iajNM67;LU(of^Z`>zK~Um|}V zC(Qaf`IqSV>HYTu#&46pi}YO1anNHs!{z)0^a>Xmz~6%2`@<@r!|Wx{uZqLdJT%V5 zfsE}mt0h?4ZVXtuV+;yVl$}a0r)I>BW$?OF&@;FYz6_q(l0KL(4H$Vn>y+%WZd67@ zrc@Ztn~s@Po2q-@N_R5r5Hvw(i z`iuds)Ae2ZcXp@s^xjS#7UOq5x_4)HR|lwJ(}SMY$f|Yj7y9l!``UNz(f94zbs*iV z_wH=plLkh3%Rq{^1l(#HfSENMLwHw2`wDz2?k0c;fn9DB0Ac=~0X z_JLQ{D(aQ8nH3NhIOzlBGI70q3>o-KRUbBOs{l6Gj=R_>=4%;QD+!+n11}YY8XtA=S+S%UKhy%xSA2P~A zLd}jAp$dtPEiF%&cG)Tw=LtI4Y%^~lfpWunN2p#iRmiG?B@i)FHZwwX%n=ZAB!PFy z>jl*uqOmiSh0<7(WynD!8JvfzjDiJ)NjgMZs4%z+FepPe&ASkB{sXrfJo9A=?@QzP z51Bn*&Le&p4xDo^f1&+X=!=Qx8B!7gx7P*v;eA;6e|IqP^Nn@*`xfN$?<=Fij)Y-8 zKF|IMa~5tt&+8buewtprqx}Z(aZbm4p7$|+hw8;PVx0N3? zhp+!D#BV1*p2sqBoRE+CF#lVi!