From 18b6261d8554709b180601eaecba11b4f752b6b4 Mon Sep 17 00:00:00 2001 From: Yuwei Zhou Date: Thu, 14 Nov 2024 02:25:49 +0800 Subject: [PATCH] Add Github Actions for pipeline (#169) --- .../PCF-spring-boot/docs/04-deploy-apps.md | 5 + .../PCF-spring-boot/docs/05-github-action.md | 63 +++++++++ .../06-Update-Spring-Cloud-dependencies.md | 54 ++++++++ .../docs/github-action-env.png | Bin 0 -> 80521 bytes .../docs/github-action-workflow.png | Bin 0 -> 26938 bytes .../modules/federated-credential.json | 9 ++ .../modules/petclinic-deploy.yml | 122 ++++++++++++++++++ .../modules/role-definition.json | 23 ++++ 8 files changed, 276 insertions(+) create mode 100644 scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/docs/05-github-action.md create mode 100644 scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/docs/06-Update-Spring-Cloud-dependencies.md create mode 100644 scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/docs/github-action-env.png create mode 100644 scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/docs/github-action-workflow.png create mode 100644 scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/modules/federated-credential.json create mode 100644 scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/modules/petclinic-deploy.yml create mode 100644 scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/modules/role-definition.json diff --git a/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/docs/04-deploy-apps.md b/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/docs/04-deploy-apps.md index d7b5495e..67b9359c 100644 --- a/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/docs/04-deploy-apps.md +++ b/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/docs/04-deploy-apps.md @@ -88,3 +88,8 @@ This documentation guides how to deploy the PetClinic microservices. 1. Access the PetClinic application running in Azure Container Apps. Using your browser either navigate to **https://\** from above, or if you added the host file entry, to ****. *Because the cert is self-signed for this walkthrough, you will need to accept the security warnings presented by your browser.* + + +## Next step + +:arrow_forward: [Setup CI/CD pipeline](./05-github-action.md) \ No newline at end of file diff --git a/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/docs/05-github-action.md b/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/docs/05-github-action.md new file mode 100644 index 00000000..259ed1d1 --- /dev/null +++ b/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/docs/05-github-action.md @@ -0,0 +1,63 @@ +# Setup CI/CD Pipeline + +With the application code already deployed to Azure Container Apps, the next step is to establish a CI/CD pipeline. This pipeline will automate the process of streaming subsequent code changes directly to Azure Container Apps. This setup ensures that every update is seamlessly integrated and deployed, enhancing efficiency and reducing manual effort. + +## Expected Results + +Setting up a GitHub Action for a CI/CD pipeline to deploy code changes to Azure Container Apps streamlines the development process, ensuring rapid and reliable delivery of updates. + +## Steps + +1. Create the Identity Used by GitHub Actions. + ```bash + APPID_GITHUB_ACTION=$(az ad app create --display-name github-action --query appId -o tsv) + az ad sp create --id $APPID_GITHUB_ACTION + ``` + +1. To allow the Application authenticate to Azure, set up the [federated identity credential](https://learn.microsoft.com/en-us/graph/api/resources/federatedidentitycredentials-overview?view=graph-rest-1.0). + First, update `[Your-GitHub-Organization]` and `[Your-Release-Branch]` to the [federated-credential.json](../modules/federated-credential.json). + + ```bash + az ad app federated-credential create --id $APPID_GITHUB_ACTION --parameters modules/federated-credential.json + ``` + +1. Assign your application necessary role to run the CI/CD pipeline. + + Retrieve your spoke resource group id + ```bash + RESOURCEID_RESOURCEGROUP_SPOKE=$(az group show -n $RESOURCENAME_RESOURCEGROUP_SPOKE --query id -o tsv) + echo RESOURCEID_RESOURCEGROUP_SPOKE=$RESOURCEID_RESOURCEGROUP_SPOKE + ``` + + Open [modules/role-definition.json](../modules/role-definition.json), update `Your-Spoke-Resource-Group-Id` to your `RESOURCEID_RESOURCEGROUP_SPOKE`. + + ```bash + ID_ROLEDEFINITION=$(az role definition create --role-definition @modules/role-definition.json --query id -o tsv) + az role assignment create --role $ID_ROLEDEFINITION --scope $RESOURCEID_RESOURCEGROUP_SPOKE --assignee $APPID_GITHUB_ACTION + ``` + +1. Prepare variable settings in GitHub repository by setting the Azure information to repository. + + ```bash + AZURE_TENANT_ID=$(az account show --query tenantId -o tsv) + AZURE_SUBSCRIPTION_ID=$(az account show --query id -o tsv) + echo AZURE_CLIENT_ID=$APPID_GITHUB_ACTION && \ + AZURE_TENANT_ID=$AZURE_TENANT_ID && \ + AZURE_SUBSCRIPTION_ID=$AZURE_SUBSCRIPTION_ID && \ + AZURE_RESOURCE_GROUP=$RESOURCENAME_RESOURCEGROUP_SPOKE + ``` + Navigate to the GitHub repository setting page, select `Security`/`Secrets and variables`/`Actions`. Set the `AZURE_CLIENT_ID` and `AZURE_TENANT_ID` to the secrets, `AZURE_SUBSCRIPTION_ID` and `AZURE_RESOURCE_GROUP` to the variables, according to above output. + + ![Set up Env](./github-action-env.png) + +1. Create the workflow file. + Edit the [petclinic-deploy.yml](../modules/petclinic-deploy.yml), replace `[Your-Release-Branch-Name]` to your working branch. It should be consistent with the value set in step 2. + Move the [petclinic-deploy.yml](../modules/petclinic-deploy.yml) to [.github/workflows](../../../../../../.github/workflows/) folder, commit the changes and push to remote your working branch. + +1. Navigate to GitHub Actions page and check the running state of the workflow. + + ![Github Actions](../docs/github-action-workflow.png) + +## Next step + +:arrow_forward: [Update Spring Cloud dependencies](./06-Update-Spring-Cloud-dependencies.md) \ No newline at end of file diff --git a/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/docs/06-Update-Spring-Cloud-dependencies.md b/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/docs/06-Update-Spring-Cloud-dependencies.md new file mode 100644 index 00000000..68840ce5 --- /dev/null +++ b/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/docs/06-Update-Spring-Cloud-dependencies.md @@ -0,0 +1,54 @@ +# Update Spring Cloud dependencies + +As the given PetClinic Microservices previously were deployed on Pivotal Cloud Foundry. They uses the Pivotal Spring Cloud dependencies to interact with Config Server and Service Registry. After migrate to Azure Container Apps, when interacting with [Java components](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/announcing-the-general-availability-of-java-experiences-on-azure/ba-p/4238294), you can change the dependencies to the community version. + +## Expected Results + +The PetClinic Microservices uses community version dependencies to talk with Spring Cloud Config Server and Eureka Server. + +## Steps + +1. Remove the `spring-cloud-services-dependencies`. + Navigate to [src/pom.xml](../src/pom.xml) and remove the `spring-cloud-services-dependencies` + + ```diff + - + - io.pivotal.spring.cloud + - spring-cloud-services-dependencies + - ${spring-cloud-services.version} + - pom + - import + - + ``` + +1. Replace the Config Server dependency and Service Registry dependency. + Update the follow pom files: + - [src/spring-petclinic-api-gateway/pom.xml](../src/spring-petclinic-api-gateway/pom.xml) + - [src/spring-petclinic-customers-service/pom.xml](../src/spring-petclinic-customers-service/pom.xml) + - [src/spring-petclinic-vets-service/pom.xml](../src/spring-petclinic-vets-service/pom.xml) + - [src/spring-petclinic-visits-service/pom.xml](../src/spring-petclinic-visits-service/pom.xml) + + ```diff + + - io.pivotal.spring.cloud + - spring-cloud-services-starter-config-client + + org.springframework.cloud + + spring-cloud-config-client + + + - io.pivotal.spring.cloud + - spring-cloud-services-starter-service-registry + + org.springframework.cloud + + spring-cloud-starter-netflix-eureka-client + + ``` + +1. Commit and push above changes to remote and trigger the pipeline. + +1. Navigate to GitHub Actions page and check the running state of the workflow. + + ![Github Actions](../docs/github-action-workflow.png) + +1. After the pipeline successfully finished, view your application. + + Using your browser either navigate to **https://\** from above, or if you added the host file entry, to ****. *Because the cert is self-signed for this walkthrough, you will need to accept the security warnings presented by your browser.* \ No newline at end of file diff --git a/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/docs/github-action-env.png b/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/docs/github-action-env.png new file mode 100644 index 0000000000000000000000000000000000000000..99312dda127a4b61331932b88c2923162e9f4cb1 GIT binary patch literal 80521 zcmd43WmsEXyDl2sy||S^ODSI5-CC?r+@ZzYJ+u@nUZA+UdvLcFcXxM}KuFl(UEh1o zIzP_Oz4w~eH3LcJWQ_TYNAG()gsCda;b2l=0ssIU1$k*T006lg06?5XM}>bP=H!O} z|AFA5CMOA~7^OOZzd^Q;P?7)us-v+UO;F(PF&yP}TmS&vp63%`z@g|10PvKrAT9CP z)9`o&sQ+05CU%~f{0XFMr&jU33KxSOrfksg9a%<6LUll`BE{sg@hqJo}z00MAcS6!^S>31mH`}DdTZNg* zKNW)Q+lyIcqg(Mj@b($s5E$@=*hCx8twQHPW~91x0Pnlws8fT$iN77W{LB*?D!&+5 zpbU7Kc3?sP$Np*y=PgXzi5D)9%lFtnc!+*6&;d0#KMXRDU*Mfw%sH8@uT>)fjL+Hw zJ+Gj^P3V1Pc=&|IZiCBSj8P*=>Bm8*5uUluN+};?)ISoH4%WC^eYeg{XvA7rIDc)p;V<(=#~^&8|hlgZ&ykk6Uu<6VoHr_U)1XBfr7 zeKI-ttigF*>*N#x%5lnG-ME`#Q{}9|3G!>B95{@&*}a#7EO8zMy%^zkaDIsLTmvf{QsRVoB9UWziX1m9>aPlIs0-H(2rt_<(bv@usS1>phqj7cY%HUK$x&BF70AnE2AafQkofikqF(K`Sb**wOW67Z*(CHr`;${VxobGlG! z&R)lqxA3LVBq83)JR2sCD~hG@d%r*jxHs?f^hq*5a zL+~_Bp1R&uvV`BC`3D&I+;;6XA30iN(lpjuc(`KWRHOU_3VGnR+#UDKR(hBmfzqD^ zbbUzhlPQj{S7QRjaW6$eX-gaG^yplG&;S8RjsA+Rwi{p@_JN)~KO*e*c<5PVo|emG zzCOqN_Kh3f%d@ANPQ-BQa!qL2@5s`6QPwq7IYz`tFJSlPQj0h|PULEVizDP#6)F;l z=|t0DC;nj{>5l-5a))p`^pp%>3||HgH{9MZS|B3ev+o7)d7!L1HJ!R`B4IHuBt{je zN^Pqi)nz4`nkbQl^Deq`|NLI19vCn@W{+=?gB8+(p#7m~z% z+Z#ppJq%AQv@X6Fe5x%HHA6dq#g);&E%#KCJW#Zg(Z3-RI@@$Q$Lb5%yQ!H!YtpRw+56siL~;Phn)=?a%oi>(i@RNeVK; zBJ`)P*s;ld++Uex@vlgY>U7u1ZzJn*< zI;y98%O>;1dRD#ehLv*g&9Tmis~Kesp*QWV@+ZH$3K|5<%PJ=H8z^Q`Lj{YT&W{9{ z*ZV76pB0<)*lyigHWz3@4LzmPmbY>J)B}l8Z14&ENnwKS*w2olFw+w|*ED!xw@J(% z`4qG>(H#*Z5;E>W#x6-zts3(Vga-zf&C~AHs_P0d#?!7F6 z`g+_KA`j#IV6cA3C8ig?@tvJ`*WgB|mmPABR=XRyt~<9FbNJ7T{kXp%u{NvCwZR-L z+l|4iF?zeDM_jul5CNl45xt^877l>cFyt#l(wGqOi`$WAw)HmpiH9=RYlSF!DyruQ zIYaI+Vg{Go_l?j`z&ZDnfFGsXEq7{q25M3DM^w2hLz*PnmUiU9c#+b_=mS1)F7=@o zv;aU`vqv9X(Dd%T_^y{{p?D;Ip;lw95zpuI?*YpGa1V@px60LdyM7BH62r8aYVbJH z5+9KM(#C}{A%#Y7y|10OtLStk_$m5?5^rPLYRk$W&kuWOv;e1wh=9N=HJlI~;weKn zTLHoTL|_u^utn|zWXXBeUFE)FL4(}0U3fF0t}hblG2%xtk-G_klVTxNw&`Xs3nZC@^hDwQbAO!i zQ>b5(ixHmQs*r0eam$lc^V-`TaB{P7ombg{z1g85J<6I%_n!?ZTcGz;uUJFN7I{@B z@WWkh(1%s@mGfh-5>Y(YW)|`cv+m}87D)pxA-ohx@c2gOH>ulZw?E%YV%5)Kq4*jB ziubGJC3PuIjjKg(=SZ7mB1Y>EKg<<#4ZnSF>u0BLCFow&ti#QTXe$6CzU*hH=t|*!;c-{bfOX_~>!7Qs}WV>-(fzIbkY* zc|{dmp7y33xn#9bg~tHm$M$!&4EB(Ywl_DidsqZnAyMgk3p!E`Q>allqGx2nZS%ekXc|}v z{h%9F;xb#~Nf-pEx>RTq7M)1GO}_E1$)vr!+vL)|z0o7%%R(E@hT@wWRJMLP)&}$a zxT!8|%ghlZ9ZQ$&JMPE<(&j6k-cw@MpHa}kb2dRzDs(*q7O@j5LUMaD-da8*gf-oRlfKvibm|9F;wYG?l`i67J z!Fx%bQOCXC2}aI@EeVn2Uh2-^OnQrgacB_YSjBfo@1icZZbk1O)WCmUH%2vYEZS7| zv0G3EfCQd^1-&-)u$-Fdl11YOK}5drp*+Za=^BzC#cC3VfZ_`swD_p@Z(`fRU=1L}3`8h38sk$NcH zC6?y%&!Cb|@==vZ!3yDc*>^5p^HrjF4!F&@Hz}G{@U(Ju?>myoo?G*m#*qt}HYeQ5 zo*KWNYH^X>zD_22oKG31%m>9KwC^@5+X5|@7zZ>h{G$~mt_L-6`Jh^@ehx1OAM$S7 zHOOio2zfg2lA{#HK)wy)Fh9B{PuMLElSu@M_y5atr z>^pX6$fg<|n?h-L=WpNqC6GdcSAx}4 z$dul(-;HBBZ0zortPs`YN;=M#!KW@)5WWX$$oPwmXq6BJxAIwaxABxkf(;~gl^C)? zo~`C1-LN>yN+n<(8*|U4j+qGzgwFNk&6i^c#ViCEZpvqP)|6$Wm(IJx2g!@>BRgN)Q(Ak4Q3#us=R$vQ9cd zq=OQSOA`vodDZ)cI(=fs#L=va4y#0RcwE#qe&BmGmEb0W!3qBDDH3L8 z9p4ULh-jGPO>|djkayMT8_MZ>^b%a{7G>?LJJI0<#zdQyY$@@?(bK1O0_vLimOt80 z87yjuEYz`8wmki1Y9PDm!OAJ*7Zo($zTW*kvV45Gn{jnEj}T&W(-K{0?ZzsL8{KUK z1kPqdWJfjxk-<$sIlTt^gcz+49s_srzD`~h{Pc;{O|@0*=_71Fjs_UuIaIluSkzdxvRAi=UkdN zM2?IUAfyQFZ4cDIMOuIIec<*NEw{U!7#|OSCWPQG%V4`STCE>RepJ~yQ;t4dK{*P2 zt8q6Ax0?)Rac6{q8uD|fTyu0pNFfkj&Kin@7f`3GUP!WAR?@n9yczF z`CvkRpIg4+j62+lmI~sB+fxLuG#l7~o>j%fl@x z2VSXoY{(bXbw}5L0Im=7F%2KG>}()ZC$eo(d;{*iPi=%DFz9Lj{sQH8Cp7^h z;R~4-NqH2c^tgcw3P=#rm!TNBb*uP8CO580Wvu+yqr?sTSmOXk^j$JCaC40cebsS$ zDL2_JTVRbNIzR6&6_<1JD3TW2hd>VTQ`9DBV&~a%#Lo!q0^%Ut*QK`y+tr%aLT8s_yS(x%~y+<;j zhqwM2TTHz^a~V5wlcL0+mXWtC5pwNM8eX!Ao;2>6CWht5Q=*|iac4%1-9~W@dhbn% zb5h=t-OkLO@aucLP=E6}Yo)vcEq;Ul^mqnosbe*;$4$;@E})(4j?{}Rdda~igppBM zTiDTmh=u8x`L#P?iGUVbc(WJ-w#)tyOz~(dI`oqYg8ap~y zIemk5iS95cy4uWz+?nP8eQ1+07Bt$3B1k|mF>{)O+?|Eo6O2O>`s)%$yWP1yDdOwB z%v+|lfDNfvBIw`$ZdZ_~2#V@F9+Tgr=@xd8<s=ns8*6#XE7WaNaq1%%w?W+Oc>S+QCEJHhwRGj9^l%$*Gq;q0=~$U0u3c8`>6IUCzkJsG`~&40!LXZYf^A`&N<9Dc z6@P5!F5jgUOu&4*3*IcS9pk?A=S2@5CZN6+g@Gp9!|-g8lNlj+b6 zs@wt0pSiVLP*ZnJ<_(-bcE5@*GYI)rPrGr?>m! zs~52gFID%2dO&4nrkxQy>a;G%VEsVoG?JAu`;+B!F*8eTO2})s;EoX36HI3|rp&UR zLt(^Nhc@hxoZ!T|%?2n&i!T6Yi^NOhmYeC$1FN*Bu!2hl(2*W#?&qDLqZt{7h^Y<0 z$hbmSNMZ(*^5OO%%q>&Eekt9HLWPDD86>P5l;lC7uBnXeYd|Bdlio4gX49N+KY?(26G5G7bFZfbg2X$ST{|B4^RiMKeyhYmdHkp-#Zo6HTw<;f~#-! zf9j&-%V?4PDv-LGm5=;Z$sE{Zb2Yvq(F+x1KEgdgaM_RR6jEAxReSHmf_37iWb7Js zppV2z{kd6+C--U{@5EsMu6^1%pKT#S28IDz=3@ij1|6!-#9tdGi_kU=VR2s_i)jam z)ivBwI)^NO$Hhl9Oh+}tz7-Hqx&DLncPkQdJr?$6JVypgn9~Uno_~|n?tU@dvu`SQ zftO}_oi;~N=}7`UqQ1TrJ$Z7l%qmn;K{rhUAL=n1c$Bla8J*!-!7**q_<=_qRpQsk z&Hk+^hs^h`7_Ob&9>Jx}4L{d9DuTr9S%=VKTpH;WRcAsNzoBdn;j+cDNu(1H69m`X z7#UxLWSV~c#A*Juwb+XvVg-AbH|B>02Ro|4Ju20(D|SxXb8%N(*S(>BH2(%ZV`z6G z$BhH9XS$>9+a{>zqPydX38+<%+fx?(^o`T*DV^KLQ&78{!3 zgT68K6nUME9Rd%39yU%7!%`V|E5D&hckaB;I#nVy(|B{&u)c7h;w3z$v334R zdd)(jq?Q({m3_50wpGu!+Mj*c^9BYLV23wxHp7WOx9go}J!c1MM^P}s5IcJHt^N(TpY%h=ck zc;@txo}#GF2LQmdM263_6*6`!pX7i2fX5q7=U)5WQ@v=-l^|x8w zJx)FBNlLhQ^RTvn^^3ve3RHQq$u)()4&0$l9SLsWunNJz=y~Wlo1@mgoh|hQ_Bj2p z@co9;vlQwA$GPB4+_bHi)yv_M!&C}iIHm-HoN!K4L)j~=CJ?D%<1|1^pwQ{Pix^*v zQ;d-4({J}Wh)T&n(JXoYl{+AdXN0nXto$jP}O z;RIq{YPXH>-!!W7Wdw%YFRv0!a2XC@NeMX%KXZSK{~ykY-gOtpBx&xUox?I1fBUWO7m0g&Q%Ak@!~l~#r=sEXBb-z zEn@SAWi-0edw3?KksHLI@c(k36B^NG|M!T{{{vj>|M(%Y;p_2>KQ@I_;a8RA!TU13 zClrA3ewO1SkAFNr<-Z&?xp8bnN$Lj-UpS{StAt81iqN0!74e`fpWu={YR9YixR7JP)u(hHewA`J$q)ZqNLc zojEFv*E`~;hOcPPMeLcs2R$4D4cyO;1)ENh2w#4AH)(EeyjaT>+fbsdANlbTC-0WM zSTXJBvUG$dvU3{~u8#(<4-+HeDkc2PO}7L%Zzip@#fYHaN6@KSrnhLp9t>OW1sE-{Sj2b(|HQukIRlr!ds`bVe!R8 zoaWmc!ndlza3?}ZTd5u7V7&}wVifaJ>O}mkrF#t2nV47Ku~W$j+rO+ap6I5&1gfyf zoO*LYC8-87Ub}Gkk1NK9E4cO*t<}Fcz>_nPaPdbUI@n&%n7Jv18N`d|Sk5N$P* zlm1M~m{F|tZtQ9OqC+Hl;OSO)6|x6>_Wcp$UbL@z&Lq!hvH<~GYnk}71(m{Hgtxg(V zP%3n*jSB$qIzT8a#$dsuY6Y9{LI_U6e5xl+*sVY(EDRr1!{;aXQ|*?@O$TK<5eMB9 zVc{3%?e*$>J|LFIOhNvl(_+9TzJFZ2D6V6Oa1KJ5Nf?SH1H_XSHxNe-E+iihO1stz zX?yEpzbvd(P|Az%kzowr9IjE`x|tzs z8UQux)rU0WlLu;l&i>`_?NxIL&kNwsN0)#zFk}Kve7xua9kI%8gYaJ0G%LFRapCXQ zcxCj>!wi;4FyqU%e@O4P;1pVjv{z8(p zY4Yi{huMz2_W(wBW2Z}gNDZ`~&gw7jzQ?4k_{pIFnOJKFRCk#XoBkKp3T0rTli$ddGkrKaS(#VSg;-ZGp z+|eFdhA=JQ*Uz^w^OaVT3; z8P8Fp7)p3U8li!21=S`=AkHroS0P%*3uK89w zMp5lY0>jKZ8aOx=r0PNn5bqEbnJAg5PfEUcGYY#+t>UFFsJIPCcx76#OlZ@CUHd*C zHv#f(aN*M}<$TuLJUy0qgM8ibu*H&ho$t|1Kwn4DQ|%;nU{af9?z5DqFKZ76m;Wl~+b4v34W+~BKl}sV(1|#pDL>$f+dh)@u5N_{mni*V zTg2)l_2`S1@O=b)J!Ti%sTDrqbqc~&HrZmH*eAFWt`Vz58vb-yBQ-2O^5%;e7ljDT zutdHx2R7hb3guUDbWiwFrJQtHs{?;E(mi`*&;C8A=*Q-Z!8kN}+Yh+B{zoC9V9wBJ z@_?-0g;k6WZ9@Ss0qb8-exb^mIFG)Weh8u$^~W|n7~))%>Ndp!Vn4)Sz5c7zHe0H$+&`yC_v-O%it87VF}k=Dc2=i~T@ zatF*!qqW6GHRvE+91;G-_&&;jY^na2qM}qVp4Xn7{#26nx_>s1V-_as2uP>LQ~$@Esr zo_D0VqQn;I=)kvgSuN+P=coJJE)=ALFBlKfkNYO`3Nz#0sCV=G&=(xWIdzs#??onggC6)Uh$!Y}W$QQJ(`6*J6OL`C(y z)=Uiyp}miO@INR1D0y)1P;&5#0b1wP;;JpAFn1c!r53;>O;KN^nR>pYV0Gj^Q?~~C z$c~K;zxhsHeQvQs3jRc+$3PW|)z{LPWamHYG}>szDihTbzV<`qd=w`g81u`oe#;wa zi|Ji)`Im89cSh|s)3NqSHy&ctxrP%N)=vuJZq;mRCI zq#0dggEH98X`18tzoS-X)Q+zG82SSLF2hw-Z+x;$-U~=;SiDkL&dz+ZTa0*+WUgnC z7x6<+w{iwP`4NBcnZ$1lirpPE^cmj}7vE-A4;+*Um+xs^OJ--xeh4q< zcvW6OGPvCkH!1hQtF1~WJ*%wnPDJgl#clNHi9|jQ_3aQwB1)4zy4Sju2&75ed;Y~M zlxyX`9BNW;MZ(W<~#OE?; zS6rQeRz&F5?*!s18L|nDipyLoTO@pL_XzW0$+e^lvROh)uqD$abu)v``7HC0BcZ?N zI~xR=!_8c!_I%P`v=mwCyVca5Hn(p8ZRdkIr1*4(ntqC&`{ksZWv?Bb|4OF&A#+%g zh^E#fYBw>*2pAu!X z0ZOT^x@`#JFW!?X$;N=PVjo>!0J40io)!w{*n5`y2EKu|E?|$AU~AA$U>4e*=`Q{a zx7KjdxjZ|7gvF2!^uF#TdnK-=5DgyArxSg%=qUv+!M%`>-Sz+z1j%Ih+!`S{+a!rg zZl_|(ye~Hs_^8K@ZYTcueloPbAe?hZxM|FonHyrAZoZY}tEND?mMp4tr+D7Sbq`O+ z%_WKG< zr#uof2{q`U#Cvo(rJ*QZC~g4njchVH&nZEwI~)YZ3gpth3SFMmZ6{2~8)HciyGfZ^ z8xhS+WR7i#-Ud=4;__U4TKcoxH%0l4N2>^y%*sFTBz=+qfcmwPez!wGfJZ$t#c$zg z^3qa$SAnUy@-={fe9W!z>}LTiB5vcY2PMF;=RW&vyR)vxZNi)xp4xPF>u0vY-lxKj z2(}Ig!J1aue9}qFW{41^9;piBU~JpitgY6}Lk{WCL&JFFm*TK|>Q4fs-0{jW%T~KO zX6R|3K@04y0OBI!I zr(P!_&8;n$r7E=dYTj@q=B;3pc7M2%_vWX7qTb4#*AY6gwfvUCCuNe(c_Augx()em zu$WCv#gmh9f75T!4&WV;Q@eemugU|r+Z<+iZ8|b;v?aGedoV^14SMl-RlWeEK;i}2d~mu8Xx9dhQss5TeD|ts54gCCexbD`$^X9G!Kw~gj9P}ap4q6M zY8Yco>A+as`CW0z7(Bb4VtpTgTsBpv=P$%ic2tkL3|M-wy&4@6FW7jLc9mJWE+!;f z`$l^932k@;9s4jSZ|2h0hJ>{ijWDZ@24#Jzfsajx9w$HOw}VCYP29`3+OSx^`bN1I{e|p38AP`_`WJ0tNXeWh0VQ9P zgzHEV(GGC-9qdHDN<6&e9NQ5ac-cpH3<8`}1_-62pxj)a{#13+%>|w5W)`k>tNZym zIzy=}M(n%NPp%A#Zp}DMLf;o;lzf`+pFyzj}ZEzp@U@DL7&O(aBrt1>Tn1|H1T&S&rPb( zDG&zB$*gqblze}^0gl)U3^F57x0{y1Ar$23vGslRmf3Nw%oe*HTfLndVYYaR<%w~=)xLEF*p#ui;H49|I{L6AI< z8?#Hw!ZcTizBIFH3F2sMJ`|<8EzWVD<6u%2|7t=7vGS!1XcgnJ(i_}FG%iq#76O3nCYB?Zu zbo_fv4R?LD-m@Sr!ry0)n5Bj)od*6LrYfsc3~)89(&B9r6Bm1SZ=7W4Er_nT$3Ng4 z>t{aCgnx_L*<7%OYDTI?#1E=7BBgE3q&HWsW&4= z?~#AdJDoZouQefjWK8|`fH@2Xx>Vr+97PsakpXu27hslQWe?chblYqQvz?Q=9supu zG7}e_Ooy5(kwQBu~twIb|%o|%aS$mQ7t96#)_BCuHrL-M> z>*yjeqX3&7;4PJNsNy1bn#)sptfr_`|5i3g96G5|jUz5~QTRs;4Lg-Xc1gFqIEu(k zyLJ-M7%*w5BKbpsvazI6%MFVpUGPA7|Fe3K2w;3BYlh6x?;&&Qbyy;LR5(2a~Z^d+Fb!))vfESW2EVt#CuL;hoPZD6nq7mlbKmd~XnGZZ>2W-CnGh@Z%{^>eO(pQgkiQnK`>wAEm8An+| zl4rK>y3k9Elw?ax|5nug{TE_GiL06XEP( zgeP`OyG;^CM$Vsx*A7Gq_mMUON5k;-x65^87$?se+iTPUwnCf2RojO}HYlssdwB!Mbz_eS;ol zrdK@*Sld(HD4YW5J}e*-N|-TjRs8M*X}vK${jJ`OC@!UhVa~ul)B57I>4$fcdWcJg zUS#YQq`w6`Fqd|B8=>wS{kF6v7xSQ#7g!VDo!dyUAIs`kFwb2GxDg&(Tu}g@D_ErS zy+s&5#Bg8uO&c2DFS^nOhM5C+&di*>gWMlME`?R*{nA?qM>xwow-Vs37tUC_S!HDB zT?wwBjiB)F3bD0qUru!9IP`vE&zKBbQ6~iShHz zOb?7KlFF^iH>}x4?AK%&0eN+MvDc0-5FwF0OQ2mdz_x*@Rmq^aV=EK%`q)`AK5nF5cL-NVl-@w*2E?f+&u_1@cqdBbH+M|He zVtEqXTYka7a)-Z2zIW=kF8%QR)VTxvU*-_9|0;ymgIaCGP|rF@BSCvCo<6ofenJvk?RQRpZq=E5w?V4asQ?z+$+q9##3$aB=j!2}%AR0g!7Gp!CHH4LN&nOL+h@Xo zMapt%p-MsDzFZn#kFZpN#pE3v56QbL@ zcds2AuTqy2mR`|HY{Jubkv62ArlFWry>Gf}tD(SqspCg(1PQjQzoZ02M2?An(HIk; z!v;n{OAmh`P46c1l3VP)pzVI@GsG|Z{0)kf3JmZToMjbq{&BW`E4ihhrwwp{P_!B zC&GV7jtSzR|K6T=Orh`(7z=;-|L@ydCxbuBGz0iO0o=j7dUZCTZv^^BP5+BF@j`Kr zWccSB_{;y)7C|1p8SVEX7+Z{Nox4}2&vo5Dhu6<lid@JbNf|03_DRYzJm2|F6_@=cPLC%rzX5d?=5aL8hGugpeS@*7P(^h`vL3HE& zux9JkVF=iE4c?IXuTpCfyGPpEk2>@T#fc#k8ukX#4c0kmZZvrSJCPhj!^StYV(YT8 z4E?tJkxNLHF6;?+)7ojnfAx$H3SKN}c%I%nyDFrFhqRQMYo?X2{M0C&&2b#U1Die8 z%7-@-TSU`#lD;mj%4wyrcoN1qd*ez>`fsmn^Q-D-xajsu35@8G^_01|xvLldjCZf? z0S1|syBp+4!LT|6ou`HHhu~W9#SzZ@1uOnyITpN+YByna!?j0;ifQFX;EB}4(eK)~ zqa#voNCCBLW@A82laQKnO_;|k`_0@?dmxDq?(E;GMYpa_CzXw-8|xt2(sqe9^XL5P zpQAz_-gnB}v0loG7NBh47*g=1`Bfd3qvMd~c@aJ0zEOJ_irwI1a&6~LO)%p8#n_h!APd~2%(JR? z0C^(QL^n3?IX0fxnuXi}cqJz+Y=!JQ(;^}5+I1L1Z6<3RbK~$#a(cDOp!`bN1lu@s z%#WN*n@7tUI|uPERIs4@!-p0c5jqfN6r1&g z-*}g9Jw+AqjHw1xVogeLYq2Ig$}cX!x3Vs_R=bg8`Uq`OC`&9zkyX%{*}N{8)xYgI zb)0?6Wc=XmRAXRO^8&w3RS@1($zYvdW~t$4HEG8eS#v-)nN_Ci^qvQ4P5X)>>j_P2rF{gl(dvsptPy3-CO1 z!7#XWIVE&)i*!lw|7zub7p6r7g124g6nui$9HFxMdDgn(h=enlVWCA6@9y;QUo7jS zDJm6Pv%eeRBqPa6AxRF9zOiVQoHje!)8N0a7w{mkcaYd}DiuXsYwBiWOaphsL5GkIx*}kBOPEZ?D=(F^J6$TWQuL_vBDmS?p5L?Y9er911 zYFULViQ_oc=NxSB~C}KdXLW*w@dqx-mbQ_9w%!hlBs=P1@be6+?!wjL}w|wV} zH~%Zm(Vw~|19(||uvcDCX6me3tUxTV_WNdeSQGSBL^JwOF}I?J4U{clpIYPlpvAzdxpDe~&eVxjNUf}Zt=!VrkNm5XU+CD62iW%V%~lsgDSw9v(y|+7 z9C}24j#6KNO0<=&ww4IUHTtPyAvfC{yM;2Q(K$W95J%X=KqmvveMwzNNgvz&$`PFlsC|twjb$ZmHU^* z*KA7W1t6&BMc>YS4CzQ?$2lW}b2nZs48@fuclipXcXJHmlXBC7vhmV6m8RfINV{>;>uHJnpwJ9uk^#;%oqzu3daT`cJw>kYP|U6KJYKMc zFB7$>CX?Uww1}E`Vn}{8j9Fn4D3;Lgh7pSxoTos`1mUv}Xf=|ZL(-a~I}s>@vQ5PY zou{vN8tct|oq;e_tX=5Z>?Q54y3IRMHt!WV;t=i|Af>M|&tJ|f_$5S)Qf^(1H6Ew! zglxH9=-2E;^H<)^<6I>$gc;DoU77+4gRwzA%8bsqa6W3l|FZ!=@(bZ)maqo%h)rp zzLz8#MW01PB1UQoBy3U$p281?Y;oCqMLL(%~N@OJLoDkk^nZ~<8=$tB` z^U#pq`G(xk^nyXkPhU{q+YOLLHS*t7BZcY(xJj;RRIoT%GHrP(M&0{zUVcujIZ12U zxV4H^kmq7%#icjHw;76)nveXP*QZm}f(baRGJlOP)@w+@3%{a=YPi0Blu5k3K3rV~ z;c{eAa6c1VSCGaQ?~B`7d?@)f=1H@}?~;}<@MTggugu@XfVaJ=A4;mFD>$d*2PH zYxan(D~M;=Hct~eK9Q5VH1?x1ytD|`5sLd*@_^!T7>~d=##H!^Ztq{*^k5GH>+ z{D8$9!6KeC?(I49A$*tOBooYSdWE??OTpHD#69O8eVCqb=t(7v3aGXB|SWA;I*zHbgyiGwqT-|60?WLXUi$zep*gZCRbjV_cskHAXB*&smYs#HzJ5#Dn^t_iFaTg}(<6_KP z3WR1~OPjxB90ldkYb{O2=WadlxYZL-Rrd5RHLlzIF7-iSzPXEJOTX$*zZ$bz_)B%w zLv(pF+unw`y_1~aL%HSqn*8~noJ?Q8;!-ux`CbQ&i>F0*D_VB28@0FVrw(!r_nlJJ z(?CH^O+)jTF1cN73DkaiLqhSWeJy1wfw8IeZi)ABGS6zT!Zq1ZZpQF)N{h9B47vJK zObilV3T@_L1!CZC<6Y0N>{7fKor>cBqU|lCs`{e0Q9wc(M7l!|5D=vsX{1{^lx{e{ z0cn&j=?3ZUZb4E&X*e7@ghO|8_rc%)9q)TT-0^<7XAHie?0xoHYp*%yGoR;K#L4Nq zjV2;St3p#F%A&|9dJeAybJNbG8_N*9q@`({nw$f5)dTdOu3gMpI=mVV$FSr5b`7d} z+k(#95XqGFB!`h!%wlKfkbbflf#99VyO{mz!AU6B4|BcVk7i0c89s|eB-4bv`oE8* zLDkHoD1U&?Lh_#x2BprY8x8}5*Bk+T)693C6PGUXzTQa6mApzjZLPNiNx3b~i0>?9 zm<_UUOd3%JvWiMr#p7ZsZ-2YNNXmpt+=l{-#!1$3zHM>uZfrrwTL^hiURp3b~Vy1=k^bX)ZB zytm>T#vQW^{EITsh;kZntf?Pl4KA1Z50X6i$pPRgL@HJ->a~q z+QYe6m8Ex=^7U*~5mU5+j2Nwjb0isry#(|(PhR{|Z@<+T;2k;l(*mm|+y-&I zk?t@ln-7-{q)xq;FvW}4_H)*t;TXGjM%x1Yo}i{1C0R%pTo~Y00@sjkcfV+;nO`1^ z18JWr{UQgoJAKgBZ~DCff|;skVp@+P2`6>j=2-dDlr9|jEX$95nJfP2AcUyhJDQ!=qjFla_d{>wnJx#Dz_rXaR}wBqrq zNUQNj^(Z8t)z8i2Zx(sg)%&xh@TT|abK(}rAe1Wa)_d?@$=|ccr~DuMxMA;O^bp|a zJmDph<28e=Ns|kxNEm6kprOf7I9k!d6^65%Nn9mf`#@fGD=vC@lU7$Aj4=72y_Mcz z)e9PsKG3B@i#`Rnu&uT1@VCRN{_vbuhEf^S>Myc3$sM#={kkg5NutigkkL=S{ax8s zgjd~DzLl=pfl+#B`Y(Mh8WjI#9;4m7-Eg)ig5Q%HEBa^9I5Ub%_@w>`Ou4QxZ2a}Ft@r7Lh^isH#B}1`YdVPm$e?9wS*(Eb zF_~*08$3=5CnrtWtip~DllU=ybxrT``hWFPDQX+^3+SW?6K*%qg;l3Mxxt zMN4n&7MI*sN}Q{^aBVDktWJQgZe5a8+v8f5id*7YpbxfKurPA{R|gJn5KGvp>*v&C z?FG3kK-I;gD6!A-G>u@^&M^jV#luG6!`Fi9wNTeH&TtN{;z98M6U<7?QuT^4X55q( zvKa~7N?vJ@q5X#f(JG!HwIGBz{l;B!Pa1#`x@05(cK!o|kDDn{Xu5tPcC?=IM=aA5 z#%;7I$-A#Kix+%EodVRKmNF3?QTwMkdKb<_2MzGBuW0Re5wbVEBhr#Xxm$Nsnneh< z!R%3;cX++Hd|wvow5vAzjyxp?{89ekMK%1Av_5e+EA6%Ode51#P{ zEaF!3{0-K&dGtFSW-sKu`Wt}PBZ;QLiokUH|ob< zTg=-h+;(;8$C19&FvI9RJBZ6`u*P##W!7#v>bnL#w>`WI~aVYft_72DjXLUwZ(n(il1MRu=8nRnCjW${iqQwKdE+@6HJS{Ne*906#j>0XSyt zOpP11^)9ZnDU~5@nE^S6R#jvXzrcsrgu(?M4mHHlzu7s(V=$m7zVlf?g4(A`x`NEY zA5GfG1KAzd8ToMo+2xZ&T0Rb`#Ta`H101Bkr_34^W4-Iz@BI+tIJ@Ke04klP*`t5k z!1=jgF1ur1C6e6EKCwJiO@iv%Tpt3U?DZ!ojnNwFj@#bRyf^j5^5H^5^C~pGYW+cT zCAmH|%l++tFsU{qz5oBz5G@fbG0(Zk=D1f+-`nhYq5WZci04ZYQpqs-GJQZv%ruej zc>3~M$ce<}=eBlu&2!|w^=z$loNOL1E~Gft-a&Q^8s>qBJOI7H3A7t#ALHIJwb2(b ze4(FMoq%?>$)cVKuigcmjx~Egca;)u5v2a&+U_Fyu3IHBcaG1c+wAbwca^k^`wlG` z2)VlN-YMdsqUC4nr~AldyxV+_7F#8it~5dkPYqo^HNE2HbG@RF`9YvLAjG27d91(Z zKZ7aKF+kF*yJ=h@f$$y2MoSk@P)J|Fk(MGQf#{=j*aYCvq|@$1Y3npIh5xzz+oZX& zl;PQE(7(wWx(gA=a>S2qzwuu{ z$&r^$YAu+pct5@W>J#%*3NEySmy!Y3o|=i@o1+ZU*|Ga$4|~PywC=gs3>qjJ6p1I+ zD*|LqZj8-~#u$zEEEoL+Fnim1NGJm#02?lnznaOoSyqWeXW%C_r`01I$HWM_m!zE+0q`u+L zSc$b$)0AGn|FS=>IBzaW&)qkJGV93g42aLD#~55}A~xZeDx}1LPf0Rh$J{TN1v zxa+-}u$M^K|4pX7`>trnA)nl|+0)?bMabyMI|YJ^nITW=k~!Z%yRiOZFN%^gvW*l? zAPF?7WfNOuFv(Dg%3(wcuu4G|~TJD23|_}sB~YFBu;X2PGBsTNudK;92LVX=@Y9_3#VBKGOz6I9-d7kY2_ z)$W7=Wa$prH4dBoqD_lwe&z7Zb9$Y)#Y8dsOnYkOmuv0Sp5OdgXI zwi-W^Pq`>`!UiR7hGAF$b^b~)K3;t`QJB!gd)*9!N`SBds(K7Qyh)46qIkgpvEUl# z{ZI+TF48wO;;B;R+T8cs;bY|jqo1{>f}nGtuEdn5IB(28S6sL1X7YeRfkz@cH&HF4`+Bs~nKwvd-b}pwc z-Iipv$zYvm`1y=_{C(xfj6&MCYjoT(nNRq{C+N7!R z2uot97!k|IvKpvh62IVR0|yN|LC2Zv9RV&Cj;v zt?u!!CQ{vP7$BPNE|IQ1Yv*H2>zeYsMVkqEapSkdxR#qAPWBPEzY<5wF6mhOiD|TZ zFX}A0bJyev27901C2na`_w#}iO3qjzGq%e5!MAfhZMqfFGfoB#V`(<7Cq1e6iiY{F zJ*{Wck{RBAHrwfm`)it|TYcqytS2=4-Pc37d}}{)piOn~@4{l~)f`|oLvEAXHjAL! zvSNqT2Hu&XA-S@^s54oK+A;?3+UCVU&)$|-RBQMnN0vK5EB69aS?4EmRwL%^E{Y84 z2R|&fwpuFIJLSWUB1H9B$>Hv5!Z40DRsgBt+ewt<#h?S{nJJFA!i zeH2viioK6+wBjpb$kzBr&HE_;x%|?mQCJ)`p_v&F z?8j1#UaJYT`L>_F(+_!W?5T78H(98^yG&KhZ=1?$q0Q9F-7a5)$Km@V6i)fJZ+Df} zj6(c>2K1}N5l&p7gX`mOUhY8d5f9{L61ycfd?)gMoX>=YTPCbXKx z+PO{mA}sIdcXk>pXjNw4$4(V&cxqE%4ZFv5sgiqJZsUlDGc#y1-TE*|?4FEtBxi`9 zNX+Lux>AHQ#~D{;A&p+LW!=9JlAJ~>3VK1;@;u&N$*Satmu{0?tjsfW0Bh>}xEVd;FU>5@rsPvUd)%l^Ie1FPNwJ2@+zq1i8W?%Db*tey8SfJ1ibce z=;kpoxM|3E$L&|2MvnL9ltbpL77pd1uKO~KzHmKJ0R=m?Mm!itwkF|* z+k>qk<18?}vel{1kH7sItJ9Wv{c*>Q>Nx>?f1~-a@($%~VYSGiHS^x|Z%$ho?Y4)5EY!yuODp7e9TbTZrg6^IDWa zDSX;>yKKRCAdv`vJC8M{^e)tkEEI7XcZkobWbH)xGg-CgO<`3fD+T_JeZCXsE+kUn zUFuu_RI|!~{=GLfNz^*2`Nr(+YumiJhDAUG)H^CG_4}SB|EE3TaXH%s&6Y(JcQn$o z7)GkB)bKV(R#95&G;dp`W_=dz#J_a~#}cdhnua)`;s6kQLZqs6@(cSNW#Y;60XD5D zjyLF5$$`yt{Ibb*@1h)y><6Se_?H~|uY(4#)_dm?UDvJkQq5fTJ4>&3!pyvR7NxfA^+Zwc%(4UKF`=ieQ zLB)T!nP|C#IQGQ#`MW!X5D!npMc*oHrA?nO?!t0b%fMj6^e-j`w|Lja&lueh$#@)Q zif05W?4CRzqU&5MG}(EH;F>Sr-6$TOk^8OJ9UT@Mg)NNjglWP^r#UI#r2ll4iiL+k^%M#nyqehWFew4+VQbc zH@w)XcXgn)qZs87W$4HVqnUbD(ZO3M)W*}~ig5)Qwb}1p_d|AXMxhOW%`QSy&-0Le>MLKsInCYnw$m>43X6ZCm!F<1kSL9U+!0!)(QaSO z??j(UCunuPQ^%@F-(WI(n;Np9{-{?>O?xggf1+-0>L4~@XZq~;rz@@|H9zL$LqtVM z!HU65X5&MVXo>wdAEf404E7S9r&hS9yG7KJMIz2bmcALn11P|ta7;x;2Ih8}P?Nou zhn{+y1fGyHD@Ql>)XR5mK0o&^tv#Tu0O3D9^(*ZE{>P8Ml5?NB2 z)|cGXUPV(tKR9!hi=5wKy&`DZ`+;a|dU&J2r~>uc?Z>uE_IhBuUVw>#$Tj)-m0`HC zlR-Nz!x*tNpT!vOs?twuWP2AO$#Vb#6j zE97`Tm0o>JXBziLdH=rTDFUzD=C?g;=@7tQ}`= z+W8ghts*0&`YKI9-nbYjDN^y0NWOSH2jqwPTA7`{yN1AqO<7q23aCrmJ2!peF6_&} z71jUg>`Jbm@j$+#@4o<6gmCQ^jRrxGYw*eEw*^MieL{1IOlMPs7H4yoSr*cj~l-Wmg0Z`Rp~MZyE`~S5y=M#HZzuv5NK}s`GI0 zBrCDu17%C((A5OyAf`I!?x|WtXCc65SNyqJf|^}`p*Mzz{r=hRNwh&2DuP9PMRJv$ z(dNXlfY-aF!lRXlm$!9%hd-%SY*5irG+`eYaFYw^J>b_u2(RY6TS!hbMm zTP}nnn=MXm7qgp9Xv$K^-X4ok6kVgji=~HA1OLJ-ZE1Qc^9Aw+iBF{OQgsf^oDD zPu_zDqC#uh>wj_@#A+k7*@=TToEcCNHl)O&?Cvc!Mn~hfqJN2jtXKl@*b2w69Ts@9 zg^FuOsB<&pLKZ&l>|DB*7hrhVQm>!5TySmZm)4Pp=2r}MFN=G{nhW!?ewqFhi8otK z`1_71-RA;lZ)t6BJ^Odr(qXFIHCqU=_U|Ah!3O7Nr<_j@U7Lt#J9teiJw9`k>PCLx z-t>sRFIX5D6c=hfOX%7|h``LG2!BG1C_yQ4!>lYFo%w@q!B58mjD;ZM`*Y^;65)V{^{0QYfWL=<8Yj@B=bv(mHoIZ1YNQKEW>to~u0b$qxlqj9SGI6{ zn-;6ZVyoVa=DZHTX`kAY*Ueu8USj+<+aK?8NC8psd&KE@fC0&eihtNs6)R@%gu-&+ zMW$2joIzZ1G7-wc#K!**XK%-PU(Y7X&gdJ59-Ae9!Z~}-1hTc5$UwyhtoI9mX=3*Ax!&U>3Y^{A5U2V`c_UmRB8=fN6gFs^M z2?7@8B9=T}Jvcw%(R(nwB|ylwt3(DUj!$l8Mt@XIyzn?Wx=r7D7&o*X+sLd5-z1Qzd{URx+%h$ zgcOZ=DR=U+U)Oh|wSTVcwiydw%3y4sno8`kG;l1xquK-$vvqP5_bt?N?=NQa!xwdl zFx^td%p_I!&bKkZ7RC#qt6Sn+Z&3L}+pMQ=q{*R52{MV9!^K_CZPUoZ-!PzjAJJ^B zWi72++>%mKQtU*ZM&~uTTOSMY^UR1{p%SU5r|SZYR`9k<#Jz@>)I^;KvNW`5#{Lf0 zlFV|jstE7JWf_M*L2jLF6NOyz2+fmzrkR6?gn$?+i-J5w#zm%QG z!DbX|jZojGs4Quvail=UB)5ekd_6zu?x^qA*e;A|Ube_qCP&tN0xsDPoVw~iEZbvl zA{XK(LUZPwSol)nZyrr0Rbbex$Ev4p|0cv7jmKleKu0W?rs@~-hoY$4+eLu-rYIXcj73~o(Ov_vsRh0>dAv^ zO10#jiQ8^N<6<15x?jUCs#co!!^md{hbew(;wIluQiwt8hgfJZj*mjqL6?LY8|EyVZRkb+ny9(zGs z^u#4K$04eQO=($SZCCUDTTDbdZb^iCv6Do^e^G_l!vNH1Q*nHolooFNfc#2qa{+4| zS+G>wGvauJkY6Pay)EGr9n?ypXTlDwW|ZKp2}&y)$t;;C2KH|ca`A5S8wsZY#8}rJ zZ=#ooSIB4eC9hD>!Ne!n4J#qORg_iNgbcqpx-(l?Y=32j4Zc^(*$c#_dj~xpPDzx% zkboHh*#)6&R>O0zov5`uWtmF|8T$iz&%Q%&-1|*qfSj9-=(q_v8%XV>5)Ex9J}UzN z#ur4B_l_7MK0Zx~3fd=#ek}2ojmC;8plqLdw-Ddg7%zQr0lrI)@-Mvnsr29*%bhTq zqj}-V-7hhNEyH_@d_ALWvMY?J+PpOeZ%R5VXA53q%U;vqFtf0TvD{wOy&)bZ6geJAQRfCW;~TGi&AU%Xz;XFhorLsYo4Qx;Ka3UgCKUMuuQvU9PArR~iF z;4b-5eF1apIJE45%>%on!aQxI<;&!YDIETT#emF`wZAQUsJq;@_*1BI95zW-AHw3#b~my-CLo$BctkjYrD;w2a;0-bSdF;x2?uzGbuX^H%gP3;|DmR%*4pd!^< zter-d^SwOiIYEip?r%g07wC`#Z|zpj$ynw^bo`qx`k@K)+?EI)S}$g zS12lzvbVu*WzSK)cu33QD`YK_X*sqBTF$3Pbx=BvzxwV@2L3{Qs*Q9uEeqBQB8%~< z)Xy;MW?tWT`%?!@-T>AUs`bxnUCexu??Z=U3Ci|N3#nChBkXSyDuNyxBYz^i&3i?i znisB@8Y1Py5~a9#;&08zq$%R$rw#nvHb-7jLMP5H^>go~x4DwF2U^EE zYUe`ovkom?TGVbkpkWXlMM{40Z0`0C3+iclTb>vmDfX<8X6N>A)Qd&OQjLT_FR+=2 zbLM-wvJ@w3d7IEu;?3EVfJjPvs}oYDbSj$yKm7cGXr77HO=AzRL@ol?qbo)ss5I)iSEXpNjP-oTkPk*VyS1`dLRF zzH-k3mIFhywU+Oy?W(Tx|2(~MA^E|$ZahY<&?nAT3i+%e=$qcQkel^mtDCp_bC^%2 zw9p$&{5>|E+rO3!-agU_s0f!>VcoBFR6Y=XLC-DwBY=Cs39MAEtr-pD)Dps^@B{3l z&+Wf$0vj;%K65-HvH1~pK2M8L=Aakfk6G)B7A-PAw0-e8&Jq3s{cIPnWs1sFPMTTt zM$31KR!RWO8(uI1jR!fvktX<2EDyNKjbEK?tcOi|1{&Tnx(f=?U(6^Mj|?^{DoT zBRSbBxqL{-fF56)uv*LU;y1uegtNl|VAneL5}AxBY+pw{-CYkB5pE5YL-2!}oAl%C zsp?ka1EMRjr9~(wXuOB-z6bqz1skEoOitU1<#)5Boa2xAa-V^&BilUVJiN=fFFoO2 z&7EQv=Yl!DR3l3GZKkyCD3?<)_9u}cdult6HTfsz5-sD5KZ*~CPXVdiNEFr2zxC{> zg8=6rApOIYh?@hxoj+p+UOUzFRf(_gIiCtbwh$hoLZ05dEx{Gso@WaCC074inECZU z#HlgNgCq)?^h2x9I8Zgt^$W~A-#ib6cy>k*l4rfM7*a3*+*H6d-})Dif`R6UeQu1P zT4%E`aN|fI;=t{B{>o4NkgH+xr9ANx1*}**pJ7TjqcNhyTOF>;L-PA8S?%#!QMU(7+k(--kp0ce%p9rYanY&*HPZfyMdCCyVdXSt$~?%4=tsn=qy#(=*=bhUJ#w?-;{fGXW~#+?LqbMqHPZ6Pu!PJhbi%1{(4iFg?nx%_z719 z7#0intL6Gx9t0)YhrigfrM6xNzindlva!uK?4KldmUi0P@?#5`E*)H6XC2jecDiSD zSuPahHTK&qWja0`8ibFrLv@j|*GQW)RrQxtB=|Q!zlQeS-+8>J_yR0 z#{Cbo;x^a5r7v-+7jW&efsUE|*;IF?v4((qMZfD(?H!H-_ivpmI*UiUZjkt=r41{FOC8dFFo4emQX01<*s8vx~T9yLr zs_o)&?P8wOBX5*NW&Zf?Y2%2~0GX}noM|T*Ae=zyrYtj3 z$DUR7#r8xG97A)nMfrSFYSvYxI=_;iqk^*NH)9H!i<^Q9SlmT;??@SpyID}wzgHlJ zmnf@T2z)>_or9P=34KM(^Ah|Uh>(r_L3T?5ZYlpnDSrP3LniwB7`)Ocu`z4oi#C4v zb29Ys`S&mYQ2cE_s=fn_>Y0LHRxM$7HK-Sfcw&S*J~1u#Z)6Mp)3U6qH#0CXwp2u2 zH2%WfVgcVwcwZ0*tbEbSe;uy<8*pamdM~7Jd~_acp_~w!?N6V``MQlC56X)DcXKis z-yV@A8+_Zlwv9T8@Yf?vdU`l!@pcgvJRy57*v`aMT9M3d@Wd8xN!h-h5Gc{AV0CQm z0uLma<&7h|nE;f6*txuMYvdsRmz<&fRVPE&H23(qn=JL|^>jzHK_k?!J-W2T?VnajSN0o2=%XFkKP3Z? zE&l)LO8~VJ8{jll6Bc>N<;(4JyPcPu=QKRROY1ZFG-&CLi4(p{K7L%`mRN9`v|E7& znK65FPPsK0ln6Nbi}Um0G|coFAi0~o4h>voutpLz#1Kn@R1z@3jTiC3FW_EAN6{}# zehrwA07XBi9Ng7Ir@zXxh0(3@ihSXGCcG@J&~)NV?*5z4CN zGZA7A76JY5`{Vk#T>Rwp+`MRMH*AV&Vv;y|v^{t+ZHdF88iEY*Tn8}~NB?y6WqoYS zf8r;xO_PECPzV-;m8u@pp7E`F|7#V_6(;4+Mx&o!?Lw;9IpR)=kTwR-!INyitZQXT z6G2X|Ts7ekA>3%Ad6-hqag&{+_c(z2FQhd%`QIq6Pmw%5(anhEV+z!{G!Rb0iFM8N@41F;khH-l zT@WG-ZFU(`1iu=jscRyd>F>yUa3W`F7>y)-A#jc6m6C*)`uiLRIx!-+#{w+xW6aql z10)=kSN5+_327?SQkaH=PQ{sD1_P<>tAWrb0p{_u(aI8|S*Ob=L)TNorR$3C79DLo zxmYZe69PYR!?96N$RnRbN#velX#pb9dl-h2hbGA;3l*Z^D0{l|XzC*6ItRHA_*f4jI zACok%Hae;l86cEEc?<*5TdA`6-q%`wGs(wmeRvM>LHBahB_3|4O~|jAU7vk z<^k4uiDMjUD4DC7)2JbIZ#B$(zR z`Zb|+#$;}Y8~$EvRTu^XMu#L1Njgq$k71dvvLE0q5QqwpJpf0Vhzzp+xaPRWRcYaG zKk4p-yRtx*+|T;)MFn*A7bM`M2@Qr7|>muuLQPdm}VKhrL zTKPE47Mc$19#%JA7W=GEJ4;1<_>SlSt4BLmOwNbiLi{vszun!d0b;#Rh<%8pFFe*9 z-teQ=muQI7scR#rs8@H-gT}76PRm1`wY#AcyC<8yp(lK6p1#5pvuA^dT#Y2iQxr&! zqsVYV{X*n(0#d9K9^B|o>fG!y@j}Dd~D5$*ZKD@H(yCa*l6zZOo{i!10Y12E3nZAS3yjrdE?GpP>vVu@i+VKJqOy)KEx-2YUX!~WrJH7tyjSJRS{yJ23N%NP1je4ytLr<0}Yoo3R;d50y z`}R+&2w`#o89f#Nk?Z*Vo>ML1B`2%bRco=GZ_q|4(hEXipkY(Go0j!2y*rE7gT19^ zYwB{dHK|nus!@;d7OJv0>0KN!D@bQ{ar72Y7-b}_<*VbGdzA>jZiu^C+l>G}_ z#aDpOcF67bXO|5(!af3E3;=bg;KSrj0ph@jOru&m@4J6-4qw%!o5)1F= z2>>c*KaUTe-~gudkGomHtJE2$kX@|m+avUO${ zX{DY6*hx=o)rZfOUKPYtCk!rw57j>wO&Rq0?ogb8!;HLen`&L_r zW#gwMZHtM$^*h-|vW*q2sC5G}&{E(nzkfT+72lFsUN(`+s}w!qY0uRn!mrm@GOP?t zE!v3q3yj$8L8j_Vn=#+3OP6@CH2n>IhJE)ZW}F+dtuh?+{#@Nc?y-!7&_pvBK{c$# zXR*s^DSeW1Ym3^CW#iUahnFJiPmbX>`_`fe;`#pRGdDM0c-fHp^8qiFLEmH*?G~rhi$K)9-lZYaeidHL zHcZ!asCESM%9+mZTs0YWqi%AWi9-8dtw**9af4qty4{Cvh3lA8Wnfb6#U(cwvZ!xm z)wXECrLFN6T3Y3CurJ-5A+Us?&q)m1j@zD0GgP^-sKTp~Je!^Rj1`dZ&tvG5#LVxFcno<3z}F@b%e|4Z=ZswC?` z0OCY1+C~WHnW|0zOm$B~uGO-&OUXW(X*ECYA92NisjTG7hiG`z7&g2@*8#+4uhCq} zl@HUeP0~;4?vk#+uJHpd~zjgMg=7#tcuU3~++0$ctseYmMCr z5hhJW z@T(-NYrS(VXCQ^TbAeb|QsY&Xa!Rs((Ek{s$%D|<6Y_-zx1f9u(=w@Qr`9)_Nd!mfp*`pZ{aJ0$wkXi2|hSv65P&=-$QbT{%eb}LS*pXo z@m`08gQX5iGx^v?USX_$+tPfMThma2QT0naxun<&kSv||2LQ5^+C|BDLgTT4mkc=C z_WIWHF_u#1aJdqxW10z_(nfN5Hz<%ga#@j0RRiW5s&yFLJGBPI%`!;j-o7aH8JnhRDzmbW7b$+nkUw7}LXVsd| zupYWi99r8}JkP4{KJqkO#}c>&Y2%TEo*Huek#+c5ntr2FV~VU7`<$Hf({Jw$^zWU6>+3S{UcC7Cj0AX0 zonPcn3UAJtyu>QnisXIh$VllMC5r%AR51Bcc(2uR&vHTE3hIFBegohQ_<*kSL*kfxdYzlQ!8 zsakZEAlB-LB;?dC#-+!^+jN7spi?v*SZeQzbt6KA%9SGrB?`Bq!j0vCPIp4KJFq2~ z2Ez<+BhFiatV?xPcqEgUN_gZV-f%Iwg>E3-y7FeaGyIgO89oySad&ne{KIC@e#)C049tMTB^k=i!BoErNxn014n zRvmG(eITWV22T0aTMemy+`n~S8~kCD=&C(nci)-&xw_NldgA%lD#L2>YAZq<+-yMY zI_R(8CFSieEa|> zmjWPmmzZqQDp!_qs9gpjY2a*|+&y!73*P+(dQX8yWnfHlq3 z{4Pa2tEeAP3u{6dW@vAU`Tgo`BGgTX(fN&wO;kZL^%XOz7mRxF|oK#8)aq$>e_UED7PDA6azrA-1?>~Ftcv^8biS*43NP9A4R%X3a9)vqa4*v};ed^6 z`0Fc~*!ETxly8hg^Kls)ioo>cKpVqLIJW|1ZZv@AZS$NSIq3{{zYE|jKH6a6iX~uO ztG)}oVuH$BbBtM!3hRJ<3MK~e5#O`m=nD89oHGJG=L4$Bb)N%!=ejKwH{!TQt) zVt>nNlG2=iN&lDYydK+Fu0FpVl5DvtJdpYoUHXXlPcp!14DwS1)`Bl)v+uvV(*icM zENrWM`T&-s@28^K7+#gYIlEl<#sB4hJu!2$!&7dcbzNnNgfHGLmTy=!CQWK4v8Cv< zAKUsge^0xm3?&7>;o0$s&PUXeT7~15z+X?X!rtusZ10YnG@+6Nv7}9ZQu*Z}7Eu@&xf2G>_rx+iCS2ROP@=^MSPuvcA{n|Cb`7rMh z(EY0hL{sgMAAn{k@6}paM{-L^!SF^5snu%(8Nd@>>`sd-didhqPAbqh+<1#WaP+b= ziJnOZG9qh)Ut>9YKKeWse$W7Z!B{m~B8?CC~ zPk$R%1+l_>8ff-=kia*tMS%%%hqFc_qEe6@D8Vz#vkH(VBJ`#Qa6e+iR-&slIYsg= zk8<`#)wwObrFS$^v%I^8uK7$nVn=!XR`Eg9@j z*M|2;o{UF6&inA??MZ|gIP^?hDC;aGmPp^2qj8S$<|145-)89^yM^z*=zQeP~+>!*}!5Fd=t19!Cw8=QxX20el`u$t!{v9V2?hW~H?L z59g@yPip>o*+7%kS|6XT<&D0-KOA;^R+a6vHid_8Al0_!IUttIYYdkMRgi299+S@m zn3I6e>A#!9=-n^G|E%ul?i}8Q$@YnenlPFFAmQrAR$%i+O~EIL4>;P;uAvL6%L~{uXx=bITBq!?Xfr%BAP$pd@iG2(h)+`uD>i;gBzFA5$>P@tv4a29aWQxhe|K)HZKH9RyzmzF+V*nu04WPg7 zf~>%4Beo4F18M7g$_bueJKhSQgfF?PWoJ5Ye@CUlFE}J;D7JN}0n<7c75vaTHowQe zt)>P1HK5wY#T-XtzS_(COrhI7*HSt-oDjZUB=)UEXvq1sPA&Bh&f>%=NQYfZt(n?^ zvI@p@(L_3aR5v(D0-WkI{35Uh{{t*_->rNjN8P~{*2Z}! zj>T-E3WHldEy@BQp*04ehY&k`w_OD|mus+ok_rY)GE~*H>eD|1B^uYu(&Ej z>NOe#pM`*0uC~l>{`Bm67;f8BoHzp|wt!5e%@}tUChBU}7y_}|Xt<+N>(MNze{XiP zIH9IMZz6uf?nGW~?iBA6b$XHEOU3&9VOYb6QR*v{LhCI;wIoi(N>q2u49y(&k6eOz0 z2?L~Hux}j&ez~8flv#Q_(^5HoMR_c_(4m96<2|+8$Uw<%aG(mE*$j0CcA^96ewOsC z>Fbp`k+6s{quBH0UK@WiL;l1Bflg2&(6Byser%s8(gT}cVtWxX0>uyeJUX^ffM1QE z63or&e@W{jrikv$_Gdsfnu!o7U|eXAC(B;~hiiOSaxXkye+m9f>E55~Trcc?p;uiv zG{3_{fgjs2Xb)h&d&rkh5N=}t*nQS0zi#;upjz9IEsHXsiZ^&WONb%8u`|QIGMSZq z%W^?oQ<$b6YYUkXDEnX~zRNXr{wzz{)({Bk#Ar%GXb3~$82DWDgCd6NkId@5xABBD zMzzX5vY!PB#iyg?0k%dIvy(2@akxgg2N#4_1Q^8JemLJ;fPnJ_q4?1CI%ur1QIeHi z?2~@P{iR05ko3nYXt+{F@K^ADa%addF{SjgKpUJ-c)&A0H;$|a#g%m2$b5w~PP{bF zQ>@;~Y1`w~Jd+Y>7)p3iLZnf0@)ihz=0)c-n#~4XSFoMyj~nZsPcA)W0kjC^ADT5z z3M~^|9Kxuw`1t%;Fso>ujeJZv2^J=T$|FPhJR1$63s<~*hbE2y92Zk%ME=roaN~So z!Qqm&Ive?jHP^L8%K&+&LJ#ifK(8wWt$$_PAf=$i9|R?$@%`SyI?b@2i;;k1P(hXp zKNCYG?nJ!HrnJP*IPSz4@P_bm=Y=ixzSCS*`RJ-pana9)$QU#)0#s?E0Sl`FdQ}>f z9{9~hJOW&h_8_d2TRb{XFQ|E2VH?G?VnKjf~`TF8(~ z*I|J@Z=}h*?pxYKNG*Sz#Q>xX%zqZ6lJ?xOMjHOd-&vXoH9tlyuoMD*ROSA-fz;XT zz8-ySVoHY;LEtw;QNw%9%}ajIuxjCG9EC!QM|ahKd33^YOX+*f^4tZLOj~JB$Iv$0 zd=zplJs`W`t^EKV&b)SLwhxc%d*<7#y-$oJW~x#uuPI$n@$^mM{7KKXcD8kFo{6i% zwKz)fol`!*eAS?)|H{f1#?`GRlbH~SW73)wVUp<%T&zAJFM-0?Ia(jJ`h)3}PK=cu zAxR3YGAoceXNQwwO>p=k_(>p?#Imp7g23Kyeka3df$g36G3KO3Jj9S7?`1`w-c5Ij z@vW|w#E4V^HUSA*nEy%iNpys10T|KVl{+HY=4iJ+iyY!&)2ZsuFeMNWAdF>6f~O}t z1#tB4Ur#eNc*M3=^KS*4(EFbjF8mUWW`+)!Tg&!=Rb$ zb{qFN`q?d@aA(-%wbG53RFFeSZ|5HqNQ^7jTh`ch!_PZW)@Oh4&~guSnQvjE7<`)z zw#j3Cq=FUhm|r}PDX>R}qxv7_z5BR8tYo4LM6bk(3Rp9o49O_td{>=qlT|l9`<^DN z|0y46VFyzbfEtc!jWIi{U?Br1HJpp~d~c?%Hbm z@`~Nr-bm=7il1MvJE-kw1IlLcIKNk3Fv+!+gMtAp4T}^FNC-U1%@HCWo4T_36$y*O zOogrBb0z?<$4y-fgWNNw@r{eM3e5ps{U}PNQKXr=cl};e-KDr7DOM-xCo+kh0r70^ zbZb-ie_t{h%FAfcZseCY-E0u!&*YJJxcc1gs6Wq&?0Vw9#KH(<2U5m+bbq-njrR;U z>u$_W)PbDFawhaca*AN+Q@oES)^_$oNxC}sQ*e0UqA zqR%u6V~g?)3}o`@{@`@|;smp#w6n(wg6bgFnb)ktMUTa6V*%KT^{I4F%(%m5--6;anpeQ9J4bmW8(%s!6q0)`irlcE`?%12& zbZz3k8};0C&$!2M=A6%b=CjrsrQc0+D5zlrPJ@ZOHfwvO zP9zR*`+cCC=Br8*g3XAe9^_bYJ+pdpwH5Sq#5ZP08{^=t4r+fUI$GqdD#~|?d(wo} zc85(3z40~f0woB-nx11`u06%~HHVUF-*vqh)V|`2=0zx-#c8Wabl7xGa5KrB$$rQlgF)WyJQfwM-qBH_tm|wLqaM(_Gcl0s(o)K2qQ;; zQ?@{B2as5|lHi!!*xx^zpC`f%PSv#_AZ0*46Fl5^63MKG%%|3d&1IXGVTZ8eRsl#Mq0yTY=)qXMzg36f?pOT0=TEI zHJ*TPToEWYYlv9udN&RZPArKXyLb)nHC4bS(H>ht?>4!G&pOZBYu|Te?|}i& zaIT@0$ww5iC@kUHytiklnfjHv5KgYFkf4Cb^9@Q;G|Ip0oM5;&JynLMO!};ju zZIiJsO8DB+GDJcm3TM#`8A(Td&ETPd)#Sg8UsFPCe+04Tkm)QTklzi<+ixO(rVlZI zZZx**(jlg6fhTFtye zhbVgJc-EZR(x=rEwl|3~#j!HQP?xW)9P*rx+$*!vR;7i&H+jSoOMrL)G9uG$Z}oW} zrN;Kz;7+)QXSjxnm6OiAV}u}<;16b`W0!^Ku=3%bs8F%MrY;i9%@jY*zJ5}-zv`GT z1O1kppV$+I>0(DA@2vGtxW^^t!?*F6UboueiR(8bo^JZzF6bEc9Ccl+PHSh{eCsrS zsB>Tp%ijEbiyi2K;!>g$B-S&sx?8E-TU_B9g}FER@SA=F1HsZ7+o$SUvIB>(mWN5Z z_&(xT^IikcvF-Wui`9XE7mXm17Z3c9$PNytme#C0&o5~05_|w<+1JChOEUX`Qk$`& zTv7w;%6$W!`7=+1kn{J)ht-0f2Z~Q~J&yJ94I5$i@ldSf0-EGFt+G4P|- zz^x5^M8-pxF7nhgr_T|rgPGr!*vi@-4EykdC6IV z3CDrHvF?Xb4<&2Ztk@KO5lUg?e<@*O`9;D|{nq*->P_@pmJG!&uLSG9rCBQA<0D(_ zhnuc;Lt~nJAO2En>V;jp&G(FW4qs+N&ld+c_M3%rjtSyOB_&h;nk)1d8hXb+$|nEi ztH+Fg9*dTi&)=W(--CU}#Si?a!;_2pObtI8~HFZ9m{VSFxq!7)kB4S+HAyT~k>u);#49=jjs!jvyYGb^VsuDeJr8HY0yx z)jK#e6m_-lY&pM7`i|GqVwVtp_qd4XlBp3MZbrOWH@37Uo7CCvmclsElzpFXy%Ds| z`%o4yM_|oo9r*E@B{X+EIc{|O57+RM`ono~lXs_|$QdnSUJ3E*VW+)z8`Lukmkd6p!tVZ4#J~#vGMTMzhAC;bLoTW`n z^dm>+-T@je`mBmx>$S(g^Vm*-q<)pY$=I3Yg`^j6vm!e!gTdW=n!h29{6pV$zVbJn zQE+45TQ*KY4tV(VgHi7jsHX^mletQsb1`8Zs8E@d=Qzn6k(m1%70#l-_~g0g3E300 zhD&@B5ou}mFWw;v4&^#T(7I<)dPd6&bqxE?J5|tE-zydGU-m7+Lqql=m%UkDOY23t zLWjKS^YA`c?&D9%&(cYn*k5rysvduoZT(D@jgh8TTKWYolDD!ODnmL_)gW`Tw{l%i zTc8o_P?C|ByE?4mG$j5#NHn8F4pzAcdTk>N?l z&unFoK4Plt^jd|9oPW)KVWf}!F!`pbO5eL3vji~BT z-)P4%cBI;|cIi?rjQPAD{%GXhIbUy!4(eMA>*aMNU*c zu6$NG@|2c+3z&$&RIs&9R?yX3%33pJiW<6iqa##iv|^NI(OGUItxpql*M6RxyVV+RXEa08PBXSD(tPfy{ri|k41a4LJn-~w4SRDiG$T*>+>o}i z&yRk1*NSY1fYK~yfH&x;z3Or6To5ka1CgT$KO>E=U_reQ%?o<}go$0m%v17Dns=aC zdxM`{fCpNsR$u^ArBLKUINa%VP0%}v{N!Uqe})T2On z{{{`CeColVo3l9w1eF|do889V!Q3|m=y)W8@0qwJ$9tPEk;!`Ac7M(DcAkFN;HScf z$F)-esS!`cT^#1lzr$3NH+?LRgdhAj)X4qD4{Z3Bzp+&^ctQM$$yk47IhU@RhDiB! zhqaoLB(fF~Bi&k2*r6PP!8CI0nHx#zcTZCA2;!it4Cr+C-g8YlIr5uEJd2kn6fD8NR~!Rg z`2CYkgUhP3{2PO;u6C)AA7c;?&~$T>d5%}23WW%9NLc7wvN;fIzLO`zB+&~fa40!Y zaCQ|C7_x6yR{DN@-HBqo6gLoRh=|_)H`YquQkSCP;l>TTD9&KdT;%x^<`h}~yYT(p zEL9C*;_1-d?NP{6_%DB;&pJ)F&46c=@8amkGm_LaHx#q8LAd)D zy2F#zA}uq0FFX6o<2gY2`HHR{f&%yNO1Bc8cH~aShEXNP<%fA)1bZWkzF3dH(jZBc z!+n+bINa6bOTmaoq@lG*oqKqPG|E*pQxLfk>NJG2ey&Fr05d6i0v;}YSO$X0%=^H3 zSV$+JQZg+?;+~h&lxL3eikItE1kzDa6^UFveY#)AdpXi}?5$-AqE(JH)mbcs41$am z*{19#`R+X@lj@-%Ev;JA34_l9zDp#}${v|aa-|3lI@BT7;#r37vefQc^5<})C;r#+ zq{)V?#Y*I0duvD1<}@kEMedF{k{+|i2_lQ+wzU|>Hj7^VT)5TjA^t#WVP;%8+`4#H zk!(H8^waQz<|tszgHtn4_w{a*#rhXhEgk@_j?9;B!@`r2rq^=f?NcRwH2MqCDHI;kGzNB=(rO#+AzYRK2sjEebVB1hd~xqA@dSPmi~&{f$CC7Y`7d1=dxGTFS`D z$tv*MiCg_nbsni|!ZN1NteS!By~JSvUI4Ii%<_~jdHQ!oi+mCvcoy1fy{uFO#< zO#DnCc1O9)5>&z$(*fm0>rncbk4~dz-jRwS0Epk_rc>>h;3iJ`AXG0U2oY|?<<3uI zczYEeWgw7uZZp}|=Xn0oYGwt)Y8d-_(Yo%i;Et7Xt6zwDSMED`E{0u`WaG3A|Evm_ zxq^jEZ}G^u=W(%liqfC?!SrW-xIf_>l-A$J`NRaGpq|#qw($LVj>gS3%L9+@qomayB*Mdjv9q!M5W}^z(gW;5$PhLK=wlNd2zDt@MkPX*Gq(bT$bqxw79<8gXG!GQQ|bWz zOzzLIgw6O>KV@YsYw?*Yw^h4}XrpU=kRC&q=VxUr*f9sFMDSbDD=r4lj1@!0VUS6l zgUs|4Yo@@YK}GednqtiUi5XTk>%7FSB3KyNz(y=x==6_;aPBSSU2}{mwPieBfjRl^ z{AgPu;B@SAm?3JiNq9WvqWSVdh@2`}NBes|(~9M=aTXMLCZ*Sce4o@EDGLa{-KX+c zMmK|?;Wv$e8Yi2JnD*=uCukH3&~l=geq8gE8ex(AqPGGsg4hPr=^^Xv(A8Jqrr1$F}xkv)y*<42*w)Z3j~=Kx+l}arn}am4kyrfFBsN zuJxZNy<>agD1MTCpPF=a-{JmGak5P^)StUrVxu!rom^aP``11g{L;KN!)^1n$zn{m zK8h%ATZXLFK(NIeKEr8=Qv5lIPDYL29GqAvr>HO*6YYp!;tL1}=zDoQd6q7~=MoY6 zgDpsyNaa6L2le2?C`z(+AZ0`n^G{EA0qZ>7R%*3>mFYzg|-bzLaSH{>I$x@YL;WPhy!@ z|6d9lE~G9YwFl6z#@?)ojm^8-^#XH72k;Xik!gQ|_^chj-Jb$CSoX+V5(uhmYSdIsVP$`saRZHsSZhq;7p4-2S+o1Mwy;47mamIWz!R|y8e>VFwG+AJJXjd zV(bfsksB)Ue+v^{&sQij(ig*p6OE>U^_~0%*4U4^bNti1DZl{PO!3$^#%4)-XXG9; z7ZGXR?3Ysy%4FFQ*TEny&7#KGwzjs-{ih#2j+7AEBXY0X>ifV!lh!iT-TzL5xK1*IIy~t9xzy;G0U-D1`ak*;|7d^)1s5pIVGGU$I}}wV zOW0=DWp%8OfJfhFa+-}+&52@w(WA{RK3%%PWdqqO>gIk_YQ_K{m*nCYF#$r&{Na@T zkEvp--MX2y3|W8#h#=}FYXZQdnnr$Dg^4li#Y^)F{`raNYZy6jvr)Hr(H!%e_%SyU z*u72jyVV|p{cpu>xdTv7jZb~bq!!XO3eJ}|Ql3pypXEh; zWSx3)9VO2a2#92MLj)dIZ@FKQH0kLLt94}O48`T%nQBkVpiAH1o8_}uhwkVWk9m>q zqcd3`mL8lrdj-b7vLIJ)_!9W4nXVdM_d)s+VtX}1BWfk^{cm3P^ud-O>l7?}E^l#~ zB$%vrd=ymS)i!Xkvp+Qat(7tP?C{9K*jk(eG)98IzVRwHrSr-nl;W{WvO{cWuc-zA zbL-2)Liu3YH!qkegi{apM-y@@bKam=T$&1Bq#tCbN@_psQPxsNF~M80>JVX$qeTEv zKQ{nRyE5ceM>|Jyp(n5Fnu)qbDeF`3I7f4tyeTt>w{u3ao5rmk^hS2fP5o>OEcGI_ zqQVpQWG(nwEQme8M=vUwQy1S~=@ z^)1^Z(l@ua*f(>{J_f+R-v-LVx(Cb945DS>#D)YE=inkRGB~8IUTsdB4#jBtv^XSxDX{Ef>p_ zsls%LH?Rz^4BEtcbLOl>l#Q4B)+QL2t%mv?Z@Yf2-*8%>>?~$=q_*EihRK_3{L*=E zAY3UQeMeEUoxa;ItYW0SYw=*;Gn=3sh9o=ldV9o|Ncu7PlXjyuhh(cwVP~PRga?m^ z$>r8FEv_na^64S!c1hWHAE<1p=2KL#5JVfiDthIzr2cMJp~m z+ZSp3rFqwvfk9Y#5rA)e{;)5cTvef${+J~KBUw2R>ZbLc9avYK5o0iq2fll)lPaf` zi4&ImWYGViWOsnfx@)87#VeFks8oMHW-^;{buEW>`b*&N2hiOSJsPRZXa@?c12R$n z*Lfu|k{9}WqF<~u6K=v(Wxf2W)Q+D#Tk`DKL@&8rcR~oC%#RCUS~)+dqI#37v*}WO zqdf-6d4-G|g1lN`C-Ll77|np1;~X_)vZ%bTzkbT5u3^5Mi^=vGN(LmLI;L8`GnwdW zI-q?xS%MUQ&$#^b$Fb;LgBzAl=qJKhf{6rd*I-GbpNl`+0GH{1RezDtA?W&Jw^X!C6H0E_7+?}5$R_DGzs`!;zljZ*A zOQoh+YHGRtL0m~&X1k~sd2uFZ%=IBzNYmprvrD{9&9S3`{u)YYIag-If#r#b$*t5tVb#0r{1W|~aL97y!opF~VdC;B zE7Cdm0yx}#)!86cun5uGH$%oCYozw$`k8*4tD^j(ZRQW|?2kKR2p5@y#@w> z;G|C~ML#s)SR!so5#XDJoxqrgNO#@$1qfkV?{a(1c?;#Ixb^^d@$E2Vo-`D79f77Ezi`H(J2J~GGjw*O9m5fC|DteiS|W$>&I2)@ zhtG`bX=NC}tzVwSSO8|E61}N9N^t@tF4i6Y!&10G({V#GI5M3#JsAHO+$$c~&2DyD z)HUeEoA`b5W|n32)KB)H*gG*XOp2|?BsTtlJdaAxx}lh9v?GBq`R1n?BNO*AkXOq8 z<~lf3`7l+~W#IAA6o4u~-Ij{miNYg#ppwoH)G|wRp5s6@)ju#`({o*_%As=?v@PHy z-rl!nLz85Ois$~Fr0&iyow+j$jFNv}B| zS#qS>dIP^vqv7zjYgPUt{^RNk+uU8&V?L!&_Y96Lxvv=SR>3LTuk7WFf$8`QZahX6^Vfb% zK8wQ;hjI2uQ_FHe@?&INjJg*+(KR*E4VN^lok~Bb2Ejv{^?k)}?#TZ}SlEvwk;12| zPmJ`l`)-j?FLiQSUzOWZ7z^0Et6x9MUeLnQsm@C`k>f0C*t$wp`4x+j$?~VI^%+KH|P)1>=elB9dHKMtj%u0sy(5n(sMc_$BWH!at@I&AFTV~y)^(z#b2)FifbrSqhI8ujOz#POP7?Pu!OJ7^DQ|4 zr6u;K^Ys>QV`GC{M8Dgwv-OqB5&hn5&1d}u;ci2ADL6l+%fED2(=>Zs00=OFi#@XT zXsvr^mbghb`0SqQHd@M6o8OsKNBhH11brCGr}@{E8Zd>|GI0Z|2V(~CW}I>Ly>WFV z)A>NjKzopnzX=m=1V?S)G5UU=F8poEI6iCu8u&c}Dx?{Dz|S~2EJ274`hq#8Ydvwg zntV~(s+FxoXY0Vxi}fp>QX*?Kw6yG&bFM)jZOiY>{_sCrx|dC@06_x;a!VlL$j@#& z|0+_C*b$wx52(KkVFu6!{dUgfS=aD5(V#cW#9(oRe} z7y`Ato2(hxpKcmpd);v0d5(<@ar;;&M`xgnF9IG!E|`;$h!VGE%vQ7Q(V<5uL@ucJ zr}I#>#y(fm(3cBMQVxW-70!}7nV5-VPFRX zY=?@CMvSPJ#Qy%N7VHqkSd*YiUIm-p#O!f zfy3I%ZZiaxOu;_D=S2zd1}67JvaZs3ZGZ0PoD0{gGgz4lw@VFfMBW4=$ET#P;0waJ zIAigL?m|G(S0Ua=2dCiwb60>onrncu!&Ow|3lDkp5Yyn((S8~iLV7T~LX?brn#E}q zn@l33wU0lk6O*-TobyiFdY@7}QSt^BTg4r~pg3W@rZuC-GIEv_nA-r}j-(iOLX-n_t7p=$V$l!=-iJ zV|_hwibH3uBxf1`y<}>-&ZKUB1gS^gm}`|i4b4YH@01?iXdj~^p>$)S3qWN>{uA22 z1G);LiB{;|ukUX%g6{NJf8F+Wo=-Guzxm4l3D8o2Z+67Ce-|sZinjm`$O^EDJ-KY- zMF2amv_)?|duKCOkHM@U_i=UpR}%5B8{s;9hFjWVF|o-%Bo=r$07a5DjT`|g4S2-T>>Wi9;La-%n&`uLRP?@; zL-j#$np|3v94^qSFok!oT+X}2ziR;}2s|N)n$V-mI%N>I6Zdhr#qL3=1a(B6j(|6e z)8^Ew`ut4;b7VjLqsblFZ8y60rZ!Yv;bgCuH@~|C{x}e3C@EmBr2Ic7EeGSq^O|c9 zB&?Ux2BO3ln;%n1mcHxfllkdv11pOi-b=Fn(-Qp8p*OiO9g3h?tnqBt-Q7Om+&K}D zn@F{*UcY_Yk#^)5j78EL`ner2^Bi0?qUf+;5PZ)!IUfEva`gp#U>|nqcr!($bOtCEDKSEyA+vfmiq5#7?PsyI-zc@W-_P zM(=+^L-RjQ)&Fyu&j0!+wD?{D+7%#L$?LR4E9=xb>`vQt13B-{<%n$yWblpdmkt!B zOe&A>TxfObp*6L?%k(mss612Q-Wf%J>tK4{B!RiycNB_E9=_%%$^AKv?S|=|Op@C* zNYV5lCZ+Jnsv)_d*sY?6=A^Gs!+5POA<%?AQ&)Jg>R$4-5?DA^ga@}JFh9LhtHL+7 zsJL$1JsS#~WY2cR+Nx@P!>2|DkNy{jyx?vrAY;X|-f`o{vHt45j8r)@=`NP4gvc3a zPz3fdd@MWHmz;)HTB;yJJw*p1M>V?HapNSSSbfhmE%PIE?q(RTZ5!i2Ep}_iLpqkz z%kN$UW3LXT@p$Fj3X-9KC>I2z7LbpA7uXv<}1NYoyR)~)Q3Y^F?#2lJvIY39vZ@pBz7?kVk- zDoQ2^IxmSXQN`#SsI<`)4jlXnFgtUjC31L`6x>>5`<7NBIzZ>6daK5kWQ8EOrHdZ< z@_1;Sd=*9pV~-ElPYC@%u6bJ=8>*XI^bVK5jEsy>OOaWG+kM5&L-0&T<5?10#>-#* zNXf<&JtS$GJT0wLM>PY)gsQtJT3}|9eiK5j9V@5$2Bm8Ct|<#EE9I)gcM6RT=lguk zt@R|Xt-MK(aXQ^A>oRiG-S^R9L*CBsBTBJ4=f5-5)q#; zDYo{OXI0>YB|QcqHLtO|P_Q1nMQQIv<&oP(J_ z*j??mQa!)m$W#sXvLr`lU`=hQB1j+tJ~kAM=y4W^uHZy{Le?l@MOlBKy}#HJ+CWAT z?9~z)Rj&=%lI!cgq)$N*Ynt$crdU@oNPEhuEXqS48_Ss-o~9gViAE3!Bh%P)YYmf) ztU8ps-347*I|>)ZJ86zeGz_SiMMb^mU!&+|ngg?H^GAIfT1Yh%T8gCc%v=IC^>thF z*i{TTxR^Z>zZXn!ofHBu0Dok)`UPhb76$*s1oz!KJF1)SKDy42+AR!nahx8jIjN(0 zKDU_alV{|e+9as~{Ue6hap=KX5{d&>UXwmpDl9i7Tq6OUr*0x3D9}pw@awd4w~W2H znQjVxG5|5eX(u;uWgR%Jqh0^)#^}lwq6f}-G|k&{c$KqZ>zze}>+l8e!vzVJzyMU7 zW1zEx`D4wc%ns5OU$8|kp>Ia+;WK;5)1TNWa5))lbmXWU>EZOGJsMHljPz+C^@9>b zTQmGc5aU4J7d1I2_YLTdK#HmcpYQ7z-=tc@{2p};BaxfH`SU1RjL$%W3A;yc{E0FE z^S(2tJDeL&QWp}?&`=njj}V|z?B@QQ9jn&qD)v|4uQs%k-LETcEZGafI zou5rJzi{-)bkX)?*YOjU!7kUiHh5cGJAA_QoA*Y%>8{B@KTpMQOF~pMjcx%%ys5Rv zh5|8UY8;TA*g)GU`EA6P@yFc*u?xw(~wSOc8 zTO6#`2?V1aNx0ArK$L6;G-nPyVhsSwjeQwve21X;*ffrNcrk}Ke$BqQ;UhO7jXSO+ zAU8;StdJu}1-m>3uMt5E48J82Skkh&qVF7=jm8)~q0EV1dH{2v=|+O5Hf)89^HJUaY>N*Y+bRG-5xg3lMS^4)=J7}aGcw5ZDQ$i@ zJvZRyo;rT3#D*g#9<+6M3`iT>1eFV#Q68>jWWFSPRl^u1s<^x{*G?KsP%X?CvP=WM z>8R2uTqC29l-NPOp$l!VY#x^$Y$O@JDf}2u;a{};@a)zH@9T0#b%H3Hq^=5e7`A7E z5S3j6VaQr8N8A{;VYZC^i*G{6Ji7#SbW2x6m7tTRx3EN@$m~t(GyYb9X^+YFjUMy( z;Ah?jwNAt5z1K3AIe37)0<6fNv}-tFw&^|RUbcLA@bTTVjo!IqQOFPKY`2=4M1J9x z$^QKZ?r}*a)Z0Nu`*m5am@Qc-sfrJYIBJk3Tj_v%TC2-{(w4DTZyyN_F=su#wdl?X z3tK3{o*Xv9=J%XaVB3qSK9{K8;TjV)dwI?g23MA>N&`jMCHtMMeztf>d23&8b8}`F zRsQ%Q#KYs`o;4Y~%xD&!TiqH9Zav-aiV2cw<~~+daJkv#)hw93T$UAg4~k8(!fD<` zoB_0icye;SYy}CiL=fn!^i5UkXk+(+I6yTMX_M5uB%l4A4x|zVUK;{V7V=6k{*n+g zfdEI^=ez>|=mq$46`E8)B0>_WP^$|Qf_{Rl5Le%?d4((w0J@mr1%Aqftszn~4p>%k zg@sJaeubenH`(UPnEnSubbt-{_wDK&#H&GNUuuqUxD39oW$UFRIXs;29>Qkr0GX6^ z!bT_a()N~!^37d6pw72!ipfKen||?>exH{fE??`NeQT;~zQ~@NS!*pY$>J*64k5u}KQ)2sV77Dfc7Gwgi6K*(p?KnxGUmoVZ&2U3}FR(S1tOkxF+wOVy@Vd58pflj3#<$??&~7-_O?j?K0AFMCE6cR#Y` zIj*fZ&O#;csQ3l*yQHy!JS?DhIOGXsI-V(f)+}V4?jYB7PyJytLex6o5UYWa_zcCW z^I3groL zQVqp56KlQ9WUClV`v>HZzE;ivqUYu{=M9yr99e00R!vY))qmo8SUYr;BEZT*UKeNx z?NZl|e3vQ1U2l~7_QkFX%r${lfV~GY&ME5h*Ht}U>(Mq&9RjaGR*+Z7rO4jb-*$4; z?n0a&VmrN)VI%LoKZ+Y-yBeHeJI=E$Nh^i$>KNoyE8rI!u^UA8QP}0oJ#KUl;^4_# zqCw_4KsR`4BqwYL0(94QpA$Npz10G=%Kw(Y()r!v0A#IpR3^N;;YAE!?(Yd-p%Y<(0%PTUoVfkf0Pg#2i!b36I)pXs<@)!5@ z!he)j7VUR8DKU5F4SVjLC{x_x*1YvDXVtaJspL{yV+PhEQUKoGUy-r_lqtGVa2$Wn z@kI0_wZd2dbuJK^0kp69OhDjjaWTQFyruj5-RKIPSJete8EBiuwxNOUna=gF$Qr;Q zGX9rZ48A&n9Ygchl=*&0L@@yBpEA3={|E4&|IZ{4|LYP9$nJlx|Bb~K%NqLn`nJ}9 zeHy0gyfx(@XM2%=$be`FBvnApev`Dur1GWw2d%jiAgc0dY2>wa!+Ms^%L`D=y1aiF z#)!Vb+eCm&bGVTEURkW5Oe$dX>mc`J&pQLq_5Wn}al|2o`+ZR*Q&eW9%==fVPDb~X zzSPatDInA0!N&W32soaQ&oy$0?`2W~lj=m74aWBGQe$#PKo#8Zr;Y~a_7pB}jis|^ zDRq~zc;6^vH@QGfS2Cxf^Z@R(J;|3OT<-MDd&Rb_1VbGEwcLmCjnpS(DX9%N)47w`4~p_e`5p5uhfu>Jr(rWhuYNv@>> ztH@z=)kEHZ^y`E|6TrMgP zC=lH0Y=(|bVuo4#M5m11uVi&0Gn0aP1xKsbtk|KS5*;i9wGTjENJ){=qXHYlM;^}1_0LlpcNUeN0PTcT~h5h`ruM(1c+0DX!bhIxnip6qxP$Ol*&a%5Fj88)b3>el)3fuDELx$r*Jt# z^#38W9$vYkf`eHrp)Ic$yF7n8E^>TuHjG^GBk>a1Y?k^1_p%Tu*50)1@@I!e1tBOd ze}E6RcRR-J2uwNC-)>mt2;mA9H#4F8gCeIo00*06slOUiJXFQ*9JtEo49L%X{>1#O z7H5+RPS2Y3B&pLJ@4=EzW2n2~b<&wFtoD?F9vLmoWG zYTZJ~Mu1@6>&RychVV_^1Zu}D|fN?aOTiT5QxbKx&Z;{kY4?ugB zFFe!r#j|l@V{-qa`=<99S(D%Ch|U$%J>`k9Io4TcQw*ocVC%(MO{FaGWsg@t`(b{5 zo_zoyC8EjpWHk^FJkHi(dgGbxz0C#h zS1C@P>Ct4(-R;ks;KrfDnNG5~th=o0A(zU{Y{TodkEpg+Tq$`tEj|6RBGVq{z6Xzy zz&|Fc_Za!P!;%#Ddpft=8mg?9({$*xNQg(KIL`T98YAOPa<%Jey0`p1m-fK%efu}Wr!mUpwI}I{Pjief&+5^jb6M>5i^H*B z)h^oKz4&2{bms0?8!$cUE_S^Lyo zcE=>9^Tb?o-3BcFc~!WM4u`Ft50)H|DeapY_U$JZ*O079NKuwujJ(SO@;cl!PJuB%(r-Nk$U zPEY5r1IOUs7D>S7w>i+^*qMgs?03Xw&t}Bhaj2$877Czx%?%4H^MG&A0EItzySU6~ zdC4OO9)o1>K)$&?-mYsO0oS2b`|fc<;y^?xt6AxoQ1DbBjiDinglCnpbNa^mrii8! z;?vt$OLbs$=ivq0r)%EEPcH!vxspBsts^Zq-+3r-8-Q!^6%i88`6L!a!(^zufA&Ab zakwc{()XIJx|`0%&&JFcYMc#lKWurMEbUosd-$Oz>~duZkC+E$Rpz^mG+FAF;aN7k z-c>nq+34TW80~XJo|o;BQ#I)Sww?0W0ZmQ}L}X#BdKU))KPx+O+7a5IBNY26W-qpKcNOYuGvq^L{K-mvsIV{SFh94Yu(-a9dyC6+93hkZ>hNX=6|3 z&>Fhc`O4{Pgd>`+H*&BkyXEeIr^roSR(sspeDNGd)XVeuS0`c{Bfk&QehU)uD;V?6 zT?z*91~jVUhB3G127O8-1Dd`(IxjW%Il64RHfF*M&2C@2r8qd)8(KRow^t27Vly!F zi5V(#D@U+sJCJ1@>pAzh5~#%;r9M(o(Gkdt@FvIoXXyg0XfGPc5dKNruQo4Dw;>Hd~j^ zMOANpe+N|mEPq!vf2c6SB%deY);w;_Bhv!yG9&F{Ayddm#5<8j z`y7NeAP+m%59B?cc?#pKrs|t{R5UN@K-asJgQq-)kJSr!Vn(ulelmvQQQC`$g(w^L#V`$D zHmvVXBY!M}40T_Y%&r=G?hFGq`?y0lnDr|sPm$8_IdqQX=ojovO&3UriGP-de;-T7 zX~{t}se0d`Q$qh~Za;ZYE=Q9-Lu@#$Alir-)$JN@aH;#Y}s@-hfICZSy z$t&C>`l8Hwiiwt?`mD=_G$HOU?NoRS?06{E=3a^&mgvCZCf0VjK|5T|$R5gu1%|sF zO~cT_2Vys<6Yr-!Oxj*hu?p}lXE$BVJ^1Ey_~Vw5I;C_;I8id2J=cWDe(f}6y%0&@ z<0it%a@t$SRFm!E0@0oqmMtj9x6r4*dt>By$~dk0Z2bjDtOw%Qc}nrg#>+-u*A=@J z;$-za1+}o+vGXgN?_qhOsS4yU2;vL?Z@2^jUda8jPF8=lv_DuNX~F4Dt|_OzyJY;d zs#p`}yy~Vz>-|j5cJr?J9s4Jb9|l+jB8x`tES^xT7TAg;uoIF8|BlOTZ#_x1`w`XT z&@`e4C-n~!m_+JO#@(DM$*Veu?=`IS?zM-8*;F!OfJhqzdhl+%KJfwhRdN!~n`w_) z2WtioWGB@*y^@?`aWXPYv*(&?pIA=N!P#aN?CjwJJdRKM=6-%L&o=HGGn>cru-xz6 zbm)0+ThtO3_=DaN8!<6HK|EqZWZ1)rWka9r!Ut)`)vW5a1PdZ?0Oo-n@0B5umqLDo z7jKVrb>7(mM+?flkPh5vnQqH)(hy0s5*CgbDdlftue0qnH3p+7@HcnyP_3&uUNG<5 z%xP4FzXts1%by(rJ~U?spiX?Mo9FowQi*{Ovn(IEg|?#)ia#_>9{v{KnqSIo>da%i>RFh7d%~`|=t`wpW;^_51Q}sjAN9EKc7z?AlZ&MV zoAt&dabuEVY#yjDEidQ1KKS8F8NukBYa)-_38)1>!E%gkvg+pFlWTp)#w4FjwsQg| z2~%n|0dhc6(L$QJ_%)HL^GsK~`Mzy66-_;*T`9+`yxzK9Bg`fUR>EKw9jD2W3~x=i?sd7!}WM1P_|)9 zH%GDf{i5!XsMI@KCa&)KNN0!h!;APQ7Wz5y^&Nwd ztWlJvv;-@vKTqae^=cy`D|$-J{7jP)xw6ogKObS z`%CX*WXzm5;7kkhD@}bDXjX@#GrNZU-aK}&FT@_GT2)U2qVRgNofYrFm(2%pZcJ)v z>)G}XA;h!`Egf<|-SHB*>P73S?F=o;czf{KzpB?&kJD+qVL-aeVvFeMyLAGa0v9A> z2)dLZz91TeFAxQC&aC$SewA3a0V+iwxol~x^FzGeByJs`DGF36GyYIxPoMt~GhDLs zZ!ipvp95Ydbi{T|m&Km@>^zaservkx7kA;UEhgZ92G0Nyfk|5lj@$=@!=4+6m;Q~M zQ2tK=TH?~ECIBDQx)2eEkF}Dn6oOkVLQf+Qw$!Hqz={#?Y+V~ z2duV{wIQa6uX}CJ^N>qoP3+^ONlg3{;+i-^Y!U|i%itATZI;8hx+mped9`ttNKZ&Z&u-6cG*HP5LOc>z=i99X0We2jF8RjbuU(d7 zWqB^D#7Cg^gGxov?&afi;CO_A6P#FAS57V3xD^pTFqJYYhsRuXAZNy7r&N5aq61-^ zwMgC$J{gfVPx|K<`qrp>SNUc@r;vpa!TI22&9mDmSMMFu=`J`6lIqM2SN2KWn=;DL zdwbl%Ozy(IXri7 zz5yhg7u<)$v8VtYa_>riIjsG(v=fJR2>A4UvqK!JH!)*%ObRa(TxSyr-{P$($#SP) z?RU`DHk!a*Y;c7e!_<6Eddq~*7$mff*4LkWrc?XrJ$ii>V^v*Rc3=<%0w|L4+9Dv| zW11GtikS>~xz^|KXcWRTZ<3%*EAo?{P{HIV(TGNlFh(@>$NlfWAofbv@gRFy?xjKX!ddYPc)(j4`O;tJt4e51;}w zOe(ma;w^(pp*J~3&}<;0!V$hh^2V~)_7~xK;M0`nG0*RhD=S97GsvQsqNUPOs5Yb9 zy2Sf(uxJ09;>~z76(dP=mRhS5Nh)eT#$h@zrSBdTo9}CMuYbGw0<3qwl zC=OM`vP@q1r#*`S-+-~~KSezKfwKt?h#c_Uf#E6pyKcpxpM~c0* zb1nhGfflw1CT0$iY=?pfvJANm9RciMQSg0ZYEa6Pj^ zK`#jt!s;kS!=#ko=Y-cLE;w`)kJ7NUz)EtffPvja?XQ{^{M&z*W(~Z(8**Sl!T7t< zfe-vQiqZc~?EdyR!SDoxok0x!U-dB!BV$`nPY-mH1=gH)y$>^W3~eE?cz?k*kF7Ty z@s6f8VCrPp7Q2cLpR>~Efv+1g$L+Mzj=k78r(p?flw?eR3kw7XG8eXRe!0&-Y z+`(lH4+V^*l1OT!{*1KZF1^ZVlV-q0s*<`5^KZLUj^;}Ou8y^xi$mYYD<7Pe+8dMX1SCo`BuU}{2C zlB%MCG^$_%X5-WM=g0LuAT0j(0x`ut;m~(YgX!#_c;caVHcxUNc(@`qJN7KpdfUxe z6TTpjUDg`iuA@sjsQ$|z0(bnWT))Ast{@6xo}$PErcY|YpWPruaBmgbGBzFf=0Bu&}iWaSo>(?OVvWp-v}ocCAi*&g62 zU`4(~Pl4f9^%}%GneWzN_k65>vut$qN7C|Z%XNJf4 zgW4|T1rGvqo`A8lB4wbTrKbr5I1A7FWo4CjsanQ8=}k%F7WQ1NWWwG*!lHWmY(+=V z{#97B)jtm#<0?B7KSOlXEUt>bpDC{UOx#FP}{|9xy!kAJnif@KFF ztYa$Ual+bu2ah(^nR08@oQ*PKL(#muD-cabeC=+EK%S;7N{U5V>z|aHnmYJw(_i_( zkrPKpIkr~HLuA%)92}XLvK*#xB~?Kf2xD;%8&NI(1L_tC{HA@A{oBWj*5Cz0?RNhB zTcs1H&SkJsOC(P5l;x@L08(j;fB-6Uh_iQp?5Uj`l(|SFwye&)n&-6C47+6;7_WJ+Gd;33}DepSn_~HL{izcuOubqUxXwZ1op{^6@ z*N)vZk)Bx$FHILv8D-s**=sp5_hS zNcfB^R&{GHx$Qhf_peoG#V$7v?=?<-M+$cAu})6b@*9O-bwL+c4sVG5_VMr}Xv|o> z7-`&P$NH%DMaoWGgKKedo8IaT5VYQ2KdOEfj(XOtKmQG1SrhL@{ONC;1-55maF7ug zQb4C-_!^UVw$d*GgEHM-Im^;10-3>kzuAXMF8Qio{BJ$@Ke>M|KSbdMRP4}8Daq;I zc^blvfx`)`qa3#rXfg@WHnPq#wOFw5Ct)*(?^Eug+pRFlTsZA3Hk0&H8b9@}fNQg) zn$O+(s^zFeFd{g8BJUL#5qFCTp8#mBd?0ESY8QxxK+?;pr?x?Jjxk1!9Oy_j zz5via_KqxZ+mH>(l?;l5gWQQ(J9+*|6HV)Z5^)0jksJflda|L$P&x1^@#ZX);CGgW zv`C={18H7J7Bi}=eEWI|H>O)K9-eoF1y(Ma9wu*Xc2)O4Un&xkDve#z%6}O1+iX|G zQxUUyyWykE^*$`t*&dfhnH*Qfa@ur%5s+ly=R7GsuIO6 zR4((~7HXYb2hK+P1)V0?U>FF_Fs7Cojw0c!pTJo~7r+@e$2Hy*ZRMCg{#HukXiQ0q zaD2a-#o{#weB=z(01J!b8y5Kfu{Hej@A*+!rb(@1qnt2YIeW#|(d1iJRbQdoZZXOq1xjdV}t8F|jCWP`btd9K?y) zr5#ZHxnV07+7u;|6hWTENvlG1Wcdb0cg40gCBCM8F!#CF{jxEu0LiujU?Pre{>j9&03Vk<9=GYtLs#vHQv3FZt zQ*FGK?Mvlu@43EkyY9XA{FZ6XhE`^bre}4{)L!Pd{N{-+ECYlK_AMtbS)39|G)oQ`){Q2zMu9iYmhO z3Bf+()bC=1v`9HA2{e5Wl?zmD{rXpspMvx@1MxiT_nz)2XLm?CCf0@Kr9Wr%J-yz3 zh`fgwAb#E+QGahSk2Dj#wl!$+csxW*)zmfqUMSW6JFoENjX0i&XBPoIw8gy(SF|d& zjLAFkz3Z}qq9T2o)7_8Gt77LX|MZ;kcwD}DjmZCMp!j(gH)2!unzumMTMYVDoGXMu zPriGr_}2&r%e76FAuG4;VJi&1ZYho45V=w73$wwT@90G{VQVd?WnOh%@d@=|!(tnA zqgzH#EvA3{a6wE{=dC`5TkV{E_U_)U8TRAGtrRoEcJqCEg+t0GUs0wKHZ?mv>us+s zWU*IDNc#WSytoQ6U^<9gf_#2hTRFk5s4WY8yePQ0P{7}`NPJ5l27P?Q%R?_24?`jrOGArn^r;e+*q!uWUBKoU9!(9Wq z|C^0Wfl<3`kX^w7hHG79`Rjw`6FW@zKu%Ufp2`m6>VGIS-JnjTH$yLVVJQ$!di~J* zP1tFk;HGNlH@lDvKccjmA=~9Ih)*qNuwq53DA2&>Ec2NQB9uhQ`b(T_6= zwR|(p+5&6?D!=SHcklRr=szxe0bf0J^a!*eQRBvwskV3JiZ|w!>864q#@qSMH}k(9 zAU#4NcRf2mbrWG%H^8GQ%`RO?=%dAYat}|-j}cp$)~ikC-g98=ywh2Z4fJ!}!H78abPg;C+Oy}PfB#t%1LG#) zjctkzub`WBXJO1vO7?MN33;Ln+NZ`zXGNy-!5w;;XW<_q=mkbHjXiMbtE1~G& zS{E5OSJIsWBjn5HA;T+<8lE**@H0Hr(7h#c?<_{${uL|l>lN;2+}-61iQ=_qtSgXE zhsAuo9hw8?Hn&fbofWDD->P6!G>kv@OSC@^%=I#93w9Srd8f2pR21EyOG$Kg6xznh$ne^Tq)zD-pFj57oD* zG2Mc7WSmvh;nfBMxlG1BX)>z74gElzXjr^p*)^UE9nIg`qo>szc7TtncDAXRQ8G7u zcwt}2Y{C2?Eq$}>T4YykrQ`*Feb+Tn?(7RarKch0W`;;n#63%L6RT5LL^tq;Le0;@ zBF-#ikFPuxFN!Gy!g|UPx0wsi1!E85CVm`NmPs_x84W%QFqFtn^m!fH@TY^w9*aKb zxu#0j5Q<3$t%-0W(V#L$Sp+u!W$#)21?pv9Sx*KUweq_bb1f7$vB5oLmt7jnxBVDr?GExQALJ_PapeoW zoI2!o5*k(Iy{{J)?NKA6@ymdL++hlLq!ie6I{ zd-hrItwEcU?+2o)I-K1pYKY1@pFtoXg(&^b1n*O;2keb{x}U{-R5MknVV5tAUY?Z4 z-yq~w5LAf~Bd4$-YHslY2^rdOC}g=E*3kSbEY|*?5TPZt>rHcmC9E<|A26u-5qZu^?k4J!ip{ z9$|FXQ8y(FCZAb-z0Ir4073T@=9^TX;A#wR%a>MDz5EVK_N-;Q&XrlTr1=}ggkUwgPQ1(Nz(eitwSbE8S6@^5>v`zl4bmp)xw(B|mbOuq=f@Em z!*e&;+b8b&*|;jPoRb0~MhPVK3m2@@$dA|Ffu=? z)CU_f@K}VrMub58X*GOI3OUBQG~S_JTU%*=`K17j&r@S7JwuA{wc)0=LSg4~$~kUP z!D?ucZEYMU3D_W>u)G!b)1Ku&c=0Q;t?ewa;isLOw~<4oT+H#q2ivK=-{kS=0#I~> zq&R+}E>t-uJkVgW6T&Ut(F2GVgurR_&SziKI(h<@$)8ok4e%PGkdld zEr((DHGX~ZG=hHAMuY5P@`7axV}Y0e+eo_I<@!BWDD)&`o_JAXkLv81NFcGUrY;#x zE{jq!U#NF?`uhuo%kkv4i&5=|;W`Pzb9_G2T25O#zcD#3^-6-MON^x7o<72lXzteX zcteqqI8!(#!(^LqRp>*nny9#$*}~uUZE=kPB70N@iv^o>O2q#*ZmU^^LlPf+d%6a< zZRYzFk1P6A;M$g_lwgAF`_W981H!Cx{pDj#PMQn*1@%H=y^DrCio+ZzcOQJz_SEZ~ z6Q%hbT!~Q=>7s?)QU6mcP0r$uLe&tG_Js#+EX&mhn^!dcG#xfH_m8g;)Hy>b1uS2N z*Q2~Rr}57*QYF-{IJHLV5WKk`{CV#*|C5muv5g|l0cLs9cVFjZFUUc@RU{<$LDYzG z^LO5?rzBi4?&mdUhk?p(u#y&B#st0~jv7Qdl;C~3YGv9ANjt4hwXDXANPoF<|CvjC zQwYm$wHC5YZ6aPs!Sp{7A8MXscAL~|9D>5FUzOC?(mNw|TP|QM8Z|+tCrf-Ihkh?G zx=}BCFt8QqF=RsylIhBcdBmqgKjEHCzCZ49j6RtN(%Ne=ZzPULEfbt!qxMv$BwBOX zIx*!M3B?O-+Qb=|Tus&!@?2wi6}*iM?d!PuEzkC%E_6aVJL^GHUUX5nf&S z291;~R^gVT2gut%EsgGtMd>p@&4GCGl@rR=MRKwe!?HBSC0nj?{d%;;cY?(6OG}$Y zQ!)%`?B9b#vE3Y^%a7f+{)@$MMMg@EZf=SwrXzK_Z+$e~@6$QANT$0pfa}T3FXg1K zjiW#J6+silxKI|*%l7aQm=qxMJk7o``ap0O&=lUi-<6E%G0>N7vy<+>`2zmr73=AY zs>jdS7pl{Vtp}y7P^<6A#+;2CjO6}KE|2exxYXaeI6`3gj%L~ydwf^ia?akx--jaG z23h>_98)21$1eLUXrc`4sZSj6r{`rBZRGH50?*1~<i;2FicB%#9uZOfCzy%QG4*|&FSFC5>K(z>({ z*lyxAvWIa!<=3C)va7&JBcgb;j2*A51hMVU(P&waI#Z8UYBBAf@IkEF>L%#=Q!s&i zt4l4_Jobguo=^l^Ad^!4AR#W(Y~z(--B5bOO0prckeryg{xrbr{-#i_z5i?P@T>bt zy8fP3Y)7qK1E;A*3zS<7De(%oF1R8N8v`hNUMYc^1}nTo3I-$3^R5m|RamMcK)MWE z*kD!bG|$ke;Kd!LjBb)_SeppbdCpBq4)XC9ViCSv+U?_2zHT6C+W2gq z!Cx`?aHjB*k>EJho0XbI`Gk}tRw%G{%g9QX|H<@JM}0{o;q_;JRX6juU0IDXywIOF z6x0njLBSWn)VXS1Sv~GLgeBW~4t9(__BX*O{v`Vixz2kPi71F5ceW#!BxWalRA?wpO~Md zgyGso?a#QfaU>V~nWM1c`lzoO_+Ny+7{+H0yaGT4V6FDnt4)fy>Z zV1A;0SYPgb}hv9udHrC#}BjAP$cKzYj+I-RD z#be&e5Z<-%k=qr;MVXnoAG+}LCz(`lR|om;Jn^$6%uk5@un}^5N#c#?kVF|J2Ufb5 zSReGI2g;&Tttgau8l)yPIk!1u@Mk?)u}Kxb4T)k@L0XUSf;9pO=1%c+V%wJvCh#s* zCfh3o(u4UKgfqioBOhFf?mKP_ngfW8#X5Zsv+7-HR5?qG);Y<{vBI+U2n`Bb@h+oJ zK=ETchi8iapjxfrUobMRwD?C-n4U7`+C#b>oZV(&v1KhX9QmnnJHwfM1cZyL;N9sH z*+TVClap!=g<#iycSAD8uzxilAL29Ah|7$Jzu9l84CO3TI|Tj&U+M4P0~J_)eECO) z@&6YqQ3(txu>=I**D++)A%m;-w7$hbQLvK@@$3!nP0g&czt%HL1W-4s3pEr3w z8gE+T-G)3$xYW*RK^w+_8VGhNhWU)D^~?=u1o!-fNj+oucGr~Z+x z`hVLK2vkUBLAMzX>n|X6X|u-LY*Grru|GdF5|}x}PK8v5gUs|CNH{03oBevndCt^w zW8vrom>^)^TLSD??ZI1zGxV?l7EU{L@}*{VvOc+Zj1pw~KKP=NXtfeNd2yN(cPucv zu(9xNipTCWZI-&ek8##f8L!USZe=IkXYf6NOd!m6a?7B}&<6=7oWTgxMfrzf))W2G2Js7TBhy>rq2NJ(;ir#kh8%nHMENTf?tl zR9Bd($^P~M!K}x(CSRa4vTnHXKokr83W~?TUG8r%hg=;Kz%>x_wifFwyH%JEdm@U> z{60>u0%q!(K|Xol*cg3-dqC6PRm}fXJU8Xl2+1%&dO3AHs_+>e<{tW+tO%EYrHPd{ z1k(Y#dD2yt6Yh9(s&A07zW1i?gcR-x4kh!_mr-b`g&^FN`P!Sv*5LN;>u#fzPV7i@ zwiF@&$?e|U7#g%#1{HeBKyx!eIW%KbA|6xI+w^O=ZnDuQZ5(O2Y3+rgAv+FY^vlWC{ zZ-*)^3>hI!_Lgpz0CiM|jox?-*uu~@AT(P&zzm=t)q7#n9RyfX7zez%^#y(pyNX}= zV{sEl0%s_I$c0PCEmfD2<=af?iKHyB`@aqTslD`aI_ZMLqSqx6n^qC8Ci(KDL7Wed z`%6QpQ`iGUH2j*|*M9LS%*TRCM3brIg#brEFS7y&THb<|Xn_9?|5d(gIf#fgz{?l4 zRM+SwTrdIq{9=ck^ufoM|C``R>iQgk}~J-o?buSQp+a4@M;7*XE^CEdS(4JyzH zv*2BV6GcJG003`_OJ^kK;{-|46EMJjiHNfSK-h=0S8(kZNZfF6JZ9o=UVS9wmhF^R z9Ck=pLF>5XjK1-e2bE?bVc;vfv^v3(hO*JfUCwN1b6KfEveQ!m?y#un=)$k#;TE5) zhGSi?Zc8f&@9H|gU&0pfpVd7O&{wv}5@=D4 z4&$lS8?XMF3Q-P`q**F@cg+tN+kA&r4eme^K3`W6c;c;3 zsTxXL5rOqM^UFwErR^;m&a(`E;5o8!CUInpaaz7nQ=oOZI4=I82N%kJ{)n5me9v`2`&L>S zKC|}xiy+Yw6i??Obq-e$dwUKlu2a*V3MherXC{T)QJd4v08!NR)TeG=jY4M|1%5W| zVrM>jh0JL98#kQEh@MTx;R~1RfkC4bi97k&;^Qu?9v~lkiIgv8yPuOGI76y-u;y22 z6p)|Mf6Np^I_~&1MZeBw$x#y5{z0-7m9}YS=tvu=)8aHg(PV`^mbn5fZ-Dbv(oV(A z9fm$(%!P3#cbL@Ptwq@)qw3>Smsgr}(mFqr%SzSI8~1st=P+38Ub|}+YZivhTba|E zDn?yY)swuHswRG>GrO!lovxzm*rnCcn`I=)8l&Avy6gJxH9~BwN%Bp|$z#~$$W0=c zpCED=8P0d9M1dyA?R8RqgV0#KwR0f5IJkT)expyIQ9N6Ga(W+n)gSa&0_P;`TAKo` zue9KgwQIeeIt5z8sQ^hGuNM*~xs&5SZn@2#B=OoFBlBGGTjG!u;jD!l3f|h}n?RT8 z$rI?{n>M#!+pNxS-K-G0PVP<2l*U3*xZ7hK=niBc2`kf6z2U5I4dJOgp{wHI0NmlE zuOG#gB(yjWo0UG>H^9TFgd@Lhb`Mfq;DCH942XU1{Q=Shp!0gvnBsDwT*4L{!a4O8 z_}#LdUK#+Yo?<`3ZcNYW1u#*vCNue7fAgmH`z?#QI*2ht=qvjwKs+wmoIsM-O>_60jo`1 zn60*#eknQ6Yll&+vqAQ+JEhErSNkL_`Ru-GAu5MKiw*G;?PJCMXAUu8T!X}xdsm+W zF6eYk_TNYeQdsUx(XJk)-W2bp3Ui(B3BH}Yzp31csYSbb+Ij=~)ZwhQx~ulRv)*j( zzy)Hhl~P664Ap*SyomE=$b{9&V0+`uDbaJAGwMwP-W>+$+fO$%wX6S++eEHFuK0+PBi?P|Lg^`~2$<+U|oOTJQXq@0tT?!`X4CRv--AY+WakxyGa z{-xL+)I)-HK1+4)Ky~(>6L%aRJ5a1uzDBX_B-(+b#4o>Ft@{-l4%OmuA(W)cPg90* z`F2U|-Rn&E2}oonT=k&6$)fF^LMw79fs}_O)9eF3fIoKMT65@YmwW^bnY=NRH#CQ8 zKqIAjWU%+sc3U|MFPXQ%)dlNybNVdQZQ=cW3+uM4R?>%4kG37AB{gjv@F%&k+(Kkk z9{(nxpF1eA@JCzo=qN<=u&Mu&D#0~6LqT-%h<8-|c2kb?ZF}$jfI&lNWPcwmjtxr5QBxP;*} zb5_i&ngok=1osR1&71j|+VgHnDTrDA8JZt_pUu`1Resh?>N~ zT;J1v2-1fTf|VVOR!p~4VK6}QdM1Thw0M&R33cKI&|8{RacB@a8h_oF?~ z@rZ%d!FcjJ>0nB7_YjSYWvK>Y`A#>b-f#Sp5jW9f9y`Az+}`! zXc3C|+2Mh$YT7xluPC)e5QlDqCN`pSz5d8@^TmZUXNJfILM6#X%pvv+4~Y#ipYw6k z!Rpg2N{Hl`(Tj*qrS?)jA$gt2ok*|*%Ki94%F4xPaT4|(_-kx|nj&NZ|c(%k@SxytYo-*HlPH$Rq z#Fp^^b2e7COF*;U)(Gt^cV;EoN zlO7>&Mz){5evZZJ%U&edzz{`qA~ZkatchQYd@_-%j-im2NVPw6>O7lV1E75d=1B3v zRtE$@>9>6)zlEa!K#j(uBZb;vrDN_~xY1Uh?}&?aWYGsw(WzI4ib^*lgHn!rI_u>X z1&=0rZ-fHxFNozCYv9^;jYD?iUmd}4=+{Ourqt2_CeurD(w)VSNDW`=)yfH+@D8%#}}qO%DL05dC5T2Ph!1_T(ICCT0}}8>85XWt>A&TaV#EJYuEF%me+@ShPicSUbp`K}Cn{Jus&2)3*2<0UatKar}bCbXN!fL5vqHF)(81JG;{F4n4O@a}^AQ zcaT!nSRj9=roCVVr}1vhn}+_%55gn5`UfAoX-%i<2OVMkaC-snVv#Xy=MR8D7=7jW z{z+UR`tJxP&Ov#fZctzLpsTQf<)UoG2>R7y5Y&(=_!WKglH#_pcX$}^@#khoJd+#4 z^+%CtA`sXGWlW}_+^#_8Cci9Y2^NG z#t<^Bv}W>*YiMc?|GPw}aFG#MMx*g;;C2ls5&$c6?+OhbRZPBzlgG=mmT-c+xEbiU zU`R>Ae>%@v4_4PSNx&tc+)Rb1tg5Q&L$1Bq#DV_1M9affMrj>}Hx2RJd7(Z~?pRIi zyO;{N`xCGy16>F}Eww?yzLLq~si6t&r7{A>&h-v6uInSY8*Iz3olqYC;^YpdQ2LlyHJ*6B6sGB-LjypSz0MQr>gF3o^|kK4C3)P>b``$g zA=zX3C=~#rIWSm@3kT^$fgtghb#{>eP(c@YYXWVv%6?U&FSHGl=2xV<7L}|5&qI?h zcoa(ypJHw!#eax#q8sHHYn!_Z7lD^F6LiwA>!WQ%UEQltz(mHxVrqn&odHNay#B6LAQ>L`Bb z1n9@V>*w=skRLx2ij(8MEt3bvothC$QST5LQ%YsS50=;}P__j2&H*M&9P7=EqubeI zfEA9cHYNht*hPyvXXdNSY@@Mn@m2{>V%QCMloUQXot+A`L$Y}#pMly(Or-(VzabYt zUW%y;2!tiN9ZN7v*_M1H9Y3M&x;uqQ{CxbEY_>41={P@e&(kb3=~%2*k3khlUkgDT zS0U*rRg1WR;f}xz7HDu4yaC~IDNx2nK_Ai$>Zjnc^P#)Ta6p<6J7~{L2Ngk;1Xv;1 z(~}9-GlNZ=peoL&)?j@6>?)z<;Du&uqD~yxk%e!%sHxUNIEPdhler)wTJ4U$95<+c zA%nhwD_Zu1oQfhD`gLs6lFlN}+v1evKtKmoOR0g>1DuqR+mPupBeX(g+WO{r0-t`{ zEKE;Eb4B(2J9V^2!;ZS*pUPr*KhL!8Hu9R$Hr02Wp#tv+Fen-5?rJWOHUt)X?$KsRAQXb=;)4`q%mjO`mXJ6G76+k;ZK6q_9 z`^*1^flffdjWd<)M`Lb2l!UpPsA1r^?o~^;f^DEKfX>@^&7)KlwEOay`kz?cddJ^I z&MgHPAaI%K+yRlOl<$gM;H^4RBWNeUOZ!=!re?h$jS{Ge{J{`i`~J2xouh(~J@coC zjc4HpC0jMGc`6!CX>5SHzgu+|b;iYlq1W6koiUW3CFS~Rn+X-B&H_m)P)wmGt=ZS8 z|1#7<%a-&%>LorF0%1U0cE}4C=NZ5r?fCR#=NiXL0kGG>b1ETUaRyEfYZatr2~ue0 z2N9#C-?FfZI?YsPWU^cNU6*mYNTHE8&1lF-xGiDsuNH51AE14anT^~$YMr}X1!9Mq zgvI<^_w2}0Qba-dnAUB{^{EWq1WpreWi?Ep(yU=5<9H&c(u^O&R zM>y$5gVmHsH|npCvk8=$F60ZUf7I`V1(KbA8KrqSW@cIt7Ar;od}rfOh`3q+=;A;H zSOMO$qm5!6HnZ^-sMKKAJ1)qnUoosk;$nba!Ot8Zr;Y9a;ZK$c==sgol=H`7yZW0w z>NKx}(E+L_5!xi&yt!6c>1}i`J|bgB4Y6{J6_X@;sZie|VCZFX3Kky{Ps{q)%jh~7 z^*e_U%ZCXIxiikHI!|;8af0h6yqyDO5$g$+m5~}C+SwET(GO? zK@FVI%m{UZcbb6Z=R}jlp}@wqRdya_^f6m}e3<+Kr0QAOIdRaa$;uAQO@(Y+q!1@Q zr8W0;_}8mkm0z~e^X8Xgb)-82$4_Izw-t_Z<8!rFI@o$_B7PkpHrc#E33b@M+=!Mfoa+evpityaX z^Ab*k@B?)@cWTq%1x=&5*$`c+W!AsBo zpAR)VzHymX@Aafo0<7j!?D674Ugo6${lxJYq{FawcGn6tlPEy}wqTy|~Zn<8AVzpG2 zUcdzFLSW>hpiX;kwCJZhJS$2&<*jyRgTWFNCyUjb%!zp~Vx=I$R88rJ!$VmMTDZv-H~MdKY1#92mJbmFtVHd$=}#Htbsr4JUJ;I@80$^tu5y zAm~b5Dd_E8nLQ5SvvhluEuG9_ZXtK%>=YD7__+C3ya@4^R-yM+PmP*psBz^b%nRa` zF+Y`LTd!0Raxq3D>Crk_PRwA8JECbtPL96dsq z#M5T+C-%Bt2ERrwvpTGD6H8ja*f@TjvqcrX;q;v=l)fLS1vQt{BwsS-v$`bbqu?Ey zX8Ydno%)_8J{OBF8OocgVDvKygev!Lo&YCS@>Op&Krf0ZS6dUgx(aHpeS26yz}Cn; zQfhz}bEQqniCi^ZnLmh(|0fmG?6B=>xupV`kgJhvvkVJnPqF%uW=T7V@o-kAo8YUnTpj`2&&`O&2-#g|)^(V^7KVf1>QC8jZg_V}7dhHz% zr)@shDvL4_@U~qmNL@C`N;wgeToA5?6fyniYev{Jk+e=v*@Q=lfcGhL^29QdWj zQ&SR$($)waS#y^1z81B#YuDF%SHaEdlCakh!}kZ7HQlp;)(KP((zR!K3`^m|${U&s znfDbCj)}GOX!Ogw%`S?dh{5X zy;DM}sRB85jNh))+LY!l|9la7cKkq{Dx!Oa?1p;(^bqV z`hD!~6(dQJr~XuMwpR-f#E`q`*BoDZ;`h$olW)N?`+IKyd9b}Jk_T8}etwH$U;Ft- znlx(FaJ2L-in0k&W;h~Lhk2rO-pqh3SBD_&4dTj&xahX&oH?JT?eAIgM7EbA?MEI< z$~ETx@FR3aXVBEf;_9Th7r>ezLGESld&m_l+dd*7dGh^q9?s4#`)sT`2bu6sDx*og z_U|83pO5x+*1nyZBYECKCS-EAsOQ!qMEF`<93Dw+0={ON5QxY=f_9P7`Z9mR z6&UPfYgup+M3`IkR@8$TA6Iw$ty7QIj=SOuTW(CI|i9{$#!UzRJ!yTr# zIY#4o_BUtxVQ+spLw~p%vd#2o-{A)3uDt~fg6zr5T_1wC=T7%o4fu4E_TOi=BrcaF zxnS3&MWUt>rBn1vNflUOJ&)L=oz#{Zi?(_afljb_y zkYS;Q40!OpdwbfVWLu8A&PFyl@XRmcBZu+lUM_YRxWT6F3`xg*5@FcZ6l0Am1#-Mo zUCVX*6Zj+CJOeh;?k-38XwlDcI&BTh!l?v?^y^D2ZI2Etm-+aTNxceL zr33vOAIeCF-leHS7H;pt*9~?BvS2DACd3ISw77VB%)r4`WF|)AQE^(z#ofzAPd1Oi zcNThAHOiJyM&N=LeOZgxnJj#_=)&MyO?6QVWLeY9!D)XV0Ob0QBWC80svk{>~=u%QDk?F=C(_G0wt^gQ^7 z1yv)(r%#FR%pju?qtMzEnnIZuY9+mR(dF#Gdo~de+MJ#uP5Q6Y9oTnqJuJY zcJehlzlWEXbbJsb&%gXQsOy6AMbdTTqXM^pmkbkO4~S^U^p*_` zkd~uUh;hIeLKE)lmjyu>g|wo9`{?SB|pNXrg7BimOMNLI}T zk}P5hPM1@irpa$w)6HU~>i%Xn_Kp`Cd@IU-CQYChkXn37t$&}y#aE}b7+z$^CMn`4 z?rYci7py1-uF{zz9?WDh6c3$vECZqhd_^wxF za!$WRtPA_*oUK2?)*zhS6LXVj@xBP|Vl-<-PQqN{;`x&2t{vkJyA!@c71d5TuS zDkS~XWVUb)4w-eZ3L(q*=|tm-41z|Pu)bvfe!StNs42O zE`8HM2HkQTug=;kDAeJ^pqKV+^ZG^Vp}*^9Pskizg)Z(B6W33@8LrNt+2SccZq2x@`Wy z@7U+;g4VGnX8Vl3k4spbE~VYEv+tps{c6Wr-18Z}Tt{$;uM|R}wXr{T?WV)DHPLbj zHU04^7OGrItn>LiJLptTpvFNTb0XU>N=$KA`~jgeZ%Evx#J0NWMO}XCYFj^RD{XtU z{-COA`;0<&P);PUdAzzV*M@I~EjDl7sHB1SElsBZI>=`7fTXsBGO`F0a7LzbV=ay8G05vG zyV7S|&Y3IMzZu@i)9ES>r*q>@DZch%?opFk$Aup06A!yy;j&~jm<_r&A>$3832MYX zIa(EKjKk%ie{6?myKB&!U=U}QEhr4`M!RPv)i^CNs;+YtS9+>U=5xWSZO>=pD}1#r zlau8$$=Rg^g_I2HGyM|uEAp07kg^>!*8I#A0oO@GS0REdNYkEP?}mku4)>3jy;vyMR(IN>?{1>Hw5Z0oNi=UEGzD|pweLwlS5VhPkA>0;e@5&N#S6;6)+NQ2 z_fgxp8dDnXyD2xlh^&Kbr)U&E`QGqo*zGFnb9WHYu*!SH`#z}l*QQe@#nBkk1`RPZ z-ciKW%x`Ue7{=J|ABE3lmL3*zt(gi`JsPrnmBho?(MVg?L2uMdz5fmvw z5JK<01TP|lOOtNsgxVayXG^v=22;cX zNz1P&He-)LsosVL7|+YYO{}(O!CBXW{Hb@FYY6DYy`@$hk1Jd~Z~0A1W%4=aBfWHM zF!d>BNKU#UJ9d{nY^@(InmofC$vY}4-pw;oR>sQvH&&y%Gs5J~qZanwd zxI3X>P(3{Vr@nUqrGphopI^15>wXc8!phujG}Mk{#V<&$qssAxj9&XJ&j{$c*N>(w z)$Z`oLKZ~kz*E}I0OfMchby}7-0Vc3KKbwo$>~5UR{4!0GH9fzeCyS%Jz2q(oG*e= zB+quE&{~$dI?ds`G$+=Cv?6yIL5RZOKCsFo98c3N{?oed8_Cbf8cn@oi&gXL|&OsFex>gi=KwVts%1YP2qeG95$Eh?$R`x zwWmV1?;#_w5&p?;`o?-YjPzRP_Lv+5TOQeB0+ zbs5hJ=EXtkFjSslh~itLQ!y_~|9q3OVu-S;)(&AG|Kdm5FMdr?tzY#=RzaoSp!s)W zky12Ut$!*$Ium)MRqp6yz*f<4Ls3ytW{b~R1o8ThAGJUV`0Q9D$^E_2vi;p#v(s`{ zlUZ-pnq-bOQHgnrR>I*n1IJx5gxRtf1*Xx4K}5*I(`DkJDfqmx&;-R#*lAO^`8#n# z;l+>S+G1p~1DUKEoxL5M))%k~UVsA|Tk2==U2LbIxy^-|n=yEV)7(Ng6ArJ>#)R%t z__f=W+XnE4C@J-Cpt3QxpDo{XMMCe;?>^+HX~b5=2}~ynilCbH^4R?XNT^v47@VQj z&$gtPpLcAk>4@99KIU=oBFbCOP(G0+BKkUbJa|irJLYKLP;^02`q2Odfj-=}_wvoS zKr01s2&@ddd*Cqk7*8VUMFaJHT}}om2(9`C%%!S8sNm|;vXClf?8*;x3s$Fk|B?y&d4$`(ScPTNlX{d#=vtY5o1|HW;OjC7XZ?dYpO;u~t>%Q+O>AK2Ih z7f21YT|&+URRE=-+uJ>F?rcI%89PQS>QPEF3Hvn=<4dv0 zb8+7Ryg9RdYQTEjby3}KC-CH+(gJ&SC4{yWJ#}}0<%b^~ZFi#Sb}`$wkpVJ*>KoBA zN-BPVhq1O7?`dG^N*=@#R7;#-~tyQ*|WVqU_+Rkb2=Jd97JitSm~o#e0K^ z5jc}6nG3th>&GMZ;)qjho~gTrLbFg0;lZhTWv4SB7Fsb=QKEg15Es*))Q90)vk2~z zcYz;|HgDAu=$?5@$dtGN2fX)>O;-IazMpB;Vu7Q-$#Xg;b2!{sVmtJjd4-1l>Z zP|VilibR2$$0_7;!0vz|eOiG0g<7^dbQDj*8YDk{{p{Y6_h1rsqQXt&1bB(2<%7jo z5hh?THBfvq0m5aC_I3pu_+>)X<n6J#*xT<8ghr2WpN2Lwuq$81#6=Y?p8079{|5 z1ROuNv$Ioe?rl(LaL!5V+F?c-wrA~dl&28_73P@bD`k^xmKlDhFm2gk(H6}ReRh*` zy*7*Cd!9+-4g+GVL(`~C>I@dNm*$1=#8s(8q{j|wR8VsexUG@`X$7J?olM&|^LF95FE;qWub@?h>#Ye#JT z*-Y-iV!H;m7LE^qmDR88^vyu;jMVMclrPY}26ErOPaGLg0{4HiNAG~e3e2h21y#=< zZ_rY1`TRrvR^r?Gck*|p0N2#!Q5d%bb-7FPVUES(`|?6}bcMdXM2o_b?mXWN%yj1nYe$lSCn2yX8Br4>Wqv>%i zX6l=d_KHiZc|qp?)WK_7U+WJ0G}P1MGtW6pD8y#X%Iy`nu~%{o$`je+#B=}XgQ1Og zciU`G?v)QyZG1x(NtQN*lia$XQ$%9K&w+L*=z(%N&B?NEG>qB)5YV;uR(q0O`vcnQ ztK$t8Z5V6g&aXcrxMF9k(Vc9J2uO8QlW~iBouU+(Z1B#~gM&l(P~5pVDFShFyxBsX zDi(l|Cf@0A;qZ#mIELH?k+R&sGZ9*ONPl}rEmi(F+Y>te`DORD1P;Mpz9`fAB=C<9 z^HFjR4JaBXm)vt9-Ch8%5Gg4YW@08`N+Oy*Apx1NTC%zz$}J*kK3nb!cWOFi_VS_uz#ctK5r$ zejez$ydUkcJj^$@CvDJ_))mw9PE;`4Wd4y8$rW0jM7r!l`CiidJp)n_uJ1MX^w;Im zE-xwOT(j3Ef4ZO)$V90pU`8aGl4M4Cw_TJdi@AqRg}@kPw_jY1T!QgcXN5=MdIL%I zkt(6NFMtS^1H+nm+hn+FZI# z&BpX!qLW@swIAfHf);S%{HXoLKb3l_!T+mLkE*eZgK#}!?`KMRVpW1xUcX8d@G2(! zi8df`XQdxX+N}#O%}p)@og8saFqg-{aziP&6$iWOEEgUjLT4IhE62X~#G~BIn(DH( za(q|V3=ejsxi@h83{pQT%NhO5vN02|l=BrBg8eeaCykL9(aNHH39G6ll}eLJrFcVE z#DMr$Z~04#WI*STLpl8#^)$&(OdBzEzNMt(hF>f-Q6dC{!sFGG$!gw$1;$>^t`0<| z25yj44*%Id5nMZ!h#+xz0psXl|@dQqR)g>;ktULmBsAR6kvbz zNzgb5lNp$fw7s5UT=c9r*f@_m6RA2kt06TWS~@|8dpvFj6-L437rr zzRj2jo%Ho^A&b}F@|8uOg{2WizL7Z;iXhklox3~r-=fD6lw#J!r(?zlOt*^c^_%WF zLia|53BORNKi6z3gPuu{5&L;{W94QK?e|vV?J@JG#$@aV%^x#p4VY=KO|3QfofXMttt@Q>}u~Zl`zgJ_`tlU7dC?4z_o4a=eB9q{I`2ZtqDZ(P!@mJWF^*Y&bq|P;H^0Sm`Cl zfO+MWknqcOZ?Aw0xeGi&E4=Y?&8)Fw zIkZn@sZChMnL*#nF(_H7iHG`zBDE1-JedV0kya7x(aqiy>EqhjL}4fx{_K?|B`AzbaaOt3is;)!d! zBq=TJg|REaw-yFKw6y&=Z}x+$H<@~Tt@?$YC*3f#hNOaPrGs~Q_B!nLkd-i) zWk(EMMdzI!6g@iCdITchy81lITm5e1nw4307v1(6vaUgftYDy#o&B{FW^7j4H)B=% zDNxOjgA>Du4~1Wzc8~D(ny!igHHYJgm#gUX9a)09GN~%8brr-@^v5GcX8~m&yN)jX zD>ZK@Te%4n|Fe~$Q|N;|B^Ru2D3tUvCK(42fTz{Xa`R<_s=8XGM$IG8RZ708DHTBm z+@pKwwplx~ij#G5C#6svoUZ-u7^gR!^BD)A>17^9H~T$Ha- zFc*JbSujw4x&iY1weOvtSu-syCYMkGS8N?v<$w%-rxDMN%CcM-IrD8uutmCKwu9>X z4FjEnux1QMCxeayLoOe9=(xBzf zs%Eo$<`m;=V}`jQjcGqJm@;I9BSV7WkgOtk1NBEegtxi|ZRg)0>INVM33A7Nl2==A zr+*{_=!~g10DHXt|ClE$RsetMPFV&3C5}ejyTPl&;o+`O@S3B_5{Ym?^mxn-W*3hT z8QnZLDMnfVj*uvja-M1d*i3+nu{sS2@WjRLyiDHvciikDzSxjyybkmYq2~LgVrdx+&@zB#eK6ZaPsX0R z9xT1dO<=Wi;&o0?0S?y@xR23WjEeDp&Dz-bhV{xt&ePTv;z&qDWAHIAFaa#|#o9^AzAT2pUJt+n!;A(ckOR@NEF@2QbE=kA5NqI~%bZQb&61=O;a-EPr7k zdF5WhafJ&D$%ye8z+A2Y_LR@YMZW9u2nrPggTXvew&%Rn;(eOs17vm)=;ANC4d(l6 z0s{|sCCQ*97p4@+s-KW$Zn4B)8>}QlfZu>t`1cWPy5C}lEvuVb;0cT$FSsVZ$7WF; z?zdOUr}28MD!9m_#X+PD?NPC$K>-Ic9|v>v2609=kkDyvYs(3IpX+Pus`2;|mi3%O zTzHH3Xatx^8ST}jGwg*Kc1HfNd?<>`e^;F+UYwg#5oyZ7orAh#IQSp*`>%o49RHEL z*Bcl}Q)@ZkufYy%=E8k}nkD*WScd=i?Vn8q8qqrdUAe~G1k*2yir7>4v6ueQi33&V z#fTCh2s(VOLlNCorQH4Yl7iCDFQqO0wVDZ7t?kKb_C9YS+)9n>g*I1m*rU=68!5ZH z;KhPu19a8Elj+D}#$zYGEhJSxK)Jx3NxXbIF4hezuIZDSB9pz~WZp02h%?CfT?3{v z%HpF~wEx{;Jwk{}!6_p5VE^oj0fcu;^x6gH;T{H4QDilLosheqIdDi_Cpu)$=9aP2-Av3gU}OCt|8#e#&CIED zBd`QWdSG9Yhf1eO=oO=HS7}vUQBhhst}n$gX`uKE;3D*GE!}H7+dgW|@0mQ^T)Kcn zA<|7~oYR(B)V;EVAyipblLp9@F^9_9@44Ekk3TmXv|D*Q`j^&}gKs_MU`$f@$6-4? zG?dFhFCIuz39>Oi@-lENso1Bv&UO2CuH@+B$G9W`YfEd4 z?C8^4CR1lCVJv^&s^P7}rI)&Npw^>1tG$hyMI}?In%<=$9F3HoR=+hi@*~~cvMZnj zSQ$X^W{?j0*7Z*{D0kYptE#xrZ8q-lC0uUQ3Q^-&DVwhe9A`u0%9K`^D4L*3$@pu- zOv6RkV(u9|bpG&rImZ9$zp7B50GRW;)VH1y&TsX8@mJ>(xC9i9yE>|+cdWwy3*FK} A0ssI2 literal 0 HcmV?d00001 diff --git a/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/docs/github-action-workflow.png b/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/docs/github-action-workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..23b1bd47263fe57f6f1570ae79e8f04593f6b2f6 GIT binary patch literal 26938 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 literal 0 HcmV?d00001 diff --git a/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/modules/federated-credential.json b/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/modules/federated-credential.json new file mode 100644 index 00000000..87df470b --- /dev/null +++ b/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/modules/federated-credential.json @@ -0,0 +1,9 @@ +{ + "name": "GitHubAction", + "issuer": "https://token.actions.githubusercontent.com", + "subject": "repo:[Your-GitHub-Organization]/aca-landing-zone-accelerator:ref:refs/heads/[Your-Release-Branch]", + "description": "Github Action Auth", + "audiences": [ + "api://AzureADTokenExchange" + ] +} \ No newline at end of file diff --git a/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/modules/petclinic-deploy.yml b/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/modules/petclinic-deploy.yml new file mode 100644 index 00000000..2a3914c6 --- /dev/null +++ b/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/modules/petclinic-deploy.yml @@ -0,0 +1,122 @@ +# This workflow will deploy the PetClinic application to Azure Container Apps +name: PetClinic Deploy + +on: + # When you directly push in the main branch + push: + branches: + - '[Your-Release-Branch-Name]' + paths: + - 'scenarios/aca-internal/bicep/sample-apps/cloud-foundry-spring-boot-application/src/**' + - '!scenarios/aca-internal/bicep/sample-apps/cloud-foundry-spring-boot-application/src/**.md' + - '.github/workflows/petclinic-deploy.yml' + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + deploy: + runs-on: ubuntu-latest + permissions: + contents: read + packages: read + id-token: write + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Login via Azure CLI + uses: azure/login@v1 + with: + client-id: ${{ secrets.AZURE_CLIENT_ID }} + tenant-id: ${{ secrets.AZURE_TENANT_ID }} + subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }} + + - name: Prepare env variables + uses: azure/CLI@v2 + with: + azcliversion: latest + inlineScript: | + export ENVIRONMENT_NAME=$(az deployment group show -n acalza01-appplat -g ${{ vars.AZURE_RESOURCE_GROUP }} --query properties.outputs.containerAppsEnvironmentName.value -o tsv) + export RESOURCEID_IDENTITY_ACR=$(az deployment group show -n acalza01-dependencies -g ${{ vars.AZURE_RESOURCE_GROUP }} --query properties.outputs.containerRegistryUserAssignedIdentityId.value -o tsv) + export REGISTRYNAME_ACR=$(az deployment group show -n acalza01-dependencies -g ${{ vars.AZURE_RESOURCE_GROUP }} --query properties.outputs.containerRegistryName.value -o tsv) + export LOGINSERVER_ACR=$(az deployment group show -n acalza01-dependencies -g ${{ vars.AZURE_RESOURCE_GROUP }} --query properties.outputs.containerRegistryLoginServer.value -o tsv) + export RESOURCENAME_AGENTPOOL=$(az deployment group show -n acalza01-dependencies -g ${{ vars.AZURE_RESOURCE_GROUP }} --query properties.outputs.containerRegistryAgentPoolName.value -o tsv) + export RESOURCEID_EUREKA=$(az deployment group show -n acalza01-appplat-java -g ${{ vars.AZURE_RESOURCE_GROUP }} --query properties.outputs.eurekaId.value -o tsv) + export RESOURCEID_CONFIGSERVER=$(az deployment group show -n acalza01-appplat-java -g ${{ vars.AZURE_RESOURCE_GROUP }} --query properties.outputs.configServerId.value -o tsv) + export RESOURCEID_MYSQL_DATABASE=$(az deployment group show -n acalza01-appplat-java -g ${{ vars.AZURE_RESOURCE_GROUP }} --query properties.outputs.databaseId.value -o tsv) + export RESOURCEID_MYSQL_USERASSIGNEDIDENTITY_CLIENTID=$(az deployment group show -n acalza01-appplat-java -g ${{ vars.AZURE_RESOURCE_GROUP }} --query properties.outputs.userAssignedIdentityClientId.value -o tsv) + echo ENVIRONMENT_NAME=$ENVIRONMENT_NAME >> $GITHUB_ENV + echo RESOURCEID_IDENTITY_ACR=$RESOURCEID_IDENTITY_ACR >> $GITHUB_ENV + echo REGISTRYNAME_ACR=$REGISTRYNAME_ACR >> $GITHUB_ENV + echo LOGINSERVER_ACR=$LOGINSERVER_ACR >> $GITHUB_ENV + echo RESOURCENAME_AGENTPOOL=$RESOURCENAME_AGENTPOOL >> $GITHUB_ENV + echo RESOURCEID_MYSQL_DATABASE=$RESOURCEID_MYSQL_DATABASE >> $GITHUB_ENV + echo RESOURCEID_MYSQL_USERASSIGNEDIDENTITY_CLIENTID=$RESOURCEID_MYSQL_USERASSIGNEDIDENTITY_CLIENTID >> $GITHUB_ENV + echo RESOURCEID_EUREKA=$RESOURCEID_EUREKA >> $GITHUB_ENV + echo RESOURCEID_CONFIGSERVER=$RESOURCEID_CONFIGSERVER >> $GITHUB_ENV + + - name: Prepare image version variable + run: echo "IMAGE_TAG=ga-${{ github.run_number }}-$(date +%Y%m%d%H%M%S)" >> $GITHUB_ENV + + - uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: maven + + - name: Build Jar with Maven + run: mvn clean package + working-directory: scenarios/aca-internal/bicep/sample-apps/cloud-foundry-spring-boot-application/src + + - name: Queue Build for application vets-service + uses: azure/cli@v2 + with: + azcliversion: latest + inlineScript: | + pwd && \ + az acr build -t spring-petclinic-vets-service:${{ env.IMAGE_TAG }} \ + -r ${{ env.REGISTRYNAME_ACR }} scenarios/aca-internal/bicep/sample-apps/cloud-foundry-spring-boot-application/src/spring-petclinic-vets-service/target/docker \ + --build-arg ARTIFACT_NAME=vets-service-3.0.1 \ + --build-arg EXPOSED_PORT=8080 \ + --agent-pool ${{ env.RESOURCENAME_AGENTPOOL }} --debug + + - name: Queue Build for application visits-service + uses: azure/cli@v2 + with: + azcliversion: latest + inlineScript: | + az acr build -t spring-petclinic-visits-service:${{ env.IMAGE_TAG }} \ + -r ${{ env.REGISTRYNAME_ACR }} scenarios/aca-internal/bicep/sample-apps/cloud-foundry-spring-boot-application/src/spring-petclinic-visits-service/target/docker \ + --build-arg ARTIFACT_NAME=visits-service-3.0.1 \ + --build-arg EXPOSED_PORT=8080 \ + --agent-pool ${{ env.RESOURCENAME_AGENTPOOL }} + + - name: Queue Build for application customers-service + uses: azure/cli@v2 + with: + azcliversion: latest + inlineScript: | + az acr build -t spring-petclinic-customers-service:${{ env.IMAGE_TAG }} \ + -r ${{ env.REGISTRYNAME_ACR }} scenarios/aca-internal/bicep/sample-apps/cloud-foundry-spring-boot-application/src/spring-petclinic-customers-service/target/docker \ + --build-arg ARTIFACT_NAME=customers-service-3.0.1 \ + --build-arg EXPOSED_PORT=8080 \ + --agent-pool ${{ env.RESOURCENAME_AGENTPOOL }} + + - name: Queue Build for application api-gateway + uses: azure/cli@v2 + with: + azcliversion: latest + inlineScript: | + az acr build -t spring-petclinic-api-gateway:${{ env.IMAGE_TAG }} \ + -r ${{ env.REGISTRYNAME_ACR }} scenarios/aca-internal/bicep/sample-apps/cloud-foundry-spring-boot-application/src/spring-petclinic-api-gateway/target/docker \ + --build-arg ARTIFACT_NAME=api-gateway-3.0.1 \ + --build-arg EXPOSED_PORT=8080 \ + --agent-pool ${{ env.RESOURCENAME_AGENTPOOL }} + + - name: Deploy image to Azure Container Apps + uses: azure/arm-deploy@v1 + with: + subscriptionId: ${{ vars.AZURE_SUBSCRIPTION_ID }} + resourceGroupName: ${{ vars.AZURE_RESOURCE_GROUP }} + template: scenarios/aca-internal/bicep/sample-apps/cloud-foundry-spring-boot-application/modules/petclinic.bicep + parameters: 'managedEnvironmentsName=${{ env.ENVIRONMENT_NAME }} eurekaId=${{ env.RESOURCEID_EUREKA }} configServerId=${{ env.RESOURCEID_CONFIGSERVER }} mysqlDBId=${{ env.RESOURCEID_MYSQL_DATABASE }} mysqlUserAssignedIdentityClientId=${{ env.RESOURCEID_MYSQL_USERASSIGNEDIDENTITY_CLIENTID }} acrRegistry=${{ env.LOGINSERVER_ACR }} imageTag=${{ env.IMAGE_TAG }} acrIdentityId=${{ env.RESOURCEID_IDENTITY_ACR }}' + failOnStdErr: false \ No newline at end of file diff --git a/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/modules/role-definition.json b/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/modules/role-definition.json new file mode 100644 index 00000000..9d1ac4e8 --- /dev/null +++ b/scenarios/aca-internal/bicep/sample-apps/PCF-spring-boot/modules/role-definition.json @@ -0,0 +1,23 @@ +{ + "description": "Used for Azure Container Apps deploy from code, including build image uses Azure Container Registry and deploy to Azure Container Apps", + "name": "ACR build and deploy to ACA", + "actions": [ + "*/read", + "Microsoft.Resources/deployments/write", + "Microsoft.Resources/deployments/validate/action", + "Microsoft.ContainerRegistry/registries/listBuildSourceUploadUrl/action", + "Microsoft.ContainerRegistry/registries/runs/listLogSasUrl/action", + "Microsoft.ContainerRegistry/registries/builds/cancel/action", + "Microsoft.ContainerRegistry/registries/scheduleRun/action", + "Microsoft.App/containerApps/write", + "Microsoft.app/managedEnvironments/join/action", + "Microsoft.App/managedEnvironments/javaComponents/write", + "Microsoft.App/containerApps/listSecrets/action", + "Microsoft.ServiceLinker/linkers/write", + "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action" + ], + "notActions": [], + "dataActions": [], + "notDataActions": [], + "AssignableScopes": ["Your-Spoke-Resource-Group-Id"] +} \ No newline at end of file