From 431ef0bb44602a57d55865bcaea9cfa4549abdf8 Mon Sep 17 00:00:00 2001 From: David Pine Date: Fri, 10 May 2024 07:24:40 -0500 Subject: [PATCH 1/5] Added a few links under troubleshooting (#856) --- docs/toc.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/toc.yml b/docs/toc.yml index c1884fb72c..9e2067f443 100644 --- a/docs/toc.yml +++ b/docs/toc.yml @@ -197,6 +197,13 @@ items: - name: Allow unsecure transport displayName: unsecure transport,http,non-tls href: troubleshooting/allow-unsecure-transport.md + - name: .NET Aspire GitHub repository + href: https://github.com/dotnet/aspire + - name: Discord + displayName: discord,community + href: https://aka.ms/aspire/discord + - name: Stack Overflow — .NET Aspire + href: https://stackoverflow.com/questions/tagged/dotnet-aspire - name: Resources items: From f6461da9f87e27e350f48c7f632b0a1c1aec5d95 Mon Sep 17 00:00:00 2001 From: Reuben Bond <203839+ReubenBond@users.noreply.github.com> Date: Fri, 10 May 2024 07:37:02 -0700 Subject: [PATCH 2/5] Update orleans.md (#874) Tweak intro --- docs/frameworks/orleans.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/frameworks/orleans.md b/docs/frameworks/orleans.md index e934618dc6..9a2f38cd74 100644 --- a/docs/frameworks/orleans.md +++ b/docs/frameworks/orleans.md @@ -7,7 +7,7 @@ ms.topic: overview # Use Orleans with .NET Aspire -Orleans and .NET Aspire are built for each other. .NET Aspire's application model lets you describe the services, databases, and other resources/infrastructure in your app and how they relate. Orleans' provides a straightforward way to build distributed applications which are elastically scalable and fault-tolerant. .NET Aspire is used to configure and orchestrate Orleans and its dependencies, such as, by providing Orleans with database cluster membership and storage. +Orleans has in-built support for .NET Aspire. .NET Aspire's application model lets you describe the services, databases, and other resources/infrastructure in your app and how they relate. Orleans provides a straightforward way to build distributed applications which are elastically scalable and fault-tolerant. .NET Aspire is used to configure and orchestrate Orleans and its dependencies, such as, by providing Orleans with database cluster membership and storage. Orleans is represented as a resource in .NET Aspire. The Orleans resource includes configuration which your service needs to operate, such as cluster membership providers and storage providers. From e1b43ba8e716e16b12a0757aec64c2fd22820f3c Mon Sep 17 00:00:00 2001 From: alexwolfmsft <93200798+alexwolfmsft@users.noreply.github.com> Date: Fri, 10 May 2024 10:56:11 -0400 Subject: [PATCH 3/5] Deployment fixes (#871) * fixes * updates * visual studio cleanup * build fixes * fixes --- .../azure/aca-deployment-azd-in-depth.md | 4 ++-- .../azure/aca-deployment-visual-studio.md | 4 +++- docs/deployment/azure/aca-deployment.md | 4 +++- docs/deployment/azure/includes/azd-dashboard.md | 13 +++++++++++++ docs/deployment/azure/includes/azd-up-output.md | 1 - docs/deployment/azure/includes/init-workflow.md | 2 +- .../media/visual-studio-delete-environment.png | Bin 0 -> 36102 bytes .../clean-up-resources-visual-studio.md | 5 +++++ 8 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 docs/deployment/azure/includes/azd-dashboard.md create mode 100644 docs/deployment/azure/media/visual-studio-delete-environment.png create mode 100644 docs/includes/clean-up-resources-visual-studio.md diff --git a/docs/deployment/azure/aca-deployment-azd-in-depth.md b/docs/deployment/azure/aca-deployment-azd-in-depth.md index 3a616874fe..dfe4fd4f40 100644 --- a/docs/deployment/azure/aca-deployment-azd-in-depth.md +++ b/docs/deployment/azure/aca-deployment-azd-in-depth.md @@ -117,7 +117,7 @@ This file is how `azd` remembers (on a per environment basis) which services sho The previous command will launch a browser to authenticate the command-line session. -1. Once authenticated, use the following command to provision and deploy the application. +1. Once authenticated, run the following command from the _AppHost_ project directory to provision and deploy the application. ```azdeveloper azd up @@ -225,7 +225,7 @@ azd config set alpha.infraSynth on azd infra synth ``` -After this command is executed in the starter template example used in this guide, the following files are created: +After this command is executed in the starter template example used in this guide, the following files are created in the _AppHost_ project directory: - _infra/main.bicep_: Represents the main entry point for the deployment. - _infra/main.parameters.json_: Used as the parameters for main Bicep (maps to environment variables defined in _.azure_ folder). diff --git a/docs/deployment/azure/aca-deployment-visual-studio.md b/docs/deployment/azure/aca-deployment-visual-studio.md index ef87c02555..88a3cb6ec4 100644 --- a/docs/deployment/azure/aca-deployment-visual-studio.md +++ b/docs/deployment/azure/aca-deployment-visual-studio.md @@ -40,4 +40,6 @@ ms.date: 05/03/2024 [!INCLUDE [test-deployed-app](includes/test-deployed-app.md)] -[!INCLUDE [clean-up-resources](../../includes/clean-up-resources.md)] +[!INCLUDE [azd-dashboard](includes/azd-dashboard.md)] + +[!INCLUDE [clean-up-resources](../../includes/clean-up-resources-visual-studio.md)] diff --git a/docs/deployment/azure/aca-deployment.md b/docs/deployment/azure/aca-deployment.md index 7553484c3b..374a7e6312 100644 --- a/docs/deployment/azure/aca-deployment.md +++ b/docs/deployment/azure/aca-deployment.md @@ -35,7 +35,7 @@ The process for installing `azd` varies based on your operating system, but it i ## Deploy the app -Once `azd` is initialized, the provisioning and deployment process can be executed as a single command, [azd up](/azure/developer/azure-developer-cli/reference#azd-up). +Once `azd` is initialized, the provisioning and deployment process can be executed as a single command from the _AppHost_ project directory, [azd up](/azure/developer/azure-developer-cli/reference#azd-up). [!INCLUDE [azd-up-output](includes/azd-up-output.md)] @@ -47,4 +47,6 @@ At this point the app has been deployed and configured, and you can open the Azu [!INCLUDE [test-deployed-app](includes/test-deployed-app.md)] +[!INCLUDE [azd-dashboard](includes/azd-dashboard.md)] + [!INCLUDE [clean-up-resources](../../includes/clean-up-resources.md)] diff --git a/docs/deployment/azure/includes/azd-dashboard.md b/docs/deployment/azure/includes/azd-dashboard.md new file mode 100644 index 0000000000..4b99c42810 --- /dev/null +++ b/docs/deployment/azure/includes/azd-dashboard.md @@ -0,0 +1,13 @@ +## Deploy the .NET Aspire Dashboard + +You can deploy the .NET Aspire dashboard as part of your hosted app. This feature is currently in alpha support, so you must enable the `alpha.aspire.dashboard` [feature flag](/azure/developer/azure-developer-cli/feature-versioning). When enabled, the `azd` output logs print an additional URL to the deployed dashboard. + +```azdeveloper +azd config set alpha.aspire.dashboard on +``` + +You can also run `azd monitor` to automatically launch the dashboard. + +```azdeveloper +azd monitor +``` diff --git a/docs/deployment/azure/includes/azd-up-output.md b/docs/deployment/azure/includes/azd-up-output.md index 53aa2faa87..b1c63ae45a 100644 --- a/docs/deployment/azure/includes/azd-up-output.md +++ b/docs/deployment/azure/includes/azd-up-output.md @@ -26,7 +26,6 @@ Location: (✓) Done: Container Registry: (✓) Done: Log Analytics workspace: (✓) Done: Container Apps Environment: - (✓) Done: Container App: SUCCESS: Your application was provisioned in Azure in 1 minute 13 seconds. You can view the resources created under the resource group in Azure Portal: diff --git a/docs/deployment/azure/includes/init-workflow.md b/docs/deployment/azure/includes/init-workflow.md index c730e0206b..cf2cd6fd59 100644 --- a/docs/deployment/azure/includes/init-workflow.md +++ b/docs/deployment/azure/includes/init-workflow.md @@ -1,6 +1,6 @@ ## Initialize the template -1. Open a new terminal window and `cd` into the root of your .NET Aspire project. +1. Open a new terminal window and `cd` into the _AppHost_ project directory of your .NET Aspire solution. 1. Execute the `azd init` command to initialize your project with `azd`, which will inspect the local directory structure and determine the type of app. diff --git a/docs/deployment/azure/media/visual-studio-delete-environment.png b/docs/deployment/azure/media/visual-studio-delete-environment.png new file mode 100644 index 0000000000000000000000000000000000000000..f7599a305116df092c14758848641bf85407d224 GIT binary patch literal 36102 zcmbsQbyQr>6FrI|2@u@f2_D?t-QC^Y-9m5=4#6e31a~I5yF+kycY7!Ke1GrV|K45q zvKC~fCv#4p>guY!t9L~x%1a=?;=+P~fgwmqiYkMFK_Y{Jfg8g>0VC$o{DiwjClmpq79NHaHnuf#Uaa!Ap;5iEVNTtqT&=zV5x=q|S5PgKnG6r!2nr(b z?b@nqo5cJNiec742ibj%slx2UijDdn* zL*TG#t!9d@l{^2t%+@nk`3F*7-b@@8b7a^Mm=NJgqG5e7_5CgoXX5^cdT%$!} z8C<%DfrI*^X-wgsL5Mj${bz2pB{4@5?`vAFH%DpPh!4)9;qW&|sfVoAoU`biz z$|(gKTk`DetU8jonwl=XMtKs(P3teUlzfjuX6s?}egaz4p)*+u{Q$lvB&?czbSU_o z-#^E#%V;v;I}R!Ou@`=k5|OfmGHuf&tCizf*0wpeT9=eqkrwvnPxVe&m};nFJV@g3 zW=jQX56jryfcBi9KHk+8^hV_!Q&Av%vCw#Nq|eCw{WeE5vvKQE6sr)KkBo;mGMOh5 z5fftn1c9Pjj)RnyQDlam|M%JJZ)k4X-$3K~3Ii0_ppi;4GU6`a(V*i=ZpyzG>G zNjb*OOc7P}2|)=m+<(ova4Jnb7{xWNZi$vWmqEu&HY!^mZzTx3e40@dk;B(~27g~I zGWx|HSaVp~+ZadeW9aaN$0BJBn;RG2H`Sc3w+oINdulRs6obAv&g&?qriPCQJv1~V zo5hV$sV-w;Le|pKV!Phip>`JbpZivBR_GA7>oc&iv7w`*Bf~>odh!Mflc+X4KDXvm zS+e5FQlM#9-c@{aYSDdot(+VhNc#P|Ch@R%eF8+NCmhF9Mb^p%B0+anF<61&htp3* zViOPRujtElnpQ3ThD*9pmN!%`QM{i-FHv^Xr>-3`K@>M}NM1OT$A-sf8GE@-slQ2< zK`@J~UmO~}xq9jO=b>Yr?`U=V@?u`c0fm4-&fT5;9Q4jlt6uSY)6w_+`9J3trR6GS zLcTC#MuCTln2VuQ=K%lO`dix?lJ?TOBTcr*#X90)Z4@&fEnmrYg$llpiHZN)?u5oj3%QMU~7oHWSxR-|d2T629fHnlVOe))*aT>&EQ8m7?bI{1}M$BSMx zgmA2P0%^@@ZF)5E+;ir!f0WT zdyi{p3O&$NJ+5x54Yo@KK;6&+Q!|Qnpw$AYRv8L@|Bgi1nJ7cl!MGZ4~(aPF+Q(#0_Fai3n<-*T%r;Lu+ za7^N4rh@yn#@~_QF>k0lCeuhA&pojMto(H(yp)uo;ISvSn&u7;EYDi@3Ej`v#-NFO zztSfO`pnp2&&eLyA)& zz%AH!ZeLj2oYc>9SGHgr5l%)yDyb)S8i6!3#=4BH%-rLcq?#vAjvAPC^uwFCt2)O4 zHj11c7ni2YDU-TFeRdCS$g4yD=;(;JkW88bA5y9r-yebmD=-%?btX(nid>inTNp?t zUwxIZ{spB<>C|O7VIlae&^+%f?6zp(oarFJU6NTvWHE_&XG z(|$FO-*$GK_coqh5Oz|*&uF))?PXyhaoe~bX{V|}Gw+X4K5_&OVo~y(+)~Ish+Akymuw$!9-@3r;n=%;vP*IkJJYRl3yvj=v z|65?uawR@@c#=uIkdINZeK?;TL*T@Bbiy3&J6Q6A^g^;1KZXgnr3Y)At~Ab*>5 zlAO3B5%Pzp0c4X1O4|oRW1FkR_G)~MT)Y|o`KW{@4c3WiD|xfQot9`h>E4ESQ2V3R zW@-(Jd{}4D0lHG(zK*n&fDtztcVC_w#ccqVcXG5i9D>o{08J>Ilw;rB3KzoX((T+w}pHT ziZE>uxGsr;8`HX_Rh~4SGDj)JlT7SDY^p{~-Yfh~P(nO9`RU_F#mgsN>{svZF~3hU zH@QsBIH2{ou8Zv!u79@Q>Mn$OZT4WGG^Fj%qyK zr|WlwHe`wF>?+>289X0hO02(sWe_~j2@@!J_(T7PkU=Pb6=f6Z#=^5tZCL$sabh8X zY2WFstpbvW&mW=Om&QL1uW3bQaJvUjmGJkyd$iX zQAekyR`VQdGB2JbOM{!yZdw1So@KQ6Y-nKLh7fLwB5LH*zla(oLlqA4#CqG(v)~t> zG91K>aJ%8vZK=+MQdp?eCqKB}dR@jo<}NE&^ClNXL&K6PId^;lYXfJDPeM@;-&d8! zgP!3y1jAc^+HjQ$Q;(an%r`$Q;KjfEz!g!d=zNyyOTroTL6}6E13hRtTlpC=@+j40 zw$Er%G=G|RL!{tfDyPUvH@F{o0JR{c#iyGP#OSCgoVGsmtp?1?S58SC}2%l zK88Mn7p~5HyLHZPDK#Y~`w5N-Tf^%;T_}B)m}kP)(8+8*U*BG#Ac61|C1D{sgWBTN z9y2FQ#Ey5Lc`rXh%iI@D965i1*idU4wir)lahHLL2-9Az3m=cGtGYhVRtqI1#450_ z8OsUEH&ydG#hbo1m%`3aay-lkpsvFkr(Z98_?@Jz2QVy!c~s&*GJ?^gTQ$G5eo+0P z(Kl&BDj9tm*@d4!cr6i)f-suNl^7izt#YKOmfYPfyym$bquwt14*@vkaW91IXb*Eg zv9rdX{@(9y*p>T+u)AMb1*c}i@Ofd&{43|`2XwaRvM1fl&TX(@n2k@%zYdh;U3HW{ z1)qGFgJF#%RJ;uPVOhWM-BOxdog+ee0JQka2y%C~n4ecojm!7J(MB)hA53~6+FyRc zT)yxeU0Oi4t*|_Hq=%)GC$9KW^&yDxX!Tj%T?^vkBi^T(VieVkrVwF%-!6*Lrw^(P zEg0RW<>KTY%h{sOwQ+fpM3C@=gkS2oX^u`)y@=b7WpY^t#Xjb z8vU06$EJ^fTDM+efV!y7P^oO=n3xbO(=~6*I3hxy)-kn;5 zewTq+#LwpoDcK`*(`!nbC9h`KbuJ8ak+>-n>}=hM>9{7vxeX}R;JzD^onTAEfMztm zoT+I11gVDz^Jx(x0XeZIAMC8lTl1NspmNXWnb$==1OCdvq^fBA$>gn<+a02EfwoCk zb!DGeLq%!Gl?D5svu^TORDY3(3kK{a!|Keu(!WPneOwo^_=QR^PawwCR;sB+9!}Pr zBfXwqhj`%=b_gQ(}~EN`b>P7kDj8 zTau&xSuZp;U&oX>W5G{;jylK(%zz+-heHMbR}Oagj5I4${&W}%ZyRKCzdk-g*_LNH z=mA$!a@c$)S2Nc42@!hui0fX45hde?Xn*dMY&E^<<`Zf=IAa>>;Usy)4>cdAB8t4~ z)q!FiSj&sRa`iqF9pTe)N9O0aT!m-v#>(aHOKm*+bq)1ztfKMDr9^&pED_FFD*8$a zr%Sv8xnav>JWHy3#g`S?pns$ut9^;$tzD}{`QTFsvjOkGBL?*Sb$ID*=+h^ zzpwfkQP=KLsqf2L&9!!pG)-bPzSM2m`o$(a(i?GZl5!OS3g_`2G{Igtwy_EBWRBI| z%J)WNr`>&F1b;LAerX{)R{|K_2F0S#<`=|^~X!n~+?Va(N*NfI~6KZS%h!Tq!Xe>DKc zPnNW1io%*!A$2S(5VzN)y3gdDe}Up}B62d~EN@X2@ytU=`09csrXB`k9eMA3@gU!9 zf^8KQRT3?2cESeQD0{0pxY3>!A-dl9X6&4uCOmgeXy{~xP4FaV-hBavhj~`C9m8^f zN~n-p53ApC`!N=&CGgpPj6&LK;~HsgGs{e;lzWOrT8c<0uGz1>X)NYF3g_c2*c;ea zOuyoC&zCNz-ZEU=*nshAjvNa=Bj}=cXDB5(njUC3u>z%~rU&Yj6ePp>KTf8W{Y<2F zd~q)(IG<(+x9?EmH)`tM69X<&``F;yXu`fMu%}e2raz|AUfNb|CVcX{xG zTMA7`8>4F)Ggb74k2GgsSbyOaOHXWms@m*bIi}Wai6+Opn{wP5KfJYa9lE%B47e*e z7D!lhAJT+H+EjgZd6v=G@^v8Mt8NV*d?Hovye2(&fHN7^V+pUe{_HXfrc8$k%kLRp z{H7xk)}@l}bE?X%nP>R8&HKJda-t6tg)?@0Zy=A<5t{9R?RmN`^YDiw*e8G~tBOe- zf)MLizcWmXr{I8tEljD0JJGz#=vJk=HoxMmezogc^0DTA+qdIt&ffF2KhH58u(%!I zi9^9spEmCwv?qVcN{D(gf7(R6(l{YGPU!qBF6L5S3z1U<$?qR9x2|hp zyIQ@E}zb^Pb#Aq82veR$&ujv0A**R{>pAejG zBr04PwXOHTyxtG_+5DtCLN_z>I6%k;CBbF0=9{j7==*xzT)J(jeDYX9RZ31VCZuf) zdx;|9$PUrVoNIvr0^Qo@ON^QxeN}ShsfU9pR+zBH{PXS-E3UBde%6`76t+(M9bbO) zIbd%H;bZfwfjffpY~}u~fYxBT^;TWLYnZPDM^$S8d~BTmgu;TV$q{Q7PgPrx5xK)w ze{_pGEkpY)%15>J?A|l|`tV?h>b+Kb39aReIX=u*`Q{Wt5xxfzXsw$7hPvanqL>++ z2-|fOnI8Yx)TG=}B2m!YrxWV3{Hl9Vs1$~+RFF>07z%)NS*E4$$8XzjcSLrmMIOdP zuG8udmG1m1Ct&agMF%G?BDpPwSbr{`HZ-!N|?L{`!|Q{rqOSG=oV}n zMf@x#u_ZrJ=+TU1(2>5$MW*HLh#?0>s}WCzNfFO}n$ju^8 zDT#17{7};H@#K^55=hc*VLRePT>C?k-!%avNs6bLK+EITX~D5eNY!35!&(T|T0a;5 zKttryGlTbhUSz=B;Qoe*dhFJkIPG{EVqtVr}Gb4im=puKHpIE9SGr=1iO#<6yiW=sXkkKLuBEB0u_?75~~Djd4gy(0#lpz8AmQl9Viy(v$xKIo2T`ybJ?q{VW8Fp~dV zE<%GDmAw;9_}LU}yg=0q(OB>V*In!`SEhEjX5vo83fghYIh`pCoSUFOO|rWtOS`H^ zDySp4(t&@1a`#NdotAB7NtyM>i4-KYUPodA)bAug=in^sI6TVBUJ3|yw3HIdXig^{ z1?s)}*(9SESJST?=l%%^qfVpQ>1(xUe*C_H6tT9NeV_%R-^kpJZHhL2hlf z$nLq4a|O?Kv0h(=yFTWZk>V-8AN<_<4B3L5N|)Lt5OSW}m-F6{Lqw-I7PE_NsvDnO-ww_jSREOFUnMn>{a>V8kcnT z27xw#r|)1;r1?FQhpZ(}XQt!}%BqmP*?ACcK~Mwf0SW*z@9m>UhRFn=tmw72P32*} z9C1a&sB-V=V5=$296K51{}@rpMbUSA6E+u5_lf z(OXrG2N)>yjaj1FtuN-sd$>h0Io)%7kjR)}&W_~JGmi;W1@A~$Q%>-G+!gQ;~ouXocz#Tnk7ygszU}J_{n-Akw zG>8(2Tw7av_f1>)H(Stoa`N*2g_S{^MD-*Ba&s8?w3WZToTcR%+>(=7XXljk?Fwp} z(|+`e;~v|TR+JSMHe(ml3YzHA{S3Pr;!zbftBm2+!7%%oJlpmXJS#pNmpXHBwP9&n zSW}fU{KH#!jltsO(`>4es&>c-mL-4D9(Gu)s_{LmqW=yjA}F%FOMGb4?}VDFpYUq4 zq`a`cJ`&2~tKy)TpBnW~GqqWERz(Ac0f5y%UKZe2+IAmX#K<91;s>O z!P?3pES5=g>FdfB7?5w+VAEu;%O-nMb~6m%maY-iWhjW|Xhcg#%|68eJLDWngVEytx*RK>01T^bgSbDpR8T&~|~2CybLzIIfF zdh76E$O&~f@Z;L5p%eTO>AEDQ_Tx6P`m$%K#N{?8cCy$UW84(Ez9K0n_876Q;&y#L zbVymquH;maDSrRoE)GV`s6Zm*4TMqZX)2CkQ!jJzIq=3_@X^4NE zmn7Jd>3@Z{U}QRqPk&)H@Iijx|D)3_ssH;I6<3>Uj1~HCW|w4n<<->=$Jqb7y8tS8 z^}@yqW2^o92VpQ| z6qLX*a}i9;7k_T|lkg!^>tn`$w;jimBJP!vFHY?5?+4D&B;+v7(f@^6`Tqa!5nqKG zYIt}OjG}hI=l|^58}fHZN@JR zy?Z3FM}i->XkeVCMBlx z&Lzd~Mm|fg_t*ThlkUzkaUkPN=d-B&>+S0wPA|qGN>nJd(;l|CKSP6_w_!+!8R#Fg zrliy6g5SQK{P;=2>yDf{mM*z}ajg{>Qh$cla?5d@&X-T=)X#8#0RP&2w;9%QpK^E; zZW(1UpEYvcnG(qKHNVfW(U=WyQvdse%s<<0O^Lt8z9eb1NevxIfkr>mH^=pZW0^hX z{PLYc9R6cRFnVYS6LmK7lV#vLj(exU+UqPd*})oD)J-+(zyY+pMQ!7ct!v%q^b%{# zM2B>-94ZW7H*{P5u1GoPn#W}-;=i^Fe@C%nk0~$rWC=;e?2jetT1)teU;a8Q?*iMy z0E*Btzw0j}G#d(Omj{OGF! z0ZFkwdg}6w*5#BUaEE`sM}AS)R8?e^6%&E>yj8l`;{#_<%t zkQU=21Ifh&dASsOb&02NwP&GDvFiS@6p=xz06GB&qrV@^!Pp~Cz-51s6F=nG^RZ!J zi0)TG(ayy_<=%IzX+;;;k8p42AnamUi;E4{);@~(By_ReVTtDb81%E3W4Gu*#+lc9 zP|r=Z#)IL=qffHKqE0w}5dj~|G&L3V@2VoE=OX=`j)s)Uoszwvd}zlWf(0k59Q2#t zDf{M^skiFP-Uj_@O$d}r>%DLHYkQ|Xr7tfYE{8ZKd8JP(Z~o74JJbg3csDIaLTAH= zB84bN3-8HZ6Lt_4H_bcJ_Ran@IO>b{cPq{2f4U8Aa90Tf;?tV2YWip5yDlXjE;`)s z<9>7#y)&kc8;SGY{`}%|w%?wS(_O;Fa`1z2;w$1|Z*Qka>zS6!03mPzyDyZuiG zbbOtQy_LELiIN>xpd@yJX-f=sxqt`jG{*M-bh=;3v z>*5gZnrHE9oF3}!h`S26KG8y*%|ZQBvCO)aEWy@h$NJd*b-mV$v#&*VEwq<=KYI3Z zXHZ&vV)}A9yv_o48ENPw-y^m+xof^5+F_PUvvGd*E+}WB(VgoLTRRKWK#c2=Kzw#` zobzo@4&&2P4zro8LH63B;C<$sr~{{LLqUX0v3`Wh>25RG{xr#qO!FJ^DYrQb=?(uq zUws1es~PW07``;-pV5MkeCb|2vQ=5yLv`=-iBmrKiOCk}H@^c8UB)_edCVYmT&^WY zu?G=?jvhuBvNzHLk$xT3cxYV?2aN`hW|up(WK#S2C^=3JG$@SsKQB9^8RU|)q1N`oxR5og*FKQ(tjhhQL8NNu@hfL%Pp4Z-H4En&IUfKY!pt7Z=I@)|PKNh+Q zpF6L$HIzQKfUJ$A~YYZG|Rs{BPAqqna!hL?iCXt$sG(^zY8^p5!G^4p)+fi}ygZNj~P4N|WM zz0vo_>XOH~HqqicGkJG{0NskLMQoq9rMFIR{#ioay+@3b5eQjSDDzhPh^`aL=_>aekOoqZd z-AE1;0#58b-DI5kv1Y=1E4+N`LW|AS;@TrsY%5e;`Z3iO4BVFPwKuQM!^yDo_Gf)3 z^_&&+;a5m zG&nnB=*sU@{I@t8O2HKdB~;`v++vd$MC@{enhMD(e9DuqyrE+e-Z$zxK@@BsGg*Im z?Mfq_a0x!9#4SAxP8`mY44NyT`&DIk1-I+9XCDi{idQqHj)>{%;(M%lQF3R+0&9OB z@b05azu?tz{14e+260GuJY~@42l}l%cCV0<`#) z>=Z0#p)BH8J!PXNE^|NOK`-F7Giw`nNMGqG??Qxwzv149)8QiI#t@J0bX|{Kk_8eA zvE^7$OzgA-B^RsaHBM|Ew#|6?&1+(&H0*nvzr)TV3k86QIrJJ%em&>0cO{loWHYP> zyM@IS!4|KKYh{UvxtL45ztbBX#T%PA3kV}u!Mr#Ib&Ld-G1S4dt&RhVqDc8-lm2L& zFS^a&#iB3)J%otC+sSOE z&?`Ef(o;t+4@Azh1qHtl&mJWF~r=}rqsMuUs#(WiDrzUwH~$DR8zR1AjKotjk- zW4mKaNGB5NSLu88YM-F+E~qbE&(^Yb(uj-+=WzM8I}@X&{A&D~6UYp3ngm5K!jK*; zIqDgD`VovS>Yvll8^5a^gY>^Cy9ERl}02rAy0 zq{Y0LRcg0kIBN!vZaYE^g~t(YLTAD46E7f(t|we?R=@~bYGjB+;ea=nyi*L-_r|aq zpY!d!hfn=EhZa8{WFJp>#qQS|XpInQ%)9$5G!#nTYZv3Jc^eUvPWy8u(qFfH$oYwY zgcPvzj5)nMOn72YOT;#tfD_1yJ*HltM}v4yo4*Dfxy|TfJu2!GSLgQXeI+eZS}!rh z;REyPeOD-v6f|)ar=)lEnZCdO32EMC7PHqn3`+Z2e{v~6`b*j6@U98-q*QF9c4X$v*+oi$fB4vIu;ey zdi6s_B$uvc?5YC^yO_w3MUIkTQ(hFIWKL}StOmN0>h42|&)X_08k!R){<0rPp({9v&F+tI#agf(G91hmwWG;iq945|gxzG`L@I;Bnc*JB>nY2Whtl$Hz{% zw54JwzwsAHFqc>;km7kHc=!q+{zUTgDavVA$SX2N#5kky(7`zDp=8cCU_eb4@xAEQ z*=f7gERgjqk8?cGL^#V0d0-7G$k|0X;0wZY5uaol?;DTfH(SWFZZB?;0Mrn}!_vHj z6FBE4!om>tO?YA3&wNP#&@WtaLT2Vm$38gU0u%C9_f)wC13;%sOG~Ye75!(uZw>(B zQc!y}ORxQ3j0;jf?5=+$TG3g2`cG65{J>6Pcb|Y61ve18!M!>mD`p3aRC-8sAOF?S>Z427x2DHAp`rhWc%RD@3m?3 zQN0|ad~SK(sGd4TTm+D^$rsmEil6|q5v2trk(oQL+?S8z^`>>mbXb^}^YbMCr~_|2 z(|>eR`2W9fa){V^iZn%jsaG~Lj-MR?EZ|m2+MxYx$6u^Kj44gY&wf_%S7rBKUKWhJ zpZ*y+UraYd$B|$)l*I`*_0*x|^=`%MATKP9-|q=0 zjtw{FkJA9bACGlEK$N?HWHx*F9 zVn&5b6-dmqxLAPcdv1QT@3>X(?&-ndasNUX7nYQSuB@ya9vNx8*&QM(CdTA*XA5?B zveff~%?6vx`E!TQy?F6VjrAPOi8~K4O%jpN@9_Zh*dEYovL`@5Krqm6(^pvU^uuAd z#Rii}rQZcqw}1SfPw_b&zpi!o%uG)H?vKF(z&ZTu^Zmf4*dt_v@Ut#jD!RxDyf*ny-dwwOX9X!;pyH)+YY#J}gSBKxDf7sSKr8 zeakL*84?XLZJ8ae1-IARh3kjyI2J%?@Yk4tRI?`(p}=Ay8z^{u_!@ymsjR5@b>aAD zb2B!O>3;`8;s8d(z`*zrBt+=B0d8$=O+`od(_|nv8ka5dNLq3H;5@%*2M z8lMX_sOvXio^(zpQozur=H|>!TcTj0hy=rbtqlm=#0%nm&RW85Zd_?-Xa>i}ixhJB z!Cp=*1bR;0RTLEkeSLW$q2P0E7ODW{F(hbRfeL-Aam8LlO$`}_H`GYZjVbVD|h!Y9QF>2bNYcjRUm;x z-?D@1eSa1+XANj}Lk0+aqK~UV*?Mj6N-8tD2LAs1Ilfn)fFF1Q?j*o)!g|M;fLn2UoQ;0_2q)h;8({Q&cUqy} z@dGdpGc&X2MHjSF+v>rsH{eY2?kn1WFXi~%;kdVD9nKWzoEYEqJsvMqTMQ+T^S<89 z;Pd;Ym6T9T&&&YDD~pZafxvwJ*mF=MMm#-v`|=Zg{P+>LHg5I8$Zo2Eyt6ZN28VtBe@glj5gSm37 znPLTtu^(&)uG|0|>b=?>3EXq~SiJ4Z4QSQVWGR3<{>AcOd5SPiD`R0q{*u7vdw-k= z@C0ajbC3$A!t<#Fui>SEPypEJ8W7ro8Ms$MlvGxdW5aK`a!(z) z0tu_pVSPOK6B;%UW7<5<`A@O@!g>PB$^b_N778(J+w=w4gqEyhF+p>4bAWUih%G=E z-?3E!B+Y;|bm_6m%C;OiFCKlHSM7l~&zLSt71`Z!zvgp=4NUUpa0Y-Uo*nwY_kd|9 z4gqRz&i#Gze|0Rn=@6;<@M25K>cIW=pPY{7%?@tS$ z=BK0bi0J6Tva-moAZRo^yr@3r9 zUaPB>68=CO5hWjARyLoHG4Ox5vr5Xm`(4-_)@1L`R{!p)3Eu0`rW6Ap7z~*j_lBeN z_VrDH0s;VOf6bEZI?hTHH7#w=p)0e;nJ(}U?rj7)6CVBBpk~4j{QzdKzj-~Fli+U* zLcQWHUB7^>LEDEU(G6paRU6#f+nZPk*5-b?PW%^QkwCGamkPVNFPy^Aew)V;t$G+)#=WTg;IZ;ZI5ql?If^bs<^n?KhNWu-b z`}e?)c6WCvNAA5lfNlan!44ROQil-?FpomxAS)YNUKtGlkDkv#Ig~lR2~F$%c&Q_O zfA!435}7iiz=m|XSFPF?18RR@@H>ztv*a?^vu3W*0K@h6DM-o7^IsRM5|frAc^|hR zg<}XH8u|0QJ(W4UN+TG`o=MN9>AcJy{L|}XgB^osVJA*dm{!CtJ!1g z>4IREvPNkv&?eHSK%|Q}y5A_L?)GzqetW9L9Gm@2Z*OE|BpTa^YA3AyKg{4_7%u%= zU#+{-BEW076VuIz#^=8J!8Uo_FZW>z@I;%-8j?83{Wmtw`)aN@lnA1>A9D^3R3sRG zA2o!s-G@D;(?q^aL0snF0X@(}^MC1v`M+^qKvyIp^jKw*bj~mS7upHGcmiM27Okd& zXAX%kW65L^`ej`o%`AbOH}#fV^PhZ@DE2STVHK=h`#pN0xqKX5e1bG%nQj@hxz)-#NdV+(!_&E^2qiOgC@lqAjL#})j%x7pFWf!20c|q=|{n(X{c%K+HNS@ zpbJDq@6YvHOGA!D1#7Ws_v?^aRkPHNDoNN)28`bVxhf3sK(LMbXRS7OIv)2E&h5*H zh=^z+fove$13Pu1Wo;gnkZ`=-YUbhPdVjQk$st3NQ z)KN0$16|UvaT4njUQ}~F>DkE^VuPZ9*^@kCBA(-=Q#WS|Ra7f(GR&Azrxcj!TXFT) zBd)FcD?j~oiD+zq4VbL9y6x=lIxXmVFxmfUW+5cPz~~!{Cu7POD_&i%(&PE7!p|=# z07>l*~oxK5lHYW!K` zm|Y2_dT&zHnMv*ZNr~cb>JmNuA#_x9p`B=Zj@Ru>^*l9Z_cqs_Cp}Ltu?lL?F6TNL zDp$Yx+I6PqdwdZ-yZsnW))4#NW=PW3>8w@8o$#*1nf@BbE9DetGjymq{9N5J5m;26 zT}{qz2D`BKV>HF$txJ6c39E$`-S}r+;8)oD-p@4)$E5n@`+RLNq@Yyd_4l8T8(l%R zYwb7yqEc2yC6kEVnNbknE3O?iX942IOP79%A3qV08J~rYxHS$B4;O9OS#hNf{t^JE zJMCSB?(dWF2Q^LXlt_Y;`~7#1(nt5c(u3z#RfG8Qvj-VW^&{3o5!|Dj=GIN1o`NQW zfrbeO(&w}1^qY>(18qr31(GA4buzd5k<5{v08pyZ<^C~T?YA{-F<)bN%u|lzUkTq+ zWDB(?Ix!foX5mJtIprqsEBO;13OOrUiQZ_NG}Inv=LF*?dZ=7J+vvvNU;1d1dp*$P zObpCd>U@HOD*&*}=g*%n0Ov^rK&HL@8TA10b3Mv3k@?4gIoWQ ztm9svLheWJcAUWY!{s)R1}h9e*`W8=^A{lLQqa&uuD|SYP>ukpg&hpYvHL*U+XjFU z1qVlJakh8l&WetFp!pad?kJCe#`HjHjQ_M>l3!(fcS<4>2t+Z9#?(74CX@^|;^zG#yN zhGVlr#;mzsIaE$bKLz7S5%59BY>rfs;}(Sc;#bkpER&`>7}&qu7+USyfBP`a13`5V ztxj4{5D^>u+jue${3Znk@cf9_NYXzQ4)nrPMz!L|7zA>KYH<)$k%%&yoJ9=F`mW*? zMwsx+dpdxkxFX(2lg>y~G}vU?M#$thE{fD_#1-9>Lw{KhK4IvRB?&3_kCGC}3UP$o zF2htB0*3=6olAiQ}k<*O3mR+jNDX~mF1VwMCLor$Z^z|3?NoD zZ^6FZHGu#==#j}QuY_I&dh@scXc^6{;%HVV2VQY9rN1^(NVnaOgJ*xA{ciiXDcPqWj@p+bQ1+sk7#As=o~ z*I#$!SodWScs*2TIj(98kBTB=VL<~v05&y1Ow2B~`u+x0a+#D1;K{Cm-QaTGaSvd- zi5`{z@@s`!D`UE{_t&f2g#ogW_tlu4PRi_ww`=Z(QQp>3dJ0W~E$D>JAUcnOjrDhk&3(TTzAsXwNauGJ4 z?-@FiGs~;ZKf*%!a8MX{5NWuc3z_a36Fx5JoKQb*J&_%<+w!N%-&{-u%uo8g*~uPc ze2Zt)$?1r_r$L9GBEa#P>li&;$MTtDCiFUSb5G{(oWT#SHc@7cW?e}$i`jKR*qsfA zkc|m9YGg}M&_zh{9pFM9P(l9)K=zf>{_}e@AU}O45y9rL#|P7CwB=G~=jMJ|^bJ=k z5C{JS^h}~1)vcTYA)CJAM%jEc4S?$vdTn=$Z$SM8AgOg06XpOd1sm|D1~AD|hYv?X zL&NOcTzpDO|Iu7|%WjGeP@?%vPak`9WE~k5rNC*yh;6#kXb1Q?G7*siz$w(!)WB?4 z8e;&)RU7c`57gI|YR%w)QB_sdNg!bYRR_r5Kt_=RS{?yTEK$9nqOULS;=%$H?&Pz$ zjcPO{rKPtzpU)t3>+5d-t(EsN9RTJ3vLm1c007v2`|JN&a{ZUb$MIoSr3{90vWpsu zS-&ruaMl@zCYUdeIJ`NakVl3#&r0dClclUWw0HB%1QfZRi*}!VarbTg{*Lj}Famdc zwxtIr#TBd{k+N*d#Q*(3niulSY_kuRhwrgMFR_R1HOz3OIV(F0m1_8pu)7GF(eHDu z0XUFC*F}bV#nW*?h1Jo798%2hh8HLM$Is9P!(RyBMu^gDkHy!<`S@AICL8>i;Hn<+ zvO7~<&MQ+{ymu2l6@2`(^GStIRZeL5qQrZ|_NYQL>|W~fzUAj4eci31 zC=%;sq$3R_uj;SEBn7%dfwPCaqM}e>sQ?2yblhV8B{u%=@i#ys5?0y6a3SEZZfiM`;7lnlegRdo5W&rXp zw%e8<^6Le1i;##238o?I0|{7QA0qnrQ$P5XYiu>a|3?fo;CJ0quNOPoDHv6QN^Na(P)`Pke=>Q@A_%7;i=7;_d(J+hE6+ENGb{bf6RScKr*oKTTA zD!kc@cu3*Tz1*D5HPI9kRzFb8$fk8AhDeaQz=B6oYw8}X^G!h7zambFDhq`J!z207 z+2Z;zdvG8`zb|j~oUHr7c({D{xNF4Se<1&eN;4OxRmTy(21)5C)|$~BcwpIu@3Srsm*j)B1RxNSLLywej(MWij3QpFe-8aLYk{lxBnVTutu3 z=F%x#3v$6`q$=Qi9F@w#AEE{qeq)&5YwIYTif-wP|0x*K%lZVi-@_-wIgaT?<-R*| zxW|Ko6XS;a23~KW@5TFkLhkppkE`#uVAV(tj0yGxTM>=lY9tJ}tyy=_3QPG@+Y?Y^ zJN+RLw0xG7^a7rI?2GY=IYN_S#p}6{rLm>%dzIZW0vd8->ghlI`bj9VB{*F`qp7vm zx6TsGKL2$Mtk85)NNEsUFpO(Y)vs}6Ae@EE=XWHq&)?d>m`;ov|UF%lIOm7tp1 z@bIwb;m=emYA*J>=s1D5w1foI?oCDo{>RTi)fQ|Z^t0a-?bX}!IpiczVa0Q37m^u? z|Jj&AuP1G1M+cDa0iuA+rzbMdU=TEtvW7<3g3sraP5^DHs;h6gw|Tui?&AQJ+D{8N z!?e|k`u>G7<&BLgKqYB^@pyJ|(X#^UU&qu|1}80ecXHdug|0c#n`}>8o#6{E%X&)n zbN*&1g||irT@Z^0b&fi3KS7h6N!PZGR_Ckv-r7AQnT=n`?uw_q7d7+``mNRhq5&NE z{0GR5YCsgt8>-8cD!|X2)oRR8RiM%@GOiuzjF?B@jlxFGh0a0vj$jK@{mv-=I?;UA zsH3>9GnNo{=ltBB@p#M`k~<|lN2&0u^r&3#qyLRx_3q_>8}_55qdXsdZrCU3tU zSJ3*48APo0t|lIFG-^gyaQXZ1gK%`&2BPcro`w$!7{tp+d&@S(lay?zGS*z_@BFVE zTi^RjMv4H1cj}UUz+DmBvsyAjHs-f7@8yOR?QRnF<_s8My=&(yv|N_`fZ|BfNK2J| z$5Zq`wQkE*ut1JgN&LvJabF|`rJX^O{VH|9-SaEuT$52xsEGgwh{Xf`caOe6`aIQ) z8^FRx9Qb6%+j+kMY&-rt7bPVWpvpV&*6w+^HFFk3CbR<=6B9F_U;OPG1S~A9e5?3h zXdgbW2$cHAJ)1l>3!_WJOmxqz1>Ab)I7zE^sPaymd@O$qDkupy)FBQfwiS0n5+iu{2cW@TLQpXT9bZl1#Sb zdQ02S6uoG6Q)rg<{a9B0I=Ye_ND0re+tWiqgHI3Z72{l&8Jd-A;e6yl*p(T}KX7q< z#g&))OxTVDZ(F7;S|bb;W}CkH6Phfrfjfy};0nM@F~{#G;M3XI zEK0C<3hiytuLi1Y$KJA16x)DG_7bm5wHy~Yp#MDA9k_{S_QWZf3*ER#w94;OCAj!R z3#<$#u92K^n8C+DGb_u#Z237?FX*1}AnDmED=>vukV6ba!rL5Jem}Kq zsAtxYWWw&~%&TbkPooLkWmNvX;l7Pe0er*|n2V+}_-MRFrmk|I?3NCzIiHtMSfW z92uU{wevg-_JUQ!$!yv$F0hAIQ{fSJkhb0R={x+!p9W?`#S7%$2B+poQ(*A0T|x88 zMYjZgc@p52>$X(L`7(%k++(DdBpvL%5JYT$j(7Z-0Y=c#_p7?w#1n7H{#y{jkFQiJiZeqp( zkNH1t#Q+g_6OKfi)~Ur+xS(f!E8BW_fehf^aANpd(G>U(-mgHamhzu9)rN*E|EKe{ zDWLxhf;E^VS{H+;Ky)hHyf0_waiUsVW{{*qWl@SB~YxwJw>Hmqs=8Km9G!Q&rqgM7e z023VimDzIjr=lVXzz8t_xXJ;ssA`WFM_oO=zp*pSh(K5@W*IFlulezfK;Z8_J~IG7 zPj{pW3Ya(7#oB}jMBKcx&e>?MY7ebpnZAJ%O1m`{lj7&#gYkkJ8(9I)Y`-q;EP$^V z5X1pQvBtCb{00XHwE>>0yn+JTt3I^cDPvMf%GYeruOL&9vbCq`{SfNc)}Sb@kyhVu zfmZv>-%G*!4*I<`1B0BwB{O+RK0LX#5{246UM!myWRP^T$Fd(J_ zVt=uo4v5czOwP^<0`}+79Dta0R+^~zy8?~KwHsFG&|x-mjurX={=+j0?t@&WB}Rxy zo{}%e(I45xMFaKeRb*PY15V(_I(p_fv%2a&eb1Z$lHFw-(T|H3MR1s#KQF2Otgyev zloV`>cgCKNK&~<>PjiuT648-=Fc0=>SB594LDDac6V+Df&D*gqc>40&iG|4Kq~wP7 zyjWKb9xBo$!zcA^K$_-1#J1O3G5}P+aJ-S`?pBD*yjrvqH?e~x`Bh7XL zBZ)hzwNbSp0<_G?znhF`rnrcwIL4$7J4;@lIAz z&NIXEi;_LxTC$3Ps}oy$pZDJ-k~zZ_!0Bjr9Qf^Mwww9+v{ z%noiiuUApSL4syPJE9KWoza|Lw^UQW*E-XrM5u?vl9oponr?iImJr19tmHUR!SGY0 zh5}ws)*+k^ynP5frk8H!Gn;m-F61^$XnVfj9$FA4F_47(vf>=Dv$E(xOP8=U1=Y@N zs7~j&ct(Nua8AnOb=U%WiJ;e1@xh5SS)ecKkPh;YN#z}9#kN)$*!=DGqk zDWb@w?ZC#Ah-0DXU34(6x6oNbsliCCit6rVoDFQ-UEp25n)~B`yg%1{~!Z7E1>A{d)6344TqO&1=T963rW;mmLTYiI^}q6QcgJ9 z=_}n86qMt3xRU+bfUYv~?6ZbiE7as@B$aAb@nem65pHTIQ?-Q_*S|R*XE_+7FNbm| z)k4@ztO?2~3(GpcLFD|A(QHjC*jc9ivtBn6XfR7ajxfHY!;NDWl|-`K)REdVAf8C% znMa`xLZIDk?%y`^x>;xAO*>=LD^Y&Vis^-3?C3d|z)*@m*XV^6X~G~{@fgm8k}-n@ zQ!itGNV`T4ZaqZ9zWE(d;2n{h^owqXdYGR>%VN?}{MEv{FWemWY@oYRnH8Jl5o$`x z>LN{2_nxtf%M)(e`lgfFf8@wP6|+Xbkf6C3eTd^pRor&@cy4W<7=Lxfel-*}FvFDz zypkEU=qWqFG7il;WJz~$~;dwF>?kllyG9?)2fWnMGEmQLQQgm$nemOLX_`{1`Csa@3(uIwJ&AQw~!|4b)m{2NL(FiYmhFiIXe;m#9yUV*jsq`w$_OU zpLo#e&4@oyZg_OJ2R|~>FB2i^$jGFIE=J3TbpcXcrRYe{X`}Cdy4O9$LFgX-Mh=q# zp)yd#F2D7r_U)Zzl-nsYww7zAi6Ym^Dx(p31w9&5T6Q?)1K>!H%LxlB!wr=|(;?~z zWzg{H=t6%tB!|ZElc&CFhv$kf+zY1OeS?#YZ3tp#3b{WD=_T<$oTEw)eG}n!6%)jK zqn6-5aFYF%BBJVt2UBH#x{BK}_tliph2#2aIp*h?@c=U1c4=`|X+4HZ!{1?TzfA4} z`#zVsKRz**w>f|}d3mA@*tC3?Z>Dvg)s86*fjN}x&h)&q!qg?P9s$|8vRDry%w{TuEaBbB1kS$q+6GXSOt&^AP*O+VJ%rtRzVL>$L{mrKSh-%6nk23>U zR5p*qMfHCEL#3K4{p6z^Xl5987DKOUKt!hg8VuD_gYUY?WtElMt0Tr)dFdpI;Y zl9zr9^DO^+z0m7R)dH*ekpRmAT!!1W73cHC1SCAV$i|{^GaUN(Z(KTOtdl=Zz4W$n z@V{l{a$p zfm9Om9$a_j_We>vUwA92GwUwe$G6)8SUV=rJ{jtGOb&kVlEzi;KTUiM{~(HO!Cfj) zn?|Rz_~N05d@K$xuZhR5#vY!V?c2Tjozo#=wqaIIZJn1CIj|Mclu@bFkt^^k?0GR% z=#3cJ$}=5w;sO2|{C4RKrsy%34~8DcH`1ZP(q@E;kFazq{R}SF*Eq3G`G}<_*WVQ*W{cX@M7;|8?Vi@^1O;t zH++eA(NC1zO>ui4N-N+LYh6}a$n!s5YBK@*<)$%VmEi&+$t$$>0LAliLsC@S`_%^Z ziHq@UBgl5>jFY7@4O8LTF|)l9k+oNyrhGr@fx8pyrVJFMj?(SWvYvGwJ*4T<{w@lly$$R^si1JSy*)|ry0~Y@jzIs?48->FrASZu@y_((* z-R^o>o4`P|0SODA+BMVDrZ5u#!kaB3S+m3kuW7#RSn&)Yd z>DtW=3A?SqdiQdBYt=q;CNJ%N<7IFF2`2r1JLvZ7@7p`@v19(+N&&T9^^p9ZRsR3C zK~Z2fvmE_gT)$(KE zJV$AtE}jeGakZOFxV5$xoKi9>iAY@Y2Ex!qx7l(DmDkAZnF!5zEE)^L9R*9u%FGed zZ#XBz*177+gVR6qgDjOW*V7cf#cyOL%rhN);_ytZTg)ymz=>Q8(s9d%zzZR}wd z>}VNcM?LzZNgH36N4I4a^{<(K(+5{*eM?1-s-1 zC$|-Si7(Za#-GVYh{56pzT;Zkvs^!gHOC!?WrYLA;S|$Ek}Bqfna%<5Rp;{jIs*=^ zp&uH(rQ6)!xOo|Q{vy1+{9tgodESeWJ<~XnJR{!Yv;DkdTK9XpiDoSpg&fW>Ci$pf zq0Z@MQxRmGKg?nAlnb4`7;k95<`RRO5X+(Byqg$b|Al9ro#^E)wc z+8lFSWiXhlj^USH+o>9SRt{^ zT!bia?RM~9o(wT9sK0_ttb(22bd+c;37WLH!n8*BecdX$>pN0_Z%Ae|@2Zdbc&_-? zSj#(1z|)y#8jIY(S$N_mT8;K)Tpp-e<#Y-!W>*?7<`H^Hq1ZBC<3+SKcvWZ6aaHIu z6BJ=3lBe;Mw}>@e-^sXF-hK^egxsWt#N{EE&Q@K`_(`NLMAQc3C@`~3J=7;Yy_6yY z%?_t?zMQI!#)=@eSQ5}!k_s_N?PL@NRqi}UPdRtxOJp(yQzO7qdR=a`p5cttOpK8z z?iAAAcx1e;m0-Va6MJ3|zzMzvYHc(IpP-?ByJSSb-=;XTm8-fJaMXIC?FnifB=)XF z(7;d~ZH7m!da;JxV(>(`$T8h1G;iAz6^?RF`sF5v@m8Z{I}i_26+NI1ttoPI)ACc@ zlg&#rpH~8cSi_Z!t61r(gG$Nry$4ofmJ31BnF3zgC24!dRB1=}vSedzuy=jv&}RZK zqjzILXv*VJ!%*TvkWuy)cQznl0&i=cgk=-TSQNvPBr4DEY8#n;!U1=)w^U#%_D zd}rJdJX%X36PaG=5zoo3kEbX-z0$!i%N=#ff;ZRXkeqJyHx!A#!y4vELRkZlt8)Bis9{bFh z>V8nL*gT~6X`l7ZJ~deP5P4jhFAF<_`{Y<%C;Wx#w~JV?_>-j#yhL&J<`hhE-rbA6 zyO>adQyJHSQ=&4s!g{0n_4$f=<(+62itA`!$em|+5Kf%Z(?93X+2e3!m^7EIdfu5A zNTiR)riSO;CwI>!-s`{RD$}}L>!Y^TMhQp3g_U6;K;Z2MwrK5VjR!B8^OhLXsZBRN zA|gqTHYJUmYl$DPKItR3PmFxLh38+qr>A;7V1p^*j@Ew-SHlrCL1Xwpgtnqi8qK4) zASv82&|oMC`MEp0&%cDG>XqsDrVh8<7Y#AsjB3uEYM;`*j3Hrf7!h@Z>x_h_#|1w3$D2N} z)-#3DBLuzE^iR1_H3`7`Th2Y3#-vr3I7Eg8mxqd#gKoMhph&uXgmWEl2}BTMd32#tvNA{yY4&Rl zHu9(CrM9x)6rL(n9nVRu?%=~17wQg_QII?JqVc~$gKy2 zb?ZFB&_rH&Nmb57?avc@=kf5%<$u6Bu=kHA|E!gQ4h>wSUPE7{@p&6bOuwXh9ZEw! zK#|qj@t@U?sdMcA0PKmcCkUQQ#L-#zy(}>~$TzQdNKMy1DE2Mqcp5G~SG(k}N-$!O zdqP0C)eWVD$}@><@&mtdvvnuU>4%;|}V<|}{vc|E?Msk|H)%_AYsDc2gP z#@$Imz!K0fcdC`d8Zr+iCZ>-jP<~AydB6DrO(RZ_74}j+oE;O+=jx2fnB8!atQ0&y1TSnd){XSk z<=1BoTP%2QziG7BFcy|bB+7~FB;-``9$)to`vrhGS~Z`LV~*>81t&83?M z=BpS=;sTS9mlZv_Q#1WK+C%(C=J6J=WG3Fvz(8LK;-t<(?9T|yNG5HAJzlO&rc&rq zCT_p5RC_)Nr%_p|RE4xPBgb%HRSCM1t<_}qT&^J6VV$Oo?oVT>y2SMTFb0OYXCZ=z#g~Z|`^g(t z#3tJos~-(5f86)T*KL|Q(F3T&;L9+BEb+;izaUSlz5I@z!`qMdn;aL8V!3Mja?V`FI zs55G#g3oF;i^{skwaR!xj%Qw><7Tfa zdzF1ATVi;Eq`MO2a|Z7S0r%^V%xLA&&1nRx)=E<}$-=Xc;Ovn&@xyJ6ff#xeSLW!3 zH-Yu{fs<3VbGy6elSI3Zvs^k>_Dz)=j4>ZL&@YPSu2*F5ExI&Rd?>Wh^Bg;az&=3l zS-@_!xMirc1<}Y$f_5O^D*E)RwCPV|xYCbSxp_yJQRdEa>Rll+shxujn7Dxy9DvX= z?$LJiC)_@E@0^%r&e>clFc&f@3LG~(Dd2B9eSV_0I>C}PB zz<)^~BRop2*mmpi15@ok{wy`TTs{>%xtq;+|FkMwrvrg=xX@rOM01F|XN-&#gi*pY zIs9k#^72eTbEz`~6vV-Q#S;Eua}5S;!YhqSqvyDMu0dbP9Zz%lX9DPAn{^tLstZfM z$-^on8p*c+@nf0`7^znFeaNDG;7>i?{B`H#>MHMtnFygX=$AC%^;Lo zJOL$WqlGpCIK>qKIRY( zw~8rE3i4Z0JLn11zdgIyQ`+Rt8`PMe=nOBE_A;1(zd2IvEOANlvbi}j*{(f`YGAKn zB(j9JIMYCMG#WW7RC_6N*#(7bE19EV*8|%ZIs2i(`MQLos<(`XCou=bS+g|1%wH)L zM9I*`;(&o9yN{r#RIACT4==W>f1G*Q=&)p)!AtH{}sEv#_{J!(+kfY%OebFlIH4?9-xS$p-ryTe7#UFqiqlBy&~=g#!) zr)zq$nZebxB>g;G2ZlC!gdV!cYi$KT3r5iJj1RDV{%y)2_i$FB1XxI{g|&d>1s?{K zN)<}ux(!|X@|7rN^1wz=4pf2Q;j%Di4-c|;@7TZueA(zJ^c0H0VK!bRCAd9F+}C&8 zYiNO9VUs^2L;5r09 zFBO{F{;0Gr?%@Yg){qR<$6wj{C92Dt4=XFX*uQjD4p|RIDGX9lhuF;SnskslZ+$1f zsvs^V6udQC_!=$_p|($#0iD*EpK(D+M#(FWh2P{l>m*4kX3kgGV!!jbuXMba5c?WQ zfzh}Q9464UzWtqNKK@IQe-F3X@dz39pZx3`?`~lvNLk!#c;(B!T$$P5ncjdXBswi7 z*3#9uSt&IXAYUbte7K}7$s#%l798f?6%J(q(YQQkszR>Gh{3HG+dFJ{+BQXiIHwFX z92`VUoD4$z*qTXMMk7huQU?sz;s+fwRzEL7X2%m*kUKHrwA*x3Y({}EduP{rd}dW$ zw-Bv@fTtzbbCL0P7;qRJw0xBKS(Z7OgjDH(n@9L0G1lFJ@*Mx^W7OAyJqATsY?B@z z^H40mBy;A`^)L13qr@~EL8c9O=~RK?kLcA6)C48d5RAWLmBsZHzNppu3+U9QVBT8} z<}5GpE9wyJMQHMy!h*TLsvyM#Pd1V*H-%6^gc?J-k(CtnVaEIO+!%G%6g0&4TRi_IsOGg4;KRb};Klcz zaI&pv1|*Q#_Ip(U;91~)*<+aV^9pq=ESy(%-+5fa3z-!Vx}`wJl+=iu4G4F)=w*J%8 z_oPm>+GGG{V;gX{k^B0cQx=_W7-Md;y7lwKRjx%}R7TE}c4#oD6;cLJ+O58w5T8-C zu54><1SSkIwD7O5Q6mB}V6=!RczjvezzxMc$T~fS)4+VIV{ohQ_*(9zjOM&|v3~(0< zJap^&^Z;b6)S@9RIv|S|z&sBinAfamD5L&6JCC9>%jWeE;|iU+RatYU9YS*$qm4UC z#3YQr)0G1bPA(wTME!;^rERO@D@Ou&Oo5cwt{K=_^rICCSzxwL=@(BWnvOidgXU{m zD7}j>254}bQz28#>vx%QFiUTrm$+6Z>r(1enaYZ$B-~#d1onNd ze2z;6W}kQ!MQ#$~ACNj+5!mX1N1yxBSJ|APa*5%)G^0nhLWN(+y(1g%bDOr{ove>$ zRm0Crvg+{@i}!bq7Y;*CxMQAf3J{J+zgG;~plae!oHf@E99#B2MO+7`LmO#!!Ln!$ z-5%YbqjW^!xM7F4ZdFJ~QjnZjGqqPdQELNY{~BIzcQ9DY;Q*X7o#`wo0R1Wu2%~d* zI0eYp1i1dA;_Y)iP{t9*r&u}mFI_prS;0# zM7*UZ4;Hc4pHCj1w$Q^z3uQF@RO$qTD5(=aqkwUyC@BOBBl7f$17hk7%8I2GXOiuA z9DZ164%(GmTi5OPtK;zn0V83cYYyO9X$Z>NTY=Y^eJ_P@2ZAbJMqKwe1^6)C?B;wi zZY?vrx?%*}5s(;BIo4ia1gSLp0=ZB&&ih!8)LiL4Dp)q3cg8q99#e1M$>J>CGJ|-$ z5{TC*GhA;l!MScY<~v>xrxql1+!McZb1u5~V*+w?MiOa^06+ zm|D>o=}JSyZingDoJw6L%Czak5p{LN?B``;a{w@>bNmihf%X?y{pfea++nA8KBbi# zolHs$Vz9)=vAFUtoG>c)K%%gtx;@j&vKA-a%V2$uJPD(-f=DJ}r*70|Uo(fw2t>R$ z|0SaNG*ys~NvoJ39~?R(%V#O;J@wYC%iaibB>mT0GcJALjG;^=3n`H7@TAYaqS44W z1k<5UjnuLvMx|r)Z*lB-g@-39{{BeL_+YQc{=?p_>$s^p)f;O6_ z-H#CKpEM#)gctwYrz_X1r&my40$*BNE8}sLS@;`gMnWQ z5`(xwZeK63xVv*g zciP>;!?MgSfb&*XkW%wVe#sB+!v-D3=jqKnmmx1ayj7bIYxm#VU2fHdshrnNd-c~z zh@DB4)`4HjHSNixmYL(XF(#;c&4<+vGAY!N9^4Xr<6+cE!GTp^`jZET6*z~jZ6(hg zvE*ur5#Oz3#=`F+{)efLKI?%u5LPnpPb-|VKDftsw;Xp=X$?8blxj59`Zi$2GpPYG z0qgU}G-;NDx^hUdZz6A=3GM14jvrSN9f#!m>YS7sG2$arQDTD!1)OdWsUA2-3r?W1 z$K&%Latuvz_N~h89zinc@!8K6LhnE)TA`rl?QX)-+9+?uur2sUkJ77q&+ygeV`EDNf#6IQ8$g4=bm z3C~>bxmAIh?d`!ymNKpMhCgk>&yk@??F8bf0oDj@hv-v10yrq+h76> zc$=cwj_njjsv>Uc#~r!umB$Ijd#62keaVmRU%Z-JFq3nYdl5vG6J?zcpxAY@&JUMS z&s`EvPdv#9AM6wDE5m%kL0WqYUOx>x``|A}cQw}CjwP@qiYdAb@gtH3Miq$~^BlF)&HalOM6bLx2~J)4rfFVy`Y>4|E{lIqu*IKMX3d{pB$1f`GXy|6 z>{$%;?u@t{0s6}AJJ2nV#G8c~#RBKXNtzAiXy|t6d8gsJU#{mQj=B=YL1)|uDRRzT zY?fkd-8=ojPcb(~1UNTMM(w2YplIu|Kfm?v=%6+!rc!lmppGYaLo1Bro47sYWDU~V zjxHTYXot`Csb8u4o5}pF@U-V4esg|)G*D4_x&6@;uOyo`t#(KR--?3to0CSJ1t5EZ zQl)Zp(Th6qq($-b$PB&ZN{H_goo4!zuu-&I{e)alOBEZVzb-sS)ic-ntv=e)R!j^> zyzurSd~LswbH3e>I3Mc%4QDLW0SO3hV}PLsC~!V z>*^r6ewB(ozfofD7JSLtSWT+=Fp!7~gA7hd&!%NZs*UTFKtzyI58zONK{K?Tc5}Nf>ID zq9XY`cMlTNjl4z4u#+()DR&cGEI@;Sa}5h9s9wAa5q6YiORXlLdGLPkZU2Pm}#Qt7VK z?Y#JZsdiSf;sL6JKhV*CPtQ#2K61q$zq0!;#+OI`zk&G2kNa~DiQ?4THoo z$`NWDgn2N*P%sLiJW|O}oQS>RUUZ~8)0`$#M&kYc66M^g#7!{qa4<$k-n^b^RMh$h z?v@&Z=g}swV8}q`hd{-tjf07FhJ#i&$9tD?r*)_CpQFg%zW==t8NmF5|6aWkzyzNq zbn?8P1^+*P{nTL6+10EW9uTZRGQbLbm-1ty4JL57{Ik*T8CQ)41j0{2M;=luwoMd(0ljO1fZg-sm`oHNZYD~pgJweMsWd4=&G*_$r)`>X>#_%FqZEzWHfA-MmV z<-!5(-#HZY(5ulJTwu4O=H?IHI584;7CrsQV|ZP2Q7jTt=IXDz=9ppEd~ zLx2s{IdFm8=s|*__I7pJtS5Wt4N4Z5%=KnVF?NZu9#<93f4xAuanzu5S;7d^#8zQ| z8)SA24kJPgCA00q)yY&_Qq;Y}2utDmPqUy}c9{8P-50dEO_ib=#0dEV^uCj%sD7S>J$=5%*>jk zi37?t3}AhrwCj4cw`l6q(P8rZCZ z{h8{&jw(3-I_h0qhNY^QFxE{$AHuCH&>78d+CdPGqq}cY6`w5elB?blxAhLWQo(1DOKLWVbIXg4f|cT03IE-y?m_>As8$do1K!@Xo`io zW>a$iWukatGY(6fyl_S^1xISMFy|WA%F@hse@y(ypS=gAnwW za>9vs(Yl=V*0PxbTQdKc4AQxgt3J2jcD{o)g$4P}*UH!U68V5Z_u%+W`zN8{;~5v# z%wGndpAkxs%emEY`m9suOE;sy;~PQcV&w`f|2xpurDtY~HF~XLh2fFax^{&QFQY$= zv0UYyfU9&{0M8qppLAw>$U;5FFE`WA&mod;WAuSnPyqRTf?jRngQdVg@Ny1J^pquu z8)OGEsK=jB7U(-L9><19jDcHEp2}HmGt%Jb5I$2+fY~N?!G5{HO8>WaUT7a{@;?~V z+krR(zjp=GKHNvgg^Ner^)r48IDY5@_>bTy1j$dX9I=LjW99ET>O(L>Wa?gdT+Aba zG`Z+IqGvu=ylv@GH%9O`oU*Z6N6_FDZS)h>_EX0FG=}iH3a?&>HbeTI>y@N0NkVwG z6Z0_V=^Th(Wolj+)<;()g=FJqU1pl@=b;W3FyXS-$5`I35O8u`+l@;k6( zgA}{XuBw+r$L5E&uz(=P8tBRWHqAQkqWpql5ZdRerJf`L){*>~yAn*cDEIQMbXhdZ z5k63-i;<9(9(?PV1? z5PM*#0PWPO4~T4as%%CK!E$F0<6iOH)PwX( zqO}5!wVSST8Y*;~#$Y>gCyqFkbWfyyM*{Ti>74yIQ8mHx4{NpUSA{(!%d#&sy)ZA3 z3I}?Duil~n->cV?lDUaTRsJpeE1bMAokjOg;nBvpBh~#W-166vm>~?7uqOs7;*&wD z#|mghnMwl=1B+-7Jm`9vW{S*hVVWswmp?z~F7sm9Ok^<2KNh^C!1W5WdRMOmL~XFo zszLz6b!Uil7Et%=h#%B+(^KLN*ZQdAy8$3aRZdfWgtT^(|rT`siCL7xjwTVp}bgE|B89Zc3 z@=+aPb@*TajG9dt=PdwTi32qiWM<>)4ur_dqoC`y!4Hhm@qoa|AjKpcJ45(x9L2my zZD7txD*HlQdTNm)(S>Dgq`T@5kl;-*JFBu>n+>}3tC=RVAq_e5H)rUCtKJym zf;CSrwD5DkvDMxS;|SXjHSWEWOO@X1Eo`T*1F4m`NSM zb~&!Mdl5^U<8?MAQtD3m#{Sf%q51V;mVnCMbiZfRSlJMe5Chx#s^xS!PQ7z+aC*9u za9Kizv1w&6f(3880$nH3xc$993acNI3)976%CB|ag4*kS#@!Voeb=isX~63RJiv?R zpzsE7q$208huCl&JFLMJx`OjbJ)zvJf0Q%o1-CWO#zUSCM036ALzg>rd@m){kZw_z zp3VqA4A(itmmFT3fXa<|VZ)9%fy+}^5<|ea2YU5wF%@|>eD6J~qB|LlV68bJ=tB<$ zq+G3+i6JOj8-16{4(#K-IQAsN`S)PhjSJw=zPE|Zfy6Y4xobplYIcZ=T&GL-BW+8U zeH~&WwW76KVrkARIuA5W;pgK6XGa5!=pC!wfR7AGny`T8vWx54ov6xceb5CiSGN1= zZ)lp|(;k*;^;jo1dxRSe)@W!UTFta8Fb%f{SsRrn)PnnPa|AUp4QnEI zzu-95%lDgeP2ZMZPK1CDG+J+D3O?94$@quwR`|dzIDAvGj+0KHuV6hG(?vNyQFBkq@xf<5j-byGPN{a*s6Vat|~sS}1fa4kHS@Cxn_z z+ut#4u_u<9-MtT*ox0M6Mk`R~?H5efC(=6)CB#+F{cMz1w>xn)wd5fi0I^U}>l}#{3F10vz7Z0Oy9o=e8&Pnwx{MXR}f1qSFCpbLlX6&duC{ z7or=(24_oWEd^I0zS)drSh7F(fx9%Hc!j3b6PH|5&TQp3Vfv#!0J*D{#m#M8lH z1y0i55S~#}I9YNo>FIfdrV!PfY~;xq$5auy+f3nh^-P8IG-wOV)ApnrbI-Byu1$bf zUbY_^E7jj@!N4XEnd|XD48_^B`f&V%d5t|N6_Wvj&XZkWnOoeW$BXDTKu#_I%g)i=1 ztxK|?L7$xe&>FOWI}su;MN((ZaS<24mHVM1JU3eJKqN>=JP-VazQ~Zs=fpKm*;%UA z6NvIc^ONPuQK8Dnjp|4GPdQs@;fRimw3;_T?{UdLkHh3&)3^cxX5QQzvy)uS*fDH~ zcFUfx*YvHnu-s*z#pT?1X9xz6bDFYaLUV`@ZQul+8LO@z+`b0gQ;pfM2ak+y`$son zdwm>%0@q|Aa1R^Z1RU6%eN4v5VedUQL3pA)G^RCxlT^Tm!q6j(nlM_8r5_(so+4`2$ z=d~ZpB^{Fh8T1UzpA;BlQR;kQr>1^tzP{8wdoE?p>}`5IA19z;we99xm>2qNO6#2Y zz)YiW>h-l$b1cJdz*g85c3c74fCx;1k@#KjA^>bwI=$bahQrxO5)u~n1*h2ykDf5q z*$7r!K`t#*##CZGRq9j6E7@O_yj@a+3x8AwNb3r`Gz6m;K2;*i7At!n zYW0H4zi$avT}>;^L#j7i@Dio03+5TFIkOkI?I?9|_(hs~{KbXIAE+m0NT}n9%SZxG zKsV|L=3>Toiaz=@O-#u{Zg`-?PlL@2_(mM*kRu14TKWk11y;da$L=X!qG`)k&auI# zFl`RYNoI$85Jkg?i{s`P-EQ4^|HtjX8t!+wwrKd&7di()@N#2}J%@Bq(_xi6AriE4 zuFR(eo_c{%v`c84@39mazR$^0(%H2o1DFaU{u_3;~dd72II%`<=z6_ix% zfyEU1ew*6@`{3gcF;M9xi!QTaI5vr?fQ4BEOvu5+zLw3~L%h$|Qf+Mwqe`0_WZLdf zhv!mCNVrF7{n?n@&a&Ni6P)ESWvR^rnqycU?jy*8Lhr3vi8_rw*#%@JBoCIP?v|!i zeV53<8ms)YN`ku({9*X@ZT=3cQO=d&xwWa+r3NEGrT<{%_!7(w@T$9*$sH3XxpzSe zw9d1Zv3rBZ;Z>@M#Aab+YD$9h?4-M^ZkV8kIXaksyx17gxhW7!<)%$HOSz}Nw56S} z)VR+Hj<;HJj}QN#cXiCwd9y8E3rYgJWRj~aOOY?g?4mTH!BiJWV#0E98gPUfrD%E; zfnJQyv(e~^jZ(pvGO&ROyhYbz`oQ1+>0XMiO6~R zH4obhb!OsN`^rdF zToCh6|2>|7>Wd03yeJ?fO7}!GXMd6qj&PV~X@!gBh$1ID7hE_asVGWTcSg{?1uhnr zO1r&nqeh7i43ENeSNqcL8pPvYQIjy;hEfaa!8kuZc^bf4h*Q$%yQC=@O%sr<8Y0Mk zGPKbc;(JXW8dmbPFF)q67Rh+nsPB4$3|`3irgjs4DcFvkj@;?e(91o8o0B6p!XhF44_r(LD$L1 zEqT+R1H){$WOgRm$(bx_`12eaTr{JU(v`F#pXLKSl2W6XXP6mjfJ<~s{Xn9YEOnhbQ0HJqf0k7=UG~3 zF*|U(T5EG0Q?09Eq^vd>i9j{70Fpv z#VPxw`u;wCp2Kc2Nle=^80KI9zW1-KD{zdv{dx4v#tHJ Date: Fri, 10 May 2024 10:56:46 -0400 Subject: [PATCH 4/5] fix service name (#863) --- docs/azureai/azureai-search-document-component.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/azureai/azureai-search-document-component.md b/docs/azureai/azureai-search-document-component.md index d43338e8d0..f8008d1343 100644 --- a/docs/azureai/azureai-search-document-component.md +++ b/docs/azureai/azureai-search-document-component.md @@ -14,7 +14,7 @@ For more information on using the `SearchIndexClient`, see [How to use Azure.Sea ## Get started - Azure subscription: [create one for free](https://azure.microsoft.com/free/). -- Azure Search service: [create an Azure OpenAI Service resource](/azure/search/search-create-service-portal). +- Azure Search service: [create an Azure AI Search service resource](/azure/search/search-create-service-portal). To get started with the .NET Aspire Azure AI Search Documents component, install the [Aspire.Azure.Search.Documents](https://www.nuget.org/packages/Aspire.Azure.Search.Documents) NuGet package. From 2577bcac7bc5141f2b126cdcca5a10b0e15fe74b Mon Sep 17 00:00:00 2001 From: alexwolfmsft <93200798+alexwolfmsft@users.noreply.github.com> Date: Fri, 10 May 2024 10:57:16 -0400 Subject: [PATCH 5/5] caching tutorial fixes (#875) --- docs/caching/caching-components.md | 39 ++++++++++++++++++------------ 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/docs/caching/caching-components.md b/docs/caching/caching-components.md index 5756da5c7a..1371254414 100644 --- a/docs/caching/caching-components.md +++ b/docs/caching/caching-components.md @@ -43,22 +43,29 @@ Visual Studio creates a new .NET Aspire solution that consists of the following ## Configure the App Host project -Update the _Program.cs_ file of the `AspireRedis.AppHost` project to match the following code: +1. Add the [.NET Aspire Hosting Redis](https://www.nuget.org/packages/Aspire.Hosting.Redis) package to the `AspireRedis.AppHost` project: -```csharp -var builder = DistributedApplication.CreateBuilder(args); - -var redis = builder.AddRedis("cache"); - -var apiservice = builder.AddProject("apiservice") - .WithReference(redis); + ```dotnetcli + dotnet add package Aspire.Hosting.Redis --prerelease + ``` -builder.AddProject("webfrontend") - .WithReference(apiservice) - .WithReference(redis); +2. Update the _Program.cs_ file of the `AspireRedis.AppHost` project to match the following code: -builder.Build().Run(); -``` + ```csharp + var builder = DistributedApplication.CreateBuilder(args); + + var redis = builder.AddRedis("cache"); + + var apiservice = builder.AddProject("apiservice") + .WithReference(redis); + + builder.AddProject("webfrontend") + .WithExternalHttpEndpoints() + .WithReference(apiservice) + .WithReference(redis); + + builder.Build().Run(); + ``` The preceding code creates a local Redis container instance and configures the UI and API to use the instance automatically for both output and distributed caching. The code also configures communication between the frontend UI and the backend API using service discovery. With .NET Aspire's implicit service discovery, setting up and managing service connections is streamlined for developer productivity. In the context of this tutorial, the feature simplifies how you connect to Redis. @@ -78,9 +85,9 @@ Configuring connection string with this method, while functional, requires dupli 1. Add the [.NET Aspire StackExchange Redis output caching](stackexchange-redis-output-caching-component.md) component packages to your `AspireRedis.Web` app: -```dotnetcli -dotnet add package Aspire.StackExchange.Redis.OutputCaching --prerelease -``` + ```dotnetcli + dotnet add package Aspire.StackExchange.Redis.OutputCaching --prerelease + ``` 1. In the _Program.cs_ file of the `AspireRedis.Web` Blazor project, immediately after the line `var builder = WebApplication.CreateBuilder(args);`, add a call to the extension method: