From 183f941e7bf82e8a3346a3a9cb0c83bfb3be3763 Mon Sep 17 00:00:00 2001 From: isidor Date: Mon, 13 Nov 2023 16:30:27 +0100 Subject: [PATCH] Add chat-agent sample --- chat-agent-sample/.eslintrc.json | 30 + chat-agent-sample/.gitignore | 5 + chat-agent-sample/.vscode/launch.json | 35 + chat-agent-sample/.vscode/tasks.json | 40 + chat-agent-sample/.vscodeignore | 13 + chat-agent-sample/README.md | 16 + chat-agent-sample/cat.jpeg | Bin 0 -> 50496 bytes chat-agent-sample/demo.png | Bin 0 -> 108688 bytes chat-agent-sample/extension.js | 105 ++ chat-agent-sample/extension.js.map | 1 + chat-agent-sample/package-lock.json | 1617 +++++++++++++++++ chat-agent-sample/package.json | 42 + chat-agent-sample/src/extension.ts | 95 + .../src/vscode.proposed.chat.d.ts | 25 + .../src/vscode.proposed.chatAgents2.d.ts | 368 ++++ .../vscode.proposed.chatRequestAccess.d.ts | 99 + chat-agent-sample/tsconfig.json | 17 + 17 files changed, 2508 insertions(+) create mode 100644 chat-agent-sample/.eslintrc.json create mode 100644 chat-agent-sample/.gitignore create mode 100644 chat-agent-sample/.vscode/launch.json create mode 100644 chat-agent-sample/.vscode/tasks.json create mode 100644 chat-agent-sample/.vscodeignore create mode 100644 chat-agent-sample/README.md create mode 100644 chat-agent-sample/cat.jpeg create mode 100644 chat-agent-sample/demo.png create mode 100644 chat-agent-sample/extension.js create mode 100644 chat-agent-sample/extension.js.map create mode 100644 chat-agent-sample/package-lock.json create mode 100644 chat-agent-sample/package.json create mode 100644 chat-agent-sample/src/extension.ts create mode 100644 chat-agent-sample/src/vscode.proposed.chat.d.ts create mode 100644 chat-agent-sample/src/vscode.proposed.chatAgents2.d.ts create mode 100644 chat-agent-sample/src/vscode.proposed.chatRequestAccess.d.ts create mode 100644 chat-agent-sample/tsconfig.json diff --git a/chat-agent-sample/.eslintrc.json b/chat-agent-sample/.eslintrc.json new file mode 100644 index 00000000..86c86f37 --- /dev/null +++ b/chat-agent-sample/.eslintrc.json @@ -0,0 +1,30 @@ +{ + "root": true, + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 6, + "sourceType": "module" + }, + "plugins": [ + "@typescript-eslint" + ], + "rules": { + "@typescript-eslint/naming-convention": [ + "warn", + { + "selector": "import", + "format": [ "camelCase", "PascalCase" ] + } + ], + "@typescript-eslint/semi": "warn", + "curly": "warn", + "eqeqeq": "warn", + "no-throw-literal": "warn", + "semi": "off" + }, + "ignorePatterns": [ + "out", + "dist", + "**/*.d.ts" + ] +} \ No newline at end of file diff --git a/chat-agent-sample/.gitignore b/chat-agent-sample/.gitignore new file mode 100644 index 00000000..0b60dfa1 --- /dev/null +++ b/chat-agent-sample/.gitignore @@ -0,0 +1,5 @@ +out +dist +node_modules +.vscode-test/ +*.vsix diff --git a/chat-agent-sample/.vscode/launch.json b/chat-agent-sample/.vscode/launch.json new file mode 100644 index 00000000..9bc4c02c --- /dev/null +++ b/chat-agent-sample/.vscode/launch.json @@ -0,0 +1,35 @@ +// A launch configuration that compiles the extension and then opens it inside a new window +// Use IntelliSense to learn about possible attributes. +// Hover to view descriptions of existing attributes. +// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Run Extension", + "type": "extensionHost", + "request": "launch", + "args": [ + "--extensionDevelopmentPath=${workspaceFolder}" + ], + "outFiles": [ + "${workspaceFolder}/out/**/*.js" + ], + "preLaunchTask": "${defaultBuildTask}" + }, + { + "name": "Extension Tests", + "type": "extensionHost", + "request": "launch", + "args": [ + "--extensionDevelopmentPath=${workspaceFolder}", + "--extensionTestsPath=${workspaceFolder}/out/test/suite/index" + ], + "outFiles": [ + "${workspaceFolder}/out/**/*.js", + "${workspaceFolder}/dist/**/*.js" + ], + "preLaunchTask": "tasks: watch-tests" + } + ] +} diff --git a/chat-agent-sample/.vscode/tasks.json b/chat-agent-sample/.vscode/tasks.json new file mode 100644 index 00000000..c2ab68ae --- /dev/null +++ b/chat-agent-sample/.vscode/tasks.json @@ -0,0 +1,40 @@ +// See https://go.microsoft.com/fwlink/?LinkId=733558 +// for the documentation about the tasks.json format +{ + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "watch", + "problemMatcher": "$ts-webpack-watch", + "isBackground": true, + "presentation": { + "reveal": "never", + "group": "watchers" + }, + "group": { + "kind": "build", + "isDefault": true + } + }, + { + "type": "npm", + "script": "watch-tests", + "problemMatcher": "$tsc-watch", + "isBackground": true, + "presentation": { + "reveal": "never", + "group": "watchers" + }, + "group": "build" + }, + { + "label": "tasks: watch-tests", + "dependsOn": [ + "npm: watch", + "npm: watch-tests" + ], + "problemMatcher": [] + } + ] +} diff --git a/chat-agent-sample/.vscodeignore b/chat-agent-sample/.vscodeignore new file mode 100644 index 00000000..c6136798 --- /dev/null +++ b/chat-agent-sample/.vscodeignore @@ -0,0 +1,13 @@ +.vscode/** +.vscode-test/** +out/** +node_modules/** +src/** +.gitignore +.yarnrc +webpack.config.js +vsc-extension-quickstart.md +**/tsconfig.json +**/.eslintrc.json +**/*.map +**/*.ts diff --git a/chat-agent-sample/README.md b/chat-agent-sample/README.md new file mode 100644 index 00000000..a9719f85 --- /dev/null +++ b/chat-agent-sample/README.md @@ -0,0 +1,16 @@ +# Chat Agent Example + +This sample shows + +- How to contribute a chat agent. +- How to use the chatRequestAccess API to request access to the chat. +- How to respond with follow-ups. + +![demo](./demo.png) + +## Running the Sample + +- Run `npm install` in terminal to install dependencies +- Run the `Run Extension` target in the Debug View. This will: + - Start a task `npm: watch` to compile the code + - Run the extension in a new VS Code window diff --git a/chat-agent-sample/cat.jpeg b/chat-agent-sample/cat.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..f517cce0e237d5bfa6dd824ccd07fa69ffb6ca2c GIT binary patch literal 50496 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 z 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%0D+_csf~do`ri^n!1DdA=w%DI7vK-b2P;Da7$v|z z_}&H@e0c+N!1#Xzg$xNE))1foFarPrvH_vlA%I~E-wS5_rT^jo9!52`m8*YNCY&lz zm|JS$Eqvn^aTBk`*4%n7sW<7BjJLe2_)}ov$>PTF-Pq_C8YxA4W$f-q-1!@a*37b4 zVcFTf6emd1Xi9JVK6>Sfts#!q+lrZ?O(oZcqoj%V1cIOQQ1|z|Rsz+Bw49>#Zji5J ze#Br2a24KqtmcN8Cy$v*eu(K2WD_LO9Qr-a$1-*+n-jle7?sCu(HG0+l_%5wBW_~4 z#^Q9V9~Y@_Xmp>{ec@V?+u*kKAR-p;ma(0`!%{K~oh4W)jt;IaKkyzoBo2z_B zdNO}N?g?CNwIxb04X>(q)wsOSTlXA%+z6K76{)MyyzJ`Na2euyw|QfP|A537DTl9A z8}DMB7_m zX8%PhwFPsL03S>w9+- zN}+EJ5*9ta6zRB&kp^#tiKe?|88TQZh>160{UUTPw7gtg9{rv~h%@6O`B$uAW|1?= zST?QP@FaW4-Wv+mD<4=&#_tnhSHQ1cn5=b2=n28R={2ge?FjH@Z2h^|OJrMK65M)Q zMp9`0WfiKi&iZPShvM^5rqw^FIv z=@#aR93DD9dJbnV@n+*UPl3-^*h5QxaJ7#vS|lc0hGSsoox|e9?Pd{S8OS?2Gbi!H zUTboSK@=)U&6=x8B#*Aj?`1N{(YG%Dv@ccAO8o1PBY)v6HU8X4gJY@n ziGGZo+IQ+~)ZM3_=xTG^GiSw$Lh9{`VRB~FwOlr)mLWV9CPS7+II}@~Xi&7X66#Re z4Y67xGlG{+#w|FM*9AxF^;0w_L9cCm$mZ&z;}|7`W2eV(tPBw8%QDiKIC*<+6tlNd z6sj|@dU@Y{63Ny!GofrRnDV|M)(xj5rZZtOKQSvJSXwm@yfD4{@hwJ{Q=?^AZIV#U zrq41oI0BcaM>=@(LN>eq9?xvo&w%OgPZ#|u7@{|l_pR7^HGirqb*%{hkE?oElr!3 z3f(wlL{~>&F&Lg}W&3{vOUJd+1iBerXd(2a=C0xPpDL^~$(ma(JofY^uvW`bGrz@B zVdm(CQZSvPcL$<2b&wv1TOxc&PrnoYpc2{b%2w%<`ja|Z$Ujx#&F97g8|(|Og&U*X zaHV@q^Y$VkXzC$nK~=0Y)B#jfG7TnP!U3@r_4D`wiH4c#kBPE6(-vRQV-UoCvUPD! z*E#VIsBq8{);G7whmQoh$O&;>ak;Oh4Z-Ue+yNg=-@h^KhAkETm?|@v#mEw_!_}}7 zIE>0IPf;3TYqv}twUGW^f`TSBoEs&JATZYChK!H$q&C8nlmYYPdyfx6z=o00ojdFI zF5WPeLB~du+wa5m(*j0cQNAK$ski|z%IC=s+0ur&nPaR;uo#ltqQ~=N^FPg$3P68AE6#zhIki83SRsr8sN*UlPeG%n75%#A-O0_Wjgc zjtVu2<&MWWC`yGwxrtwMh)=zRzPpzZs?6y!Kcc}~!L*xpmYbz%WKZ_^ewpvAT;EAj z{1WvkhXc-v&e!h&)u8CtH)*>>>fpx2Qn6i20<6+&$ymGGoW)FO!pjm;=paeocc$Bz z=JmkmP|QKAYtb=g*r{~67LgXYxCo!sd38zXl-&6jg)$PhFGNkHUm@zAxqTa|*$Ncn zRKVG$#Iea@MsVg{NtP@gPH*Fj;)9jlH3$q>km9J8NGz@CO}-%9s^$IK%4KbVvF&7{ zpKIYp*nyr*m7F%ZKqs4|shb~3K16w4b9S)nW6u&JupQZ&LP2e&o5(-L{mw=w(J9{K zhFg?ehmrb{WXXf90es-44> z6(f{I4jh+duI3Jm@|Bs1ZI?js`hbM(iOUqrX8&Wmk(>4%;uRY&wlnJ`{yeEntae8I zF-4jrheUQGm!U7wx1Bm0JV{HQDAMY|t5-=9ktmTUUtdd5boT9;!Ank^J7lc%p1wl7 z=clumM?q71FD4#VF^W`!Ab|b#)u7ZjEKBXo0%Th;T+D^$s$|dAEU7R2LF86M9o(-i zXmvQrtsn~(xB4k;zmtcw;m}?-Vd$)VH{P1MaunJV#wKapfEmPOZ+kd9XlU{(bLkkl zi1?h_YJh|L1=sA(rw9snpfWdlQeZs^8a{zsB2FU2St1aU8euKXi~94jpyB%7&d~2N zduDGcQ9GGLLD^MWg-lBQWM-=Oym_a?ZJnlz-8c9j9Ng}$x}1>1`AQC*l-7zd%BCx_ zn5g>vtcT<;7!BPH?dRce+4N)d)OFSx$IK|tIs$(*pfz~1LF02ILs4gO-fmqvi@Mo5 zE0s9^sNAFEWA|ddVK{uhzt!L2G6u~NE0Sv3Mt*=gwAb5cF;B~_A1knSaKKY>Xz74G zY#lvMm&HjMYAEBv9jJ~bCV|Ik43WrS}UW9pP#(`T2f(m-h9k=r4%X8 z-GOIsGUiq8@Sr4SF#pYw`P2sec@eD#duV2nx{|LNr9@%JO7!BUS*}kXUJ@Jko(E>^ z#-XnOc`OIEp64?f{NxmH<)iAzwhrQE6KRr`5Sq1TjwfQ09~-@LWPW>S^m3C3#OniY z6QLm?f!jpzoh0z9Ef57vRKxlxh3{(&aexLG?`~kVxy<&~8C`+*Z$^#*&jDwCnsFjJ)BJ%SaTJgm+u~D&} z0%{ZE^dp^IM8LP%8egMux=ZsQL2~11OkOt{?gaaE2?4J62=ar_<*bO& zSZ_9oz7j;-XQIMeE>S7cNTN)rrVq-`;yE`?Tt3TikW>HAk9I^`2sR)`e~@R(e54;keTj6c1fOU0mQDVf~* z@k3NCU=jSooltjD6WBfanNQ%E7uJ7HZaytH+1zKqQWZ(VV~enK=gJbyPnFWnb!^~A zjX4_OG4B=+ky=iDkq-!pyup@p{rcIqhjSUL*HBx~G!j02Svg4M98f4m)X1RVxH zlC+mMq$kyXZK5XYap16wZ=iT=5P}TW%*n0)Z9PO&bOgUKEJ^w>-hQQ<+IoUHDj}V|UC-`@ z>Wy|m84RkhbgwcF9Z&efIMCrw^r|pNv2*4j;ywj&sFzPg z2dny!0ni%bt`qAk?_j(f_znk9mrq?0=*Lit7+=1^Kz;iMI&+lN*`S^fgOrzpCr3AL>$Eq&qIe^zZGU{U z+&(SKXvp}I6b584~>YIe2I>4Rd{M&mM+~C|9No#=FT?0z_0;x zU!<u?4>aF-AE)hzsZ?+|f5Q`{j7&Ul8{1l+sPoWt?qqOX-- z*MZ=TQnb2vTKb5%fx2)<&jsoeW7u<_t-juE?mZrgeEQNs;n$;B`DjO5{dT?^eUH;` zJ>4G1OTO~cGf%-iQkM(Ma^-D5p^2i^c0V@oJ!96L8P$87pvXu2oAR)-Je7P&XVoWq z2={jf(AQGr-<*)2isB6cNmx;ykkqy|rDt^0k)M?QfF?7d9hX<@u)XUR915nTOV`Q7 z0W+2PA1eA*^_2a-AuAv3a547=O7;uVmrGaMztK&9cAZ|+s8hX>x$pGfntU4QQM`H2 zav!bg07MONcqF=kNh*A5uX%k0kf{Ziq4J_lF}&kYd!2IXcASRjw-JBfF;_ju@AUCvU-Cc73Q1ldc!okXS* zrn0mnVH!bh1m$4o3%ExWmL*#kjMlh5`-_Ntv$sW?d@*o=^;?*9Q8*7MT~NNfHyyVI z^6AGc^67q6#~$xzhyw^jSo>|qUO_Y{_0D@jr7#o`roUAXN8}&=5zEJm&=B4qw83v= z`Cws*%MJ{*;2 zFmfdJ@Lie>ax+b3h6a)j{>rt&XsdDu87|<*rIe;1(dRgRrC0oCodpw!mu!UujgwTx zXUuOUY8D;^oVtBoz;%e7FpboyavZ-MPcq z2vlGMzVv-+jH}XI)%k|DyqI!`5hEJ*oRgP(-Z?4rhqrBA4z)D$1u`oSA2bX_$=LMo zCvU1!NuK2WA~xq<8vy2rw2*u2@~rxNi1AI4StGv_sU(BtVv?1U{?37}Yuc|0RTzCr zYp;g&lu^}_N9C%W;f$%!_xu;!m!oFBgxMJ6y2iNErWBT1tlsMuZzo^0Xtj=f_Wilrma4t?Q{g zU0PcpZ23MQTDp;ru}ce*M^utWQ9mO@tY`W-@bso5k|C_8lYq;#ya9?(RbaSzsV!uV z0&$2#(4fHh2h?hPCWh2d91STGsgKuTOFNCk$T|g19Q^nv#1MkjI(V1e*$Z9>5fxt; zY@Wu~IUmexDk8YK=nJQ5F7xw2@Q!)&{>jKi)-1e1$6nud1apFoMu^}R*Jc2t*F3-( zHtILa-Q+5-+<1i@{Q-q>C}ud0xA>fW?0GYNiQT*=4!6#X>!J|@GEMbjCnK@hUhtXn zrd4BCiHO74{yd^te|P!&m7ni+x2YIHh-)eqnUl2$O;s;v6sV=XdcXqKQEwo}j4=EC zD2?m3W``!yRTP%{vp5^cJ}q{CaQc_^Z<>xf`FVzBA&aTn$A3Wn&5qudPp@u_43<~y zk71f(IhU2!A1~Em4cS@hEhSqw+W`<6$D09O0VL z{IE%}X;Za;p3DgS>?1L<8akrYE0VC7!NQ_qI661PvN%MN&gQ;|BInx9#Qqx&M4&f> znYg7Y6z+T2lpR0HEZQe-v@q3+Vf)*3BY!eN-}MiuXO;i;>+Z?r6+yrousypn994aJ zET$3&(~rhXyyy+4NWlJo0$?_u$u);3m^Cg{*D-O)<;6Q-%mhS7B5>lWI-c;d2p7ER zyXUhGo!B;)6wX%A`O;EHUulT=g6NygwAgavSw|;1y5M{q4(}`_Jrn`e(#e(3S#$-L zxpl;WZ8Axmsb#s*sD)5+x8-^MBUK)lir2g)$4ry6{-AN_pKVtw)^+w9dPn-0ADh<5 z^?%FI!%~Q;Kr-MS?6L!cXrq)k_?GzPYs$M~^@7%p3?~sh5kKrble`0c2~2%9{{YS# z-mfc7>g{W9^Y=M1*S%i&sa(q+#I;?DE%}HG*7ep@KIJx zr&Rv{5dzn<55-JcuJWI_QO{&-e5gPOTsl3&C_=2af&T!?HCa>R?egwcpbO*rios?G|ZE*v=Li0y!Y zrC!r&UFO25wJjHAD+{D%>Z}?m;if&6X+uSO7R7eAyh6NZw|_qK+o}1=(=?+a`h3M? zDuj$G-+Lpm2?EhyJlfxp4-S=Oeq2gc06P-;S4_*4!0HS{)&%+DA!vlVc+80C4*?n7 zd%eAwY$~oWGBhvbZnE(>1p$f*fhutsA}~cz@rXi27b&;Ng~Mmyp*|q8o1|J=SQmkD zNEq3ZV05ueBT6lD8F4{l2&;URU9-?panR?X>+v0Q4@bA7x2$~*`n&rlUW(Kk`Zn~B z_0dPB&;49F$1yb&3Ro;0{v{z^7X-f8zV)d2fCXhr!Fv4IIgH$^Rcl%rqKYhU2<|MS zW_m!Y2b<1oE!&%9pq8@Ua$v2UxYSYt?N!0{tQ^!pWLrte^=bMrlDkUt1ExNVa~7Go zQl&<=;L6tgMg#~yqVk)*Aw35wv@2K6Ip;m*Hf>r<#sFZo-o>q8oZx?zyp}YWFaxRp zYS9?QHIzB$8_P2&U^-dldG>>Ls`r-;dN$yW(=QXwk8ekBSo$6HclJ)bZM`eS$JN>$ znhwb3AQcS12YA+@vci!x8@!OlfTpJGgyi!3!?@g36pV>not9^kFheYYJe8j{8y8hL zX&s-E@7aS;tSyaMW&7l2UV9rq>N{*NIbV2~`mim*-HR=7&Rwd|VkbY_z=*5Ez3S#{ zebFW`#&#E|gFPTi=^CsF+QdD3;0DnS zfAwp@1YE)hw>)->q)h+&JC=L>sa2ZE(9n`#NbXraxBFDo^RpS8gf z#7DMCb@W)9Mez>e_t}=P*m<2MkZ1vb`20Yaeuxe3jtc20l)VcA$yzMdijQR ziaU-jj^EU_kGb1EJX9AxevF3M;eT_Z+tV7BmX?ElyRWi!>uu=~o4t`WJHdD2znV_s zX-Ea5!P^z>Y!|v4<^TnosvB`s!Z2$~gfui9RdydA_3^){{WhY zSV5%~e@32Vl}o5F9x7vr$4Zq6n|f}n8aY%Pq;yi1hBr=K#Sd`=gj4e+kH(-N05lkg z3s5}Ea=FK@6-S5qm9*X1e+;M-c|bl- z^#KQ5m>;m_gu2#FaWgq^PEVNRQVh%*%yi|2^`efD^>JdbD z>@cPPb0!RYCZMeqK{R$<{{XEJRbpJW)xN=a%y%+!m?;e5UH9Tz>Q+$(Fb7y}xQa*@ zVY=~rzSHG@ayi#onmxU9>>sgQdbgPG(hH1D-U*H;Ga^tZg69joe8U^1imH_*=7vh$ z{IaqtT7a}rT~@FhWE5@qd4R!@Zr69J%NV z519C%0c!AEIj#|_S`}AgXDxFVLwc(^T#M!`6{*HN-@h)8ncL6*0Qjfw5Yye+hvQS) zY=PQTsZzQM6)Gje4V#F9n$dQrC&fdDtt;|Y&)n}cTdUmSELO>J)`alGr@?5_ZeVQ% zM&J_C`EJM-#2W_0bd8VC&?WJdHU9tzvq%M#HdhCjz=i1)Ctzvv+2&G&g_`Ba0lWPB zRwddbO~h6PsmoZ=pE8x4iYhUW8*dA5BQgH~n<=V`+GYO$7Gp=ZsZymw>>iih^<8?e zk5@(_cihf8G1e4Cqh)id=Xz!FtV#`qhzVh1W^8vW5|V{cu=1eIm&41hRt@Z3=adSr z_cIc#08zGg$YwPsE<(NMw?J1Cs7@3P@_z~WCIF}o?Biz?zE&9tZlJJX50;N&-w~u= znfV>REqF8lC@3@rC1a&#R1D1!UQgdttw8UHouFJo^Zw;=X{-afY5jc4 zo=pu839*7e1VY5pS0{;a$k-P&Hay_=<~zws>pQIvC7o_1FubUIc_0R{eoZKA^C=1$ z6y8hK*AKpBD+T~ZC~e9Gaq|T=-ewD7YYhQLOm~P<5ve&X7f{svX&ODfJ-R+V$=|NH z^^#PtOGI*xIw0cF!FH4bc-v zx2Aog~jt=ey!$Iqkw9h1RF!?(^VLUP19!}n3o}okp+EzWyN17L9 z@H@Z#yUV_WaA_;Boswo-BBC0q>>B+*gh6$arCr%)>N2WO$|#}MCk~m;3<2qF_OAU( zmG(DM;@_jhqR?j1<*)Y{a{MV{v8={RCedu(8@%h7gj(OR!T64M&=dmI05kVB|qP%K9VMhFFKKCil-gX{&ftyu#ZegyJ_JGF^GMmJyQu7v?aKo$TqGu5( zl~7|a#7l5}3(Ro!z*zM`@0DHsI zCCos%69zNn@Jp4PQqlAHCl%4b+rNkla)VeK1HWVM?6QQ|2nR0|Ir95Mh}^WR+t~5W z;m3?b%&s72Rcx0WZ>t#6G!0+p70ZYi%R$=R32F~@d=bxqU~15bviN2TuZ?wjUH!M^ z;P<%A1EPW1YS+v(D?p0gdHGocK@l8?*qkE`ba&O?M=@IhB2qkNSDb_jDv>zw)TcK9 zvhn3^o_{kAO7p?QN zRjtbCL%du-&Sv-0;*Jn60}I>=uPVjGV!W4$e;|RH$^A>CU=u~X66H&G3dR0|_v>RsA+gyUIvGVSSIorS%xUEQA`~4eSFKk9y;pv#>proP4$EDEZF~^ECa8f+ z%~_s)VX1PlE(Ct`ynLhBAsq)2xn0%FKrS^O`d{J}aB3M`Y%j1Iaqk01l)Fzke+YVU zC70kCT|>iP*pv|e0K~KP1qtokT@^3H28V}E$JywzlxuO5q7|r7PSx906QLrM8NY9M z)vYC^R>yDd8n<(sjS4Z zsNz&r>+)7V5kHo0`-iirY}AZ{lm7s`%<(Iw&hqIz^k#zKrIx>BtYlT| zQsU#*TlEt<7R83^xkaeSEnkD4(OLfhMt3L;g?g@4Wqie6ZW!DNQlWz0A=Bm&o(Hmx zzTq}2_=yLyK)s&FmZFfb3{#F%?O!ol6xyvl*OqtA`Un}0UBsXS-b2{e-m!FG6!rE z_>WQ>R#1@bxa~Umv&z4aPc-x>Ry3207V2d^Raa}va@`cfz!I#=@r}U6s~S$?Wf6`R zkq-977>h(waw{VPM?k1~mx(hQ947Z*?57SHU3D&ebvHgCrU3z!8UPmiL^!(&4HxY+ zd0BajeFE@raWF;}uZx%Q0V!tK{KG)4oO`4Y0!M^yUlQ{-Qp^w^$efO;#6m#w14Xu_ zz8g4&W}*erW%gb9fN>6##J_lt`j0@62=Y5v_guGDa}FC=u|?$dIimHE&3O3sgWAmY)N|^%sDz=;L7-f8*jWdgCmffA-WhLODR;6CMSRcQ9^UL@XtmM@+Zn zGdjG&otXz1bP(vi`iY`rKiAdwQ{iKiiwgWV^Dd|!^Z5hy74l1e*%U(jpdSPK#ifP1 zu7fA@51t6faZaC!Qp4#VIz7T1#TO zBey64xkF;?vgH~l2m6E++%fLd{zJq8=HOt>P(0Wg<+vh1Ep zM8v#YD+Ipd$t~K2*o5oT3T9KSElqDi++O9C`C@KN>u!}<%33H57SMQ z3EWtX*p6XZPK!V$F}CYjVHC|GBrp!sG=Ojdfq*9x>!R3pl{kQK7$W&s18VUN!p>~L zen;ioa|voTfYE`^J@K4WLo^Wpv^zD2e$c9o#aJoW_QxMfVcOkvCI;N?sTGFuIIAG&%D7JY=BM`TOXuCz8e7!=AXd=+5#Df1B+;m?H zS3{89;<4mlER8C>hC@DcsEvFmEZQ2iGoieL5Tlg{ITMD;s1FjI+!eltA#*_@V-I@( z`}c-^1S8bv*#OK#Mx=k-N5tQ1C(d`9oOD2|)1e6XAA_{xs9XyBXMUaW^e3eHd)!8q zpw4t>@dL~?8eA}F-$wrc`5CGe3kR{H4f6$Wdt3K8`Gu%b>1*5DU1~C(^M{q1vBza+ ziz~Fr0BY@374dh&ihx#$MxX)gZF9UnA>c`1QwiR)mYmZ`?UXojHvEUlD8T5|E>lxZ4r-!%_}hC>PADpL)|ULsea zbsga7n+85m4{LW5I?OV)f5`)}P$5CY1UoK!_~4G32@-%Q8KV3gmRb73Ub4`D6xGtb z*dJ+hyTU#t8G`ZoGVR{`n}|y}u=@uNcI?S_5?2EZpyX4zuM85_4$xpT#wn=Kp*}C5 zPB4#=jI0bx@z$~J7b1e+3Xa;`Wn=9veq&3L{ot@|w%5n{s36`0VC+9HnCqi(pQ}gr zIP14nue5jTy7Zq=!osFw0M1yX8~$6=Dh@%_?SawPxsD*;OSUFR%|ytxXriyl4V6bF zjs~>jH6KRm?uE2#%D%)u;k5?VtRBE$YK;hiRT?`BpfCU!C6CueG5T?sj`dL8(O4Z@+A}zVL1M zsoMeJriZ*`Axec+cD%RDCq2I`%;Z}-5GyM4h`%^BhBBy-v2a&v(7r*H77lGD%NU)? zeT3#Xu2gHh1CeOPDPXnMrPR4A=RKN?KaqgGZmey(IVD90_IK2PoDuhVtuKADF12g^F*peRsKXb-(9US(-pK*oe&9@{a?1ked$ zX@@aR9cmT!YYP?DTfvRyD>()sX9OJ8k)=(F5C>G9i}B_lltF4Kg7c949vG88pE_2- z+HrckO-AqK+=p~<2Qscv)n5n%J=jmd06JpSDwAL~?7^?pA#;QSK{L8>CwO8P772O2 z{dYV$fV_ig`y3wk*qYVL4`3w$j7l(RqC7qlW!VCwz;mr#f-(c0+#+Mlccz;Pr=blu z1vcLKFEzO80xJ1UTA=Q`^Dw9K3l@XRQy$znxar|+ga@_L*dBTx`+`~v4cPkQlkZ+X@?r) z8O_5zD*>j=E_~(AyIg8K&xfMu^0{#^)p$-b?psGEq3B-4vWI`R|7UF;oW<#)wOyBeFmnZ2Id;$ zc{G+JpcoYtq86R;a6%uPI}do{x@VxgtAQqIjhUtTuQ-GiiASzDy|%CF`c`|Ayr<{+q20~?E=`U zR%rAFrNO_jclIv6r`0s~nt%6rYoXgLq{wjRjwZYW+OKlF_NJO|Hb*H9gfuC0ert=~ zVHSi&p5G7#Z2rl|TaI1=%?b#9wwT!Xa0c3-9x(fw{E&xMsa0 z>>c{YMqL9p(MM+%?d2wJBmy!QVH1$abx07;Grj?cXh&5i&#pwZ@HiUt@ei z8f-K!@tb~XQoA&r^{Hj_hj)*57ak$GSe7WUiE~ZD37N+HA?>8xusXVic1=Fy$TM|g zU(7VwFg5re?mk&SL*PGxBs1^301U6e9_3i^6c51s%C>t?8?@Hy@*jyS>t-$WRTLWe z7&c9^&mOCRZv5HuM5KI2dCbgM3odkd9PSQZsG%O}ugtLk;;eh3!ib?-3)$`V2mz>5 z2m5@o<=*8&uBA2CxTt%?G@xxoU&{0f=~PZi;64#crFBXb;r{@L=AEgUE2<0LF8FE; z76c{TAe3pUYsb1=Al=1pz40AGXF=w@Bk$dM56~AXC4GK-OarMsg#C4x5~}n7MQ_`* zLRDoPg1*@IGZlqs3KVPEF=j0vGLuA`7E0CF&yhOO;JB#ftE>(_}vaERl&y?*m^psjPg9!&P(N%{5?O^wa z)}jfu=_}to;eksHR+y#RP99${)ZhwI(Wl2lWI%{~MF4*fogTGzBK`vCOQ(Bgb zet~ZrrV~BD*u25AJ$OiW?*(x}Hx-dyH=ZvwFHK2pVwAug+Kxhtg^R5xzH*BKCeh}f2mWOGgN*@mu}Y{J3m6^Tyu&Azw9|S?@RiX`5hsC~c@Xjle+OFT2ZVFW(e0=gz| z>~g|U%+l2qP`VmPC#W1EOF_&PTwEsz@cER`#6Y}=aOG~+GLhgw_OM@jd$4p4K`ee? zl|XG&A2H;CwI}EO*Sy7)C@Ah&_vQBCiP2Jvm3e&4d-MW^9#KF8l~DPP<19*RFsG8c zw8~UHCmy&737qU|ffV|;1Dy{7F_Tmkc_DudJ-9Jg?t|PLJ(^;M--bUP zSOh$*2em6c_P^L*9W)(_2*9Ublgd#QRaYwazGWL;h;)OzrqnPCP6W6k^Ja*@+;ioD z);@sjbX!{Z)G@ba)D`=YI-4q8zVTrVUJq2X11hP5cLb8FvuNhz5*`E4+w6FHfVq8V zUZPw|^qWD>BNmPkUIMrf*x;Mr(Q@$+poVbE1C+}1LEMTFcQgZqeiw1i76(#*+CX>? zMWT@qfJ8?kaPd=3uxe#6>=Vgz98#!nz{7y!6@%@T0e}OrR1Cqsn!eo4yRk0#7xek< zK|lotI;{M3xpM62!n8AlA{azb9vIIiC7|7&G@4dyY|oi+Wy{zNGJa5rxj+DRs9VVZ z{H6zDj>KHSXE=uw=#(@8%Xp~MBYs9OJ?JRx2CX|o2Ve*v6r^oF-y7vVA0<4rwFcv# zqN>-8%mD~&byw_d&jaWMz^}B|tn1Z%B=bSZ6p0!(yfV$7$JwmliYbZ!VG+}OPGxl? zjpP6*@xAPZUn9^D9r?cUyhpTK7*t_jIR0g-iivfjuP&ZVF~MCLt=R0w%O32t)Z#jt z>N!6UAt91v@Bz2P#?GVOcs_sQa0wUyC=QDhP1T?luWS*wETtEeU2-Zni21PgAJHc{ z&Cd*w#eUn7y?Zcl-8mRC2RPRxO>} zC1(<_S1ppd6dK-PKe@&&O%YAhd9-3TA^o%zy4N#|^w4s}(^Abng zAH4_gl%#9Qkztxanug&cr|ZUm{E}5~rji6+O%LPuEV7MqV&-ZTA$C$eOGH4#*qoaR@|rQ$gyD5^UHE8-c~ib{VV_+V9W1YYA%_Rp9H7ztf> z&q=O(G8cs^RKBUTw4^~Z@lii{SquC65xgzH>_>5DVnh6*d|8#O#~0O;fndgaH29PP zB5uS;mGeGl%q)Oqi(9MPn&w$<2?hZu#vJ54O2kutcTPNL)GE!U%l`O@YEVxt{{W~J z3K4Z3aCUWytUICik`np|{#AFVHvW zI`ua72Bxy6D$4nH&_q!Yt3j`tub5jBWq=5e&quXQPj=-E5J6?}pPw)am*!O87qct4 z)sK=Uk5wqP@j&*fjBXYd{MHGhJRk0A!{r5JJGqGai!bH_Kn^NaC4C-Ql!DX10A^qfi%Qs0YpwtBcye9JsVOht*fzfPY_6l}ZFBvlU`lqq(p@BNqgDk^4V! zijNCV%oRK6Yxd&BG0Yz{6U9#I_Q7{utg10D!F)NWdaSMDz{kbR-lcrKDKgz@L-mib z2#aW<`g176zoOjZ*{8R`mDJavx7s`OP5n-#%k?((Rf*b*h&%#kx6UOf?D^>AA+szE zu(R61eqE(Nrx=!~cP%4jH^x2S*2u)+@_GR#E3K^ z4U~`18IB>S(*7-&EE+K z6vK&XDSQAAAbJ{tbCkdW*8JbY4QHNvTOKL2MLo41d`i|AAy90puhN6K`45t8X zSG7w-r6)mQ_ov*U#Ki9UKnYXWLpPBrKmZ2@j)wg$zRs_sTZLjnP^XJg;>3@KGWUjaYsiEX)+ z4V;No{*w+}*R-lDfT+s3Vz?!PfwFlK;AC^sy)C}k-_~#F;rlJUCw(eimJZ*sWg)`% zn==TYiR20K4adw2+lA2a;5I+f1uck;Bj2I-0Y_vuH+r;AGwlo_z^-j8f+zxHGQoXH z3=~epr_BTNIOxUBX_~Qh+IRG`5N>B+F1tojjJ29LyY1c`Jh!@5nk$^$z1ZOI8!F5U zK|re10c!k5T9t=u54z@5Opyr_LW%&jnl`)wzPCESCioL(X;^aP>~5ZY`^WsLMJn? zX)H;efYr^mc(3q7#JkkXGp$3!nN6VbB`^YYyc!<2+^q5lyk>93zTnF_@?vCda%AVM&Ezs14VW+alw&&Qi)#cn0u}Rpymyz`RGCBd6GtHMlFP1sj472vnj)HixkCqv0GD0j1O;4Q zxN-4P<~%KzV+I)p#{O)YEG<<_YQq8l7;152I8!7ca`AmRx7a#_~_%z%LkLdTgHy$2LYQkWO-LN(BG%G-y8HDdJMU8 z`d_Z^4$A{r`)MYtI45{xq9uY|gupy-pE#xu_A6pKM@a(_-DO9LvHaol?cN^lu6r@fYDxu;G=5y^6i1u7;)_5HSyq064@tgE6W75N@?Kz>@OW$C- zl8`&Sg?zEU`qH!dQ~vDNBc^Zw@dF(2LbKZS#=jz6}%?JFNX+oeGU41 zeY?M`-=OQze$ZdZ_BA4VM+aaq+bQx@cBeU<^uw}L2$;j+xVFxmc8Efol~1&-AR~}I zvK+8CxQTR?gn`!b@@m*^(4%z16{qa?!t* zTfXbXpCn|J0)t>RRX3)glFZM19%XzaC@x)L3N4q1X#W88sX?_|>fPA*_eFC-;zcf< zmTa-_GKL~7pygJec1WNm(YLD3i`z*LA1#y}$ye}k(z&bMY8{7R!xP%TJo}?&<_$wr z;#bvjrb+>d+E030*m)sefYboM928X$=x@{8?cMtBy$9_Gu7qn?%nxo8k%)-;E7+W( zk>p8I;@;s3lUgGbkHA~j^6~B+1=U^77upi2s$r1jACGw9C>v;Afi}66BC18UDdgeI z$&gu^#LjzJs+NHn$L4TItY$3cpFF}PCNv)!~%;;Ts%`B2(LZsQ%Szm)z8F;&#{HuXZ~rKP^NeSeQp*P#8O65$2!0V}Gvxm$~~ z0!H3&O;JH$L{2G-(AncK!}P43Xdk!#01tK904NbSN0Z6EgRr2}E7G;v%`%+4Ln2hH z+hM@xcbsfB2)c*?VJM~SQn$@a*LDILq|)=QBOAEg+hN)wU5A51>`I1(9a==LYO3n( z7&ml@d`qpn=&+B8coHdr!p7i5onC+Y5Z?{gl^1XeRBcy$-oK1YV2O+|oVMWOynR4U z3f;y^KKxS$ILx_lZ|XG*06S4Y?S))WD^-RN(%=ItWzJoTivTOBzf*3vpGf*0{Z9Qi zUX%AZbutl3syGAKR>F4?LWmI&$y_{FN6f4FfhD@K$GdmR-xUE~*!f(8mxnzJ*O;QL z01GdMp*soU@$Eb=;=zWXE3d**muvY=YpyUV(D0J?`^%aqBv|DQC0hY z-`qqLFtjRuYq$N(DV0X_k8JyPnbyI9MLuF1HrN%H+FS}0rF;8(%PN+a7r!wrvKY4Q z{{V9F)~)V8h!&Is4Z5}nF2orWPaDJL7zWVUs!_3gx0CxJAUQ$F-P*HU)fbq;MF$Zl zPH4_+jaM-8MPU+=bl;NB{hl(KXM9Z^i&?DTm0?RC>V#BjcY(a6?tjc?$D*OiP``cYP?{bX78@$b`PNSw)GF8-_Y;XeJAdja8wPf@zQO_DsvltADGgN zjq$#ZnQ+tHS%uqJ{3miz3Ue-Zetu2W)yqbb8k|6~5fyCKYU_&Rn#w?>oPdpB4XLf)ziP}RlF^VALbFY_E%@^kJ7U=7dpI8Z-+4)e5kxBu`}pI$ z4ou*sqK*51`vetQsX+EFttr0vxl++WS+!!0Dci5Z9Lco?(`J9|$|`^XIj6Yy_x#5W zQnsYyH)r#F#DQc!Lb`xfM8w|lezlWOT;%U z(plNmL1+bsnd!dftcgP>khyy|lFxXxhBKLLpi-!2yAK-TR?<*J6nATnX3k^6qA8|= z)CKrG#?D}sULh<|gezaOQSN2utSI5 z9TxX<;mc8I(zc)isaDZgt!@WGwO)fjRvv2QIe1tac(*I(RTP58Y~j48CJN2tw9MRz z90;k+c$x3m@I(2 zmaf**li!nUHTHXYhtTincj~^A_imv;O-28Jl{b{rYan`Smihd~ zx&X1-=ZSjcz27q60@3C=mr~~lNDjpz%LT)Mhj_kc%0BuKWe(PUMxM~c0)tfsrOLQ~ zssLKJ4>F64(pbo))n5j;cq7Yerq0^;jl=Br^$(%n(C^iKNABE5jI>fCvY57B5@cFe zzK7Ti7^Ijxl;*j?p@)l?ei@#xwfo0FS}kbo3t`|w3VxtMyt)r;!wMAv+4jDEAhkI5~acv;xev)X#1`Xa@)YTh|&x0c}pbz3N2HD`;@X))4A#HSu|rK$m%VUi2hJx3(jy8YHSlotc~KhgY>y0mmXXEjH+HW zm-4ts1U%2aC+g)N<^hB|ul>slmzuxaIXvML=3kDx2l$R4JHvhkrbqm42aKGEN*{e?<& zuee)gnLmXlw{(vaG^;=-VLG`L@{9h^QtLpx^97EZBB7*2*QFPT-TUqwUgcJ+>q{-=Jcud)j0@9tQ$ zasCFZe3cTlpmO*uvFyzX@~ZuYBM!=@k8COY!3Ci^nVPHSS4;8M{B-t2dqqTahVTaB z?pN+wV7?NrH5h z&%%EZdqom|DX7DGkWk;nYB)mZrQ0C>B_GdK_*Aq*`|s{Y&+HieW93B~zmMrP9ufWN z87ytL%2^RTY>oX%fkNdEWiA-@Fde<7;8)#k)i3Eh`sr~ydXKD^Dg|^N@o)SEKn;?( zfm(nZL^wKCefZS7`)ijUKAZMQU-*r_+25&h{=({9TmJyWZT8hG(tgWt{7}@p^{df$ z=w4<0h19sW{{V~I)T@;ZM}C99t@|hL+!wiJ4a+spXa%eB25SbcW^LABjcc=ei?ncU z?7-4;G+*isORp}XO175k+E>pPm>?sEz9oCm-eJjo^~9wsu>ODS!sgi_c5eNpNq61> zLu;z%pUkSWhnNou};=o!HDB#6KT^dWjfAtf1YP;?BivS{dDv$obG#!>3)>tWSSCMM> z{PQhAyEox>e|VOmT1+5kIte#IYgRly=L_V^0*ZId=e5gQyR3~b&Hm$h9ha;x2mb(N1)wU!Bas6gztjq}D$??u$IiF?Kox9x zw4CR>0c;9GipW=-U+3C6kP1a_BW^nnm=qYo z+4a4E61jLpB`tShc0H;HAQl)G zgH`#IH!MfG-o5eXnMw}o(}!R=@u+lu}NFsjO( zlV7cTYGUL8oG;-!d4a-kI9k2p<|IX2(O|m$)8LA-4V9wryT=@Og9KeT;4z$T>y{;K z!KRJXc&e7EWv6=iKh(@wZ8dFQ4ZX7tLX=vpy(o91{@lZ2-JrJXzxNx3FaT|By@rRx zDqyv$YW%gRSW66n?Ti&v!SDe@6rjetg?zyX+lZrCs#@Xph4tP=F!nXS`sFBTcUJS_ zxPw*&yRHk?H}4V@rq!f-R|lV%6rkz9_s3)RD6X01`+eY!C{99}?Er<8{?FY&Ui)#! zXcPtA6#yee^sllDmX?-*Us%)|=X_b;El;-wDyUMuJ+a(R??mR1aEP|#*#sw-8* zO5`qAw!2~lFH{ncZ!s@<<{<38j&~@|H!tqC^$w2x2Y+(^0EM`+<;$1;0L-+sv9O8cXK;9i=?AAeG%N|h>9 zucoDXhW!M&Q7hD>sZym%l`H8t_m^KnU-`3sl3b}$rAn15RH;(EQ-67$K9_&v)3>H? z>@6(~bXsM-8kH(kueA%6DpYsqJO2P6`bPf2-$Pv;^gqCbeGdHxf8=Ucpl{S#mo8sZ zT`E`K13 z({k_s0APJveNO)X^=ADA%(-&@rO*DeZ$ocI-~OoIpv&}EKl;7B2hw-wf7jOj$n+|2 z{Q19G^U>d=@6qDr%Z9yk{7KRK(|)?t+tPRFzM=jlB}$b7zRBN1@AmZ);#XJFGXlT# ITYZQB+3Z-p^#A|> literal 0 HcmV?d00001 diff --git a/chat-agent-sample/demo.png b/chat-agent-sample/demo.png new file mode 100644 index 0000000000000000000000000000000000000000..c7eb98525523e568e2a65b55fcd414cc37243b75 GIT binary patch literal 108688 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

>`+BXz2Bc=w4@RKcQ% z590J0@B&@{^IMwt@99e_{G$3m#1%flU#~{5L)8nOSq!V703AZOZ%N0A=R0X~89se{ z&)iZ&Nh~VGs^J_=@};mK4bZNJ1OY-zs~}j5M!M4BQzo)NM`8pxP?4y(r0Q!LFdqsE z-UKT>Rv6>$O=p*hsg?`_Q0nc^4y&7S3eFP%VL(LCs`2-C)aMZmVNBXUS1@6dYkwz< zF`NUDUZ66N4duT)l))^>Z$$E2M>JEc;E0sXHMdqZmkJ$J4&7UMy34m6bJbA4hVpXx zr;~0uQB% zmoPAz7woi#vk~&fm59}erl}7C{P*c?fIRZq;Mrc7P}LX3D@QB^8=ys-wy?&7%rbQ| z&Es|o+gTd`*T+nWtftoT0%k5Mj&F~5yOoTP6pY)mQ&q&X=Pa&>hz?k60ll6SB#5H% zWUy6;EYU2l(D7&jfu?tZm^4Q7d*6wkql>9|ob(V&A!jN-JwCM98Y3sdgxx|F^LsF8 z03nbU0Da#Tl6{a6(6A?AP{OV?IZ8@FTShg2AhsWiR_GqLCnKt2#RZT-nBAoCaPe{h zdPS`}@Stj0r@W66Lya&$Cb^O%IwhqSq~>`$Gb&kw0hhtJUWty=lyamKCgc1z z$R3Yt)$&Kt_fz3RgLBZyYYsF|Jy5P`yCA$-A~{Ddk;Anc`8n(De*HIIk+0cwjNeSF z$(RdXYPZLb4a0b0TAPO1eMN1@7V$ehs9QPQ_FV=0d>mhsjA%ec)@Ob!c>VxviH~YMu6k)q14wy(H<@C4DAZJ9J-pq zp#H7&i=o*#Ue)1y?>-qNK||~ye0cmI7AcM!voY#M6X0QRJi<_g^eDNkRELPDneAZr z8F&T2d}637(`oa1IUJwy1jP7%OA$MLVphsVnGaVC^Gzf)0lj)f_&o_!Ox(Gm3K9r| zJImHAsS;D8pfV(?l>7oTLv$@~4!4tPaz)ms6I+y^KZcH{rE^F9wBw^mEOZ_IWC|Lt=$k9~Kw3fx@&)kfRw)}qr-Cm2j2(g7eNYQ*82)WD# zrSJ#gXYK>Ol{7~=s%MmVnj3-|x)v}|NbT+vU%UA>BrB~@Ruk+L2Ey6m5j(T`LXdHf zWmhD`@OtqK!bPXxpuleGp1uW}`_E{|isJ#1sV1kkkWdPyF<2k+0J|WuckCmD{`Lv$ z>#3C#71>tdlHmeAT#u*InbONSWT_%9ESnzXktzwMX&?4T2@*Rn1^MZ)j0%D%%vu{s(n^!Hu&pgWa&;b zNu&M&R^_01R-Ror&StD>bRoJxh^4^+3m2=5ElUVTj-!~5Pzp1I-y<}ptsNFAV9KLO zvdTO=xbf9)O56OJnjziS#miw=yO0!<7N7KIwwBqnKF)SBuJ{P}dX%fJVjWpuj5wuI zC5OGWHTwob9Y~|ky@u?mc4P7-A54~d^?oIB;pEKC6N@6Scx|$O(3HebLnG2( zzGW~-C*RISJGccrMgl@Gz6{24zEx+veUfdf#~sXHge=NDD?P?k6x7}1*}_k6<338E ze{Ro?KF!y(nTxhigjYladxv1G0ng&{H&KIoJ;@-Eb2g3;s)QE;{8-%M==jD0@7*O- zVRE=G#8PewJ;A?AI{euD%+Tv;Bw%`;&mLfxv66Je*@^?kBa|6eYm8==5+9RL5kEAy ziB&jC=^%Wk2JS9o_Um4mY_LyN+{Zkk7Zic!4zv=a&ShX?_ehsAZg$D{609I0XN_K= zuA7hV8I_gt4$Ms@g7C3HUNk!456#WU;p9G6&!2rIRMaW`{`x}0v75|z$uRjtRv($b zpg>m$!a@++P~m$llykL9%1F*uYQs74eY&hq$MF^^I7zb`eyT!1;*ZX zl~ywMY<{RoHK=YPvz*U+0sclBW+XQuE?r55ne6TxO1Nr2!aRkfgqzN8(>qf2FuJN# z8QLIxfk@w+LPwyID`uO_(r#y7olT;aI;HY~_nuPw)t;C%tRV|b`2fp?I&)q{?nn6c z6lC_@FmBgSnX!?Z;?dk6`r| zVl&PbYVLP@E*ciFOQ`K^h{$zf`ZRW+k?7lEF!D3$fL9xM&oZ}D3R(o;;zJ6wyd$)v z7j#_Z^Wbw4DuQBSBSYc(ZGTn|(Wi&)1S2B1afp}|SUG&a4GgS;!JVIxsvvi-6MJV&?g-?{k`sl4;fzNnBC^8QmCI7VmSTNk1~ zd}xkd&DSiWecakKr#5686G085M=;7b-uMW})vQ=sq!nf}o%SmxSTchS-m0Za-J=!o zOitp_thrW|eOnQ{TAVmys7T9}sVj}TFO*K4=SsCh9ais^X*NTlzbzVYC%4i!%q<^Z z5>ZHLBb8;op0M9Q&N1FY{}v>&?SOA4f@lEnypbuIeB*%aBs{QhUDP zwi@EUOY8Ru5;DfV_TeD-*QNS^;=`Q#S9=!tsrQ8RqdRU>)d!Of@;}c3aMmj6>&4bF zF(fyI)Y1tlm?I)eZSOs zWz;uBRxd@vFV7?`GQdLWX>2uljo>G`ZObG2r>F*s!naCeT<8ZDCCc+wDoZNk*c+6> z@CYw@!kz_)MmR{EVqTWdMeqO0=J3{Cdo<8K!4&0Oyj7_M z1b)k}Rz>jG5iR48Ja`%9F&<{Id2sqM`o$V+glZA>ePO02m^19ASirv)uu{diK@?zM z1974}Q=Nx##N@;O>NUq|9=Z8r?%+NeGRb5`S2qJT7@d0K_5mkkR-;f=Wg#ip(p`CU zO^(9%p-FrG<$`4$Ln+^-%1pV-qZ&lBxOZVA$Drs4#By{=}b9MG$hxhBI@2em`@bx{qvt~}ngn?_zul#)vv#LdQ-CNZzF^ayL8N@L$VrCEh)x{s6G zR`c2(f`d5lmHWok0^tq09Z?VjQ~B}Lm8F>Za(kL*l+87nh^v1{I#oC|TtYknuc)%m zOu3tX1Q7xT?T1c8M7M(GBI;~~05Til#0Z$*b0w6aGnP^4C##%B&8p3cWzSlbzMCQ} zJV%raC!{cJMg8Q3wj)qMU(LTR2$V@=f*;RjKRV{EsyJT#HuC0glJ zUw`A;ah#3t4vhTO1#Jm?7R77GR~Q2rafr2pUAbvYCnIfbLGESAoPFm%EP!^W43~g4 zJW>r=%MWB!FmSBnSZ-lv2JiNQc~465!3$tL**jdsA~oW)l-n``%?vZ7aGCD%tq> z@h`_3g*77|tD%dkuRCI^ch*l_?Z;~bpGe2Y+n5H{E4A?%uMsb=RA9fP}lP! zh6;Qg?alLg^R<5Z93MEMYTIZ#YlAC1 z2%?_x8iQhr_eMkJ?gGWk12Mw4M;LAwpXv%DTWor52A!BRv8Hmp5^j{T(B!Kf{E$1C zDoEdKdFcd+Ha35~eJpl;{+W^@{~ivnf~Ky(w`})IJPk~iV|zu+abfW{Zxa25SmrDZ z%3g5qOx+w`6?}2aO1OiNvX2;JDw>0d)oc}QSNKIFilk3vz=s5*>rZBBm$M`^m_D0JVVc3m4_`II+J*0QM8l)svS;~^ZKGU@ui!?aE@LrQii@}U8>Ne&Xhs*?;qw* zMtjv3?dqLT%BJ~+55_~Jt((J!n=ck3C4vvU5i1PZ(RER2eo^>vo2HqT*$@59Eb5dt zGUB|4SxUq=nNQxOrH{?`XhRQ173c84tjc`+GS4n~R<|MP+=Vba_5!>lFJz;!IYjXi zjs2YM;NegxSSFQM=+v(t{qQnPur%5G`gd4~P_p|}l$ddCf@-9#_4g0*?ryNc zHVng!s>;U(JF9SgWc2S+jnmy~47YvtmShQ37Ay(R_KL^va~`|(E(@35wvY~Rua)sdzi zo;~_LMs|hQtMgRHY@7v~t-6H7leR~IGxT{|wI7cqR z@Qp?q)prF;4pJhSST}NbCYF>EJN$SeJZI!erwM%yT@&FT*0DI2c5jQd*W|5x-|L#( ze_r!BF<9Q51o7E;B!#|l-WAxW-|Gd0m)%}154OML5kMgMjfYqBn-K#4w;ThNN_HX8 zzn9YTVENy_zkzBbXLbY{|0@I)5(0`!F`?5*$KTRPi0>9ue;MvIvt<3>%~(U#8tcg( zg#Z2C)F?pP;Uq1n?D^l#G_nFpP~!(&(*ONdQz7`<06U24HKijwJfBtR_0KCn?Aqs% zqJh9XO{RL^YQbNd^sR!aVV)3b_v_s|T{rN)aKnGWusOGuby?ZxgYYbPUM(%<0QGdl zKB%gpqXSgu8)ln;6wMM;Z5RREK#O0NJkNe5=`e9-9g>)^-=WRaC{4d2$}Us@(1>-N zujsG6)x80wg9DSZrK%Jvt(4aMd}j@$U>MU^j@q6Mfi8cHTEVmgsHi_+Re z4eN$qi>$pw6F;o=o8X@VP>VKxpnij?W@Ftm!GwH{wHy*Qu8v&O!*d7t`xk+Rk(;`W zU!Ey+_%+W8KiyB@pgBGQ!pJQfF~W~A@mIP$*``8(*bP+ z&Av1?MOwB|A4^G7ly$)iy7EKrfRoplX5HA2!ZoXF4b-cwrIX&0N(=)P5+-hd`AlVW zLPhxep3-{S9Ozkj`4rFHWPEny_*1}%+YFSY4}m;}mFcwW92hNte;j4cb0P^60J;UBj7!v69v_vctw56-1v@woENyJ< z?9l2z@FiExowQ$qz#YK(=8)4Ib12d2(y4%R zOLDJ7>=X_sNStAGH5I;B&E~T8=$p}Ti1J>Alpa03p{rYzI^KMXgXvcaPkSlFtEYd8 zS*+P5E#mnH-M%~)$?MaqEOS|6LSv^Vbul!_NQrUWR=lfRMRfUc^s`?U76=7x(r;UJ zI$jL?5ptk#ecMbo=8uJCL@$PH)$Am;>}Xx_i2M5)oPQ@kc)x%JFD#1tg5y9M-<=C! zVXght+q!;SG)G|b@z`+%1JyQ2ahOvC>`Qb15rVVHi_9pIr!COoV5%Wqyn*4dqJ+!lrrs^(}lVT+HR zpDk8M0@K{8JdtGj6phP|w(Z2{A(#}8mN@%}6ycX(mHrlP=6%W+1=!)BEQ@1z8<-m9 zYX$52cPHO0Kz4yEppSCj&ufs%{$gP204V|H(IYU^i^4!XYfp8<=!55Le*50o3;}i9 zhP&}rtkHMTSrCC?#(ewrSAPR*-+l|@Z`d7xBQXs2N1ROaAV2f>-jdTuZBB0#UP0NYj_`%j4!iiJzKl9abDO(h@{~ zbmW$4=SP$#KXtqi22jP%J@GkPp?+50+uI~+FE5KcP%HN(U{;Oz}k_Nx39&fUOBiAHFZ4-E>85n?OtFR>d1or@0t17%Ay>7(;`^ zAoc!rrR@5eotP=CUC=feG*^-_I#x3a+W7Vo{M{NrZLS}B#-)6nfHc(;!#tfIq4+!q zUv?@w#mRHn9*zN-peU*)NHhQV8<4EdX{A@B>U^^LjZzQ7wR?=@wviWHNd_|5RY$1U zv>OCX4Y$cdIvnbd2N3Bi6zYTZPoK&}9I(4o(W%Th9v#r4{4ha>$ydntN4!+yZchL7 zl$UNC6pOBHcDtiS!MbfxA|gHBNpw3GnOA~7m4J-;M=i>#u$%`&e1QRAlxPyIds6IC0M;=?CZsk#kN;VwF4ax!hn~v8$|Cr^F*8g+*tAZCS(;7cj(=eh*u?DsdK^|iX&{6Gam;848Ztaxu+3*8VMZN*M<~ZX zpX;L1YSO<55g}S=whB<-)}qGoyMNz&`Zk0D+C4=dtE#QaEQutjlNoX&EDDZkkD!B8 zN*ADp+rfzXiY$!Eh$&SzJ%t-L_;dr+nk@9_e^yEroy>=`LrOy%sPwDLBTkH0TH^@z z^U#wRlOiwFc&eq0Qw0U|EHFg!r`}9FcqsbDA~(bpVT7gCrBF#uH#po)+$X9{Qze3> z0K@GBs@TW+)OjK-?&CrmLy@I@_V-c0dfnf1zZ^GyYD|O~pTa9sB={np8qvLks_+b% z_x{7VR~p8mU=!W#(zY3?@)b;Z>%{WMx@WfX)OMc54soWaLda2Wdie$!ZIsdIEAWO@ zay{ZtV%YN+q!S^bCxyI_X?P*wb^HZ^3kOQKILXIwibGTz*j3~npYy=cxE}~;zku2* zCRH{iktSN&q2mr~KvWRj{&GZmMG#kA7s0t7^pGa_K9{QzAFbRNHIxI(g;TCmF_^!H zf+KPT^Z=SJ@s*gu#?h3p3a5n4#MBeIQ!NJr({nLM=lx_-B|OtDl}tOi<0{%7l#pNI@*;D zOKjqg~W^eJ94pl9ylC_`W=J6ud%RLc7Ai z@Z&L9wC^*6`o}7Kn6GiWyN%q!K){F7 zxJ_B18T$V9uN__C8IegVQNzA?0p>vzrPmO_8uIe_KnEh_2%NgriHy#HMGmxSO5^dV zsA5f+>~N?*MDQj6bhii0QwvglFGW$Pjq5(Eg$U+v(&pDt_MdlFbN0ozM8ECj9nSSX z+v=BxwWG}?1_c98y3RmGqOEVqldyV^R?EWOl*Z!hKtvC=6noq;DI~Fio^UM{Wx#}j zcxAJzt5Xn{w%8#UF1GBm_As+L>eL%t09+4K$~}oJI5esS{YEl?D=Ws} z+jfl7!nY`HF@}R)et45XWu4vZ54M2-9R=}dw|A)C#P1y$Hxu{iLr00f>idOXHq^YM zjo}FgL1fmmWWu9Fu=*DfH^*l;*T{zr$#Ht7;U@B1W2VKJ!TFycZ^vN#U~ zx+WC-d@<3+_ze!Z@hj0r1iCLt@EhjfNPgdu61E`-aUj&RshmvFW$||tb~3Hz4vxi3 zB1SybE`zqryFKYwO*~tAFL@saE&ul07nq37KUG7|%?9Wyc{557c91AB()Klwz1;0H4tVq3iT` zvaTKxyPLw6&stcZQ#kxtQMnXs`%d^OlMyLGqvhz2d{rNfL|=&fy)Nl^C};g+*>kqp zR&Ti>?Y>sB-xMSW z<*)NmGD1Tr^Z=_}`4+U7JZ6v`qYgv#H7dxH=dm3JKjMYs7FY$Ry=Fad^kOXIRla23q#V3ynt{cgfg>FFh z!3CBCAyhivvgNpv+96&!C1`gg(z<)`?H?|VzE6geOJ_oN`%=@RQ`eNwUEZ#?=&8#co|#F9f8ZZS9FB0NPN5Mg+#-zFzRzmp483)^=VH&%QRR0LJ17LE?q`@~Q0 z5m7EIw1i8zB~N!o3(2$#FA?&?IuLxt2={l#b}d)F=<$@!(J~9suk)~)WZ%XQXSHz6 zV#Vgdm0UvZugCAdk;QgQjHENp@Z2NHkGZH1v>~U{zDL7dF~j3sd1f~IQ%~B()SDMB zAPsqWM#09?D{c}-1Yv6FO3p@eAl_ETN*ooltH!^bAleSyAMs|R#?4!9f-LLLwYPA` zFsE!gqGE^T@)SGz4Q5|4h*6%^79X~(HVA0LH5ED>)Jz(Lh3@(^%L=ilxQA7|GUA;i zx_s&RwP=T)qa|LoK#2u#nS8qUk~T8b7Jk3Me1-VQdpt}A*Cx1(x0S06%8G9nDC*aZW+po<7gAOY%AM| zp<&oP=vZAI@zL>564OE&En8!$i_mjP9SBQ`vj0-awcG8Kq`n%O6DW||P|Q~ znA6Ghd*UGCBEo9IPMb^h=s()mFu=7pv% zC1VdgeWSD(X(yed-;lJ$-LS*px8_^5wYtZF(=4{O#TocMtr&1pHia68-x)Z9GEGZp zj@(Scmca#Fj2|3ymOFo%!G9RT9MpCovKlbDK6Dmr-dqerl9*;Txe1a`+& z$Uv0G0KT0DEQiC$?Op2+hc~Yoe7}$eY~dd1P@mDhHn762@MG-2IiV66Wexa}KgqeRNa`^gjgyw1WUm=SAITbwhE{=)r_ii-2?FUY zS0dahq!wmVJVF?c4V8yqP~U35g$&e)WS2AVs)@N~8|Ap96Z+Eovlh{A6VopK3}edd zP#CPUQ}DiK4MVw69K4UOE%9$rT!uv?-w>v;|fWM7ef4D%bKmf2oknoveuHM3uzlhIybrYd~q0x`JzcV;{{5ENP0I5Wnr79G3Z**uX~L zw9FdfjOa+N3GPKfh0p7!otUerw5e{bs~W@{#(d#|l(*!kQmbMM!+Q|HS~ncr(Zoqf zta`x$X6JME&?b0Mod$jn3+y0@2%7p*i41J=m&ePhhb&d{Vodh&0uUh#s^DVgNtA8% zsMi1&kcT8zhID7sQdi2^{*0BqJ}2K2EVf3UkH=|Fs6-WN}67{}R#vl0$ZRSpZa`mHf-47W#6cAdVfKZLc|)|Q`x zkdh%z-gq!l`s>r(LoAjQS{HP^-6)~_nPu~x69-VRa3#u)RDWj5_!ewp4Dun?@{A0`JXFk`~PFW%9i-N@0W*k}JF3Ckxfu>06AFG&m7?O?8Lu69yu z1;1*Fv4<2D<*h57)1iJ!Ol&W+G!-_AW>J|l9zi15`2@q&F|b9KMdK+x?dX@#T;Yg1 z3c|clw4cv0ut*Y7?+7pgpuob@(cIwj$Y@s8umI5t~uS8V*0gulc@9n!3iT`rrPirS*cNGvcRPm7<;coAb3XK(r98&fC8CSLp7 z`qiqw`TE&-zPP23*DXu=gTnKoA59K=3qf-oT0HG(_r5qVJo-TSbNaiJFGCbspqx1R zAUpI~VCJJgdMPpRz7v!N%>2=`INPJ?drk@G=1M#|(sJwFGRDmIa%}y%c4S(KB*!r_ zHF#?z#`0he&sU*4y)5O@G185PV~fj{c5atC3{qPO*{G(VvTF)UZURx0PH*nw;^ich zPD@0L_2yQU({&cxOB3{r$sK=Db8{M1KDbRD(21W8dR;!v|JtuhTl`TPf$h!X$}kU` zxE$dBfMHR)VvvwyE_gh{O5goh5x86Jq;0HtF>pT0#`P@jx8aeTUw-@{VTtT!rlMT7dkTJECJt`Pj^*W%>cjb8>7#Il zBL!eoXktKjrc6nHJi*qkxpQ{$l_T(X{TC7c9c~9Re@6eD*MH|k>Y(>{T7Ycxb_psc6r4qP@f4(jVka)ti$}`vYpWjD*kFo$T zgRVi#J?q~$5{Qm8lh7Q|+Ee}80mFoR7*Slhw08f#3Gf07P23EM4;lXZ{=9II{ud^E z@~Hp12@$0KrK^4-!+u0sc<&R_1%<<9fYEBuhq;iyDkIV#f3RKwWnKLFcwYGW3AGcs z(RYKi$-wSq3jJ*jz}=SVBa-CuhiAj_U)StpLrQXKX9 z9|O-sw)a*-eniNFrmVqNtNd>oE*28&Wsjx;%EXM0yC0WbKoc4%s=k6M#~m<5{WdWH z{s;IePC(AddDb_A@zw9wIP5^Qe?6pa^t+<(V?G{r$zDh*I^tGuPG?B!|BpM2(pKyh zU)$-&i}*vZ8XWi^x0Ifme_($SLH|aq1q{ZontF_|p$n_9^2^ybJWrOza(vqA zeR&RC>eu^oMo!$V065IeDh0gXw_=Q=_+sOvx$)_wP&qdd8o-jX%q*TKFR1${SG( zL2dxR_#Cz&+FVSR7XUpv{Gnaye>UY8Spa|WJ9n`3?pX5hJa7d^E)_;p&5EZEBqCo+AH$^a4-vJ2`3xu=p3g3VJ5E^U00tE9Sc5xpfr<(E(Gw-lv?j#EZ#40vC_g9fhh}zIX5k z4W^WSc+Z>b!Lx!0pypF@I0Txb<_A+9rH@>BS~{l%asH>{S&d%NUKMlte~fP5t6yO= zd?Z++5Ch0*2z1P|$n$~Mq#dY!vk82?I1fC4sVPL_@~ckZj!J~!XQ8xZa8j(=q&+TW zegQP|Hl$Qc2SS+=r+DxvvVcy!g6uCm`SdpkX?dBk$v0Osk3>HH6h zo`YlhOWh6p$?m<#ya?b&>U+x201!~);Z)OJx@;B4o$8ANG-?e>}Sp#^lnc$EL#Js4w(>)MQh+K^?*4}>7Df+E}R zWHA2 z@WVFXaCvGvPpiEKH1QVsAO^1~*^!TxH65dQ0NFh+NqAThvx9W_pMZ7X1c0iO(9)ASJq|amPaXcNv zwF3Yt<&NvI+aA34TO|8a6L-Z|M*wSf|jZxK-9R&Vvm@n~El zq_hZekZ(ZiNfAL=oRKxcQ_dpeblaK2@{fx63?<@?<{(PcAXGC=nNNYQUu(@eNwVbw z*aicd(5y2RE{dY)m*%q5&dedhA6A^iQsYX+Zvn`*4m+kobn z#uo@$P~onH@!D80#tl46m7Ub;Q!WchcjR1No^ZqjbPBf2q4wdP;c@zXd+z-#YeM8S zfp5-0yXa;(>58t-;|!cBrTGJ7n2ZoQ&jEIa-(h*#3OW&dg9T?wbOMi%9FJ0bFl*4U zaYA-3fG_&Wa%Fl5$tX^}f!(o#R1-cet;C8#-{Us)C>un8eQfjs5~Dv$;@u{1p{nU$ znRx~>q6Rz`0&1J;7uq%;>xMHC?$e<&bjgP9`EH7{hZCJn>>H#IQK|Bqb&C| z#$gh$q-_>GibalBa9@rXpx6 zF(~2y`u)*o@a`eH3bkyE7lfD(wr+&t`(r*RN+|Bx?%zOjrD#(cL94<)8hr@e^jGw* zm{QVPS*#D=f5JL$ytavS)RB`Ivwp^K%3|W`X_ZM~z-YjzU&~Sudm=K{ee=C>G9VrQ z-2-dz97NrTiA{3e+*JO;G3~9b`i&&I36PuaM>+~0=x_|ikMlyIZS7ikC%zJ3cMtBGD9}A>&V#_Fz9l?V7nicM@LJ) zhtE*xI?ccFEnP>$9ZUig*W%MT12>M;1I_droY9T;D#Dba2usfP$OOg>6CVt36fYy! zuurD>6ccz!#Aq@LxJ6#r=#1YNd$WRWzWu?8_D98ejL$`^UK>&Oi;)>M1?#?OmR5Ho z4)Gw#i8bd|VFw=#27!fw5UEg5co7QR;bk005hhGasf3$oGF!y6-*?mdc{mfwgr%2D zIWk|fiQXDO6lzc^#>^E0myT)$0<_Mm;Wt$t{Zq-7gPv8b4yoMoGJ%Ct zTuI$g&W^ptFm=778|;od3$8J~639MQHy?43ScQpL_+^zh^luFI0=LX2bQVqPVoER5 zQi-nmlg&d36cjA3LKoxJr+@tSHfgHPi6-7c1aq=1BdG$^U@>ST17O06*AV@L>6Icw zh4HQd?_=KPuTS(kMylh28fE$kx>d0FW>CD60p4+M!%=6Hk3GA1Z;mxN1633czYM+O zXMR_UD>a3E6rzLWmLy)4W@`Pak@D8jZ%2KU&1D%?liUtd%Zhj$d_Xc|A&amMXF)?r zno%n0ZN+8V;M3=Fp!uBXo;Xc`w#LoaOYmdf^Rbs2B&1j^Y)bTtkAsn^@nG)aC>x$4 z54JQ8MM#odN;0|U#nD;3JjY=iHzfEtO9ci{g8$xZK4zBPmcQ> zHQ)_n`3spC{ss;UZor7A+RK_}RIbu^4(n*V&rxvR@V!>Ke4j@7kxls=1l?YocOPU} z*6hFWhMXsPeV(HSgBK$*8r#a3wyh5jv!7D0Hkx8Z-y2|g(E8`VZw|w#=E>7zgGI&c z77Tg6h)tMWMl(;}t8wf;`Wq$}3}T{<6(be_+BjMih)3}@>;+8cIQA?3{SJ#H;RoH{V*G|I{RJn%MM_UdV4SDOUAmxS1KXg`frM+~2*%>6z%k-ZZ9m2@LH@uIZUnZqrjDKC@j^pGlVyP;#R>6@^NT{bg-<&EHOK9Y*=?Qm z`(L@oTrIjgG7CPvekq0OQfgUkP6e`cXT^BII(-kt*LbzX)2&~~ic$`0E3Eg%_)aF8 zcJfj;{mKdCxh|G+`JGBmt(?)(lIK5RTtBywONL+EY>6oXvu%`JIBuliokKGig+C1e-MP;}1G zPA?7+ne8g&dipfePTr{pE@AdrU5vk)luV^~>olUOOQODWcQ6}n8Ij1H`Y80N6xnEM z2VYD=w-$q}if&BjeZ>%GiGKs3mwK@bodVkMhGTy6ZHgV{cZV3Ll1wu2%T zw1Hw+bUfU|--ww&I=ryZyG_lQ8j>b2mO_x>nIurCozvVfE3(kd@C1*K#}7Jm#^n0$ zi5YKGT&eBbuYwx6;=y?sXVu2IdR{o&a(7$slGlZr7t%7}q}P#VrHOk}qxCP8m$@g! zta)Jrc#U!V*&I0g$1-N*b3XZJs61fwg4%@mPsj*O4A-oX0}m|C!6M;~k zT@$lTQFvh_pNGwBq{}kBY96!4E{y4{hIiFsECk>mJS{NOHa-@A*q}6yT7=JiXiG5o zSv(h9n+4(d0IQHEN#6O-`gfkbblcSXTE>cchhSyvR|#v-_PoO+gX@4;Z(2)=b(Eq$`3 z=K%Rr*7av4bPff>_XVOERRv{kpD0BUcXm7OzJo*fzX=S=hEtd+Jb$tlE2Av9x9mW} zos`QjgMs2F>1#tQ>AJ@FJ-UB`Aa3MzWxYUJEZ0C=ruINV=(EzHS2@Y?DpEO9BWX~xHj!~Pkm}M~*(JG@y zlxsQ?*N3hR+dmWL&`g{B5v|-^*7Yk&zP!5lfj14^3(h&}r7Z>AbAcV$xwE2Rs&C z4>70joow+YeX=Dy4P?PD_@<)$-PV=1Y4Vgaoj+4sXM0=`8zum!k982rmCV|?z6bKv ziqwpLa)yQtRddk4Fti)5BGOiWV(u$J+J{{R71P{64P**yQ-A5_U2#b4pcoK!NA8x$ zAG21!+p%t(=)yn2=+VWZ&>#IY3l)|vGOwl1d@n2K>FV_f6&gBkjz2MDXn~7FNdC0; zu3ohR^9x^kj%O%E;e}6ll9m)L3w5<~D#jN0qd6M4Wl}8CEu+nVT4(mH7h?yV36jk~ zk2;B};QXj*Xc+BlriW30s2I;nC`|?(LqitiN|>PK2Vu)C>w~Txtni|g$B>0 z@T-E_vq8BTKBr*RN`)89($1KXu95H9gvvgbak-=qm{R2QULPbFV$?HdPf-^<+;o|P zPu(ntTmE+RR1B$~a282>sbmwvP41BYhzdnkch)2BwA^Nmv5Wi@RWAojd%6oYk1^N^5C8EMLv8 za%*Oj5+BsceSxR7Jb%V{{0I+!`R=>=W5`!6z@Zccq#62m8hY;_2Lck%KbM3x-qkzRfLz6*N{nl}g=%e0j8@{`IjetjV``))6M7w{DagqEXm9l1F z>G7bUrmOqAfpZs8CeaAF8jGXB|hK0f( zR>9noW-=_;*{r@E!G4B?bjzKAlt=D+hOmRiK|=~TE5Cm${QWX7tSqKZzQcdg{R;;m z!?A!<-ywH)i^WXw{{;=mXW+$&6#uIalJbygO#k=w)e6vt=BwzZ|Aq}v^wn4-vEaP1 z-v95PHzRoix73#2e?OR3n;54IX@&SXK&b{~bkzt>{+>0577e7~3b1RO4bK;%d9{>a- zR%3^vL)0NnE26(a;?gQequ)l30uOysN8|g-)4oIU;-Dz11IUzu*OEX4D_2?ps^=bs zsh9RIFtBK=@wRp43XBKCrPhEsgI@3*@n1)$8)VCYa0k#1jUPV0i6BHKPGw$Bk47$s zut)@@qqG@W#jvd)#}=h-5%RBFe12y8H@@QRQq0B9Oi!0mB%=vo9~* zxiIenhnG>>$mQVKAu=4v7`QS(@eB8UBB*09S6}>(`@>l;4m=rMNYgC?NQ?XrxX6pU z&nE+NmE_EQfRarl#E0V#W+XksAOep*dxGt8UdH>SaZhD!*C8^RsTGJ(SATymR$Q-w zne7vx!+QduxSa-6QFwls?!X1lu0njpiTwSm%h`$`YL{OC#kc_#FX9cjT3P{_T)9GJ z?yV%sD)y%AWw{=)FM&w{8IZKUm;dtlUul~!a}!cJKg1Ge!QA&wrlB2`2p9t2fB5D8 zQIxTU{v%KU~%|idxXqG0s`;D z^=9S;@rO=uWaSESqJ0I_hnQE4R9vbFFZHVG?Wo~LP0y7YKhGr){;HMeFbV>eHkGJs z(?jmP=*4BfY5@P9mINZlNeDK*8#482yB!H43UBHQ#bCYwCVbqA%#Mq1tQ#s8COG=l ze1rrKMT}UWhlYB)YSkAx-}WDVg7*iANmLSu!?uiYDDyw&R{ zAmIk+KpKTieAuO1i+?ED7*huw-hT<^xo@p8sF7Zex46Z2Am!yX4QRtjZBWwWYpDHj zA}#{PZe9yaRLr@01$_4H;vIdR>FU(L$5GA{Me9*0%v>Sk6|#<0KYUibpE3v+Z-M(i zkQ@l1KYVZnMC29FtMVh3nOFg&Obnl8aSUBJz*4LRTeDvu79YX2i_x6Ua zc5#z34tWuhC^}qM;MDRN38(+Y$#o|COP+hezxNAQLZuU*wz2 zY_vMxtEC3UC7e?^j4*QwH_hveXA&+aa81)Wj-##{lqdzU*_zSDL~4nvJcr_#Tm90& zhb9tx&)sEidce9e`~tTInL|V?K!MLi;FEU~O+FB>>5>na6QVFlH&wm~1w`=fcVR>b zZ`@&|r&1~8Al7HWUC{n2S1iiQ;w45az)mf{e=fVaxO+?lZWj1B`~WekD!a=&MXxm8 zOONyQeTCWey6d%*x46{CIfM#hNh@{^E^Mg8DKBd-`7N|ohn1ioe|ZjlH0Oo^6a3WF z{6(CRGPW=_x7hSX;WY}((gdG@R+-xIZBBFRMNgmuu74BC+I^x^UZcXAJzk^6$)iry zKU~@6EoX`G5#Blv(gyE|L8aa(iu9J{f4Pd7tjk;TT0I-48eV$-;kZ)^oKG+D-9ZG1 z&P$>Vq|l7!4A6*LzGcy3WY{&P#P_-|V_^62{+7g%0upa#l_R~Z|H*6uDRd*cJHUbj zK?b&ckS7%Dhwe3xz62`i&vrDG-I_FH;L-l5w5}bagzxZ}=%69znqE%5?`D7mm`C-XyxcpD3N(g z%Shu#PCfaH1Rar zU^4uLGQFS86FS)e18!+9U>ZoY*VaXAkusnhur#ag%*4y(3ef56gO1fS1D_p!&5C zXS9kXFxP8F|#xKuZ0+kUhaRx}R-U~Porq!u-y2IfDuwlwVpJ}%9B2lV)t!}lQWerySRI&L7Ps^+!p=(*yn7|PAnCT_PKeeFNY*(0z9loH(4IOnu+xjSy4 zY?)1hoVrM12`fdfFYg0JsO{O)|BjhT+B9*;coGo@Ma zluW?O;eY-FZ!}z(g#nTTvAo|G=godfE%V-upfF1}Y8dqwv5;XfnDS**!j?-vKmdz_ zz7A3k|7pDh{@!_Jf7=P`6IE2Mx*wa%P2GYAb;D@@F1yt)zYOj3c9j?cFLHdmWec3$ zlRYE1wBImEmv<$y-q&G($BS-7o3;J@_37`WXg^2KqizGnia>x_+d-J)EO62V= zYyjxJBiu%QxS2~CA&hX|4Z|0oq3B@_xJ~k3F;O3*Nq9x| zU=c8)poY`=rggKR;S|<2q8Nqx@J~2A#VV-Q{GbqO)5P5{%xs1$>niZp4X#Ct%$R$6 zcoxdfO6>T973QXR9}kA@HYJOF?dP5tJme6zwxPI${bK`f zw*kaGX;qVvRkJ8TkF9d$Bx1R&Fbdl^(t32?)nG+!$||Uf`8gNx*~e?d2O=hJ7wkg2 z__U(;VEb zg97U+GS}8*s-<5!%L-WrgFPeMvAV7@LiqfX%=-9Pp2Vu0J}+iBJuRG=6}imA-|~+iCIUV!w%V*M4~*3)KQGoG8BuA~+f&x`~U9 zvv7jd3E3Mq@Ut}@54H+BwcOH2R}U|W^H>5P*a^~Tw+Y4MU>Xg`5{V_TsKlM}w{QlW zfi@(>3ZqFcSQfP=Iv&;c;|7$8(B;0XT$6mF4NLIWYfB}GDY8GCJ@|+f)PseYdnxy2 ze*IBQyF-i+IAu*&xxE0DdhC8eF!rgm!6&Z2Z0EF%t2lHjvto2DO&XuW)MYX{s0ByO zBdKg*pHQ$$5fj?GqnxCKRhE(Ny!2t%@-p>C#Gjvytpb(WjJ0*NNn00tUq&^vqd1VP zT_zv|%7kLS)PjFbsmFfwNP{96lI9#Ww0M_Rl78u&?NMw;;r0*(Vq0kFF)E_JsR>J= zq+hU7y65-{!y5Ar->+HjX}MnI@OTpzt0w6Uw{2Zn-CZ*7N z!pF33i-$Tn99pB;1jFKkLGd|4d))KC~7(vC*YA5p3W_i1GL*iZ7XI z8-7T_=|`GZ_XWWm9g!xkVqe>v&*P5gEX-`(Si@GY^(?o2F3qvS#+0TSRYxd($O z^j@9NNB-$2)%-3Q2;m5S=od5vxngNhyr7_V!B8-NhHj*|sMe;f!Ait9`Wox2?Q)4j zrNHrGm4Fjp1)&CsHYT&}?LrNT2+X6meJ$jE#-DnF{G+dQM=+0ZEJC>Gs? z>nmXs>-aF@VV8mOa4EjJ9Z1AwTj@u>U$Ok?#fGo6H#HwAcVwaBJ;pxI`i z)|ry?1(&^fu@3@mXRDb7zbtKFqA(^rl{cKm>rkQ5VSnxY!F{kLGWeJ={1aS1<0wn7 z<~K=|l|aT(v_1a&{LxBUa739|IduUJ6S;p&CoQW9( z6oh+0#qc8@8dE!>@i~`J&BH2@`sDfpe^4cQ3q{Xm;GIcdZ76@ir8ifvy6Qhvvd@>; zy7Y|m6|PG%y-Yqm)cW8ZuiWsL4HP522|L4F3zUWoJn7U@*{{(7f{we(TaYC-|JCl0OHrq!orjkDlC>=9mKvhq@$=Cj zwo%AX6@M`wYG*rNC_9m+clZ5iMrP}!7O3e22sbzZ{<=pkm1k$4d+UWljmfC7P_#9f zyH;_hn5Q8@Q;f@xVKiXtIn)O99xuBQf zJ!u+UcfguuJGHPo zIJrmdrL*IC3#)~@x&q{;Q0iK7^cSOflE(pd$r|-cS4z5cXEKVzOV)R)mMO)4Q}r#$ zzBsk%nnlDJ&cbzUd2aN4 z(cd_2fZX6mb8l5wl?MA8$0^}5=AFYKvV<=DEnQd&+uHqAl0uVeP*DXB`pr)dWb$c@ zzbT9@@I=1m*Gf*Psuzy_vg8u!?DRTUmFCmv)P0y324=F#0mhEFSCo#``46|ODcnwu z;1b;0oso*B8$H|7!EzSA>|y^4vfKOg19ftd5q~wC@K&2tyBxkto-R;qt8YGLVoY+- z1+}4v%RenminRlB$&2j@=(mDlOjvI&s(ie43xKZPsSSqTN42uh;@QX~Vj-qn{Qnu?!)7)-Ub%SjFK~o<^Ir2sg>Q)n3jMu z!<4XCU5a-=5QB9lQKl7+4VAs)Rh?*=WC9q~>kSL{Y0--z>CLr0egE(~zYFb8seK>X zoo5@S4czy`&`g3g*S4Cv$Jk&4z6Cy&K(oa_pO!9munl$>aFtpPEmFt8vmQvSeouF3 z)g-SOKrO>-#HSRm(E=NjY14p{X5!X5ZujBrxNwqjpQ9F%#y|fZLpC^&DV>PoJrXk} zF!8m(m1{d`P|lQ=c`!Is$q{{uVx1=aRNe4Dlt6Cf*7W9w`Re{-wRl42H#Zx+ww-zv zlYF5hDw#@v{=VLLYceAFRLGeyi(bF2UA^Gz z0HZ~<1(J`=4HKd15j+9yoP=>yjk7DSMp7Qp=;ndb~GVfBf*g6DR5O_qZfWfl21t z57~ioug0OfX-e#RH&)!xjbqwRbPS#$dvSv(tFk&%Y2^Ja)k+gF7$xt=rkpZ5E)!J* zBKc2`j!>koTBU7mbg4{I-l+A922{3;H-1iaIZoFxJn!v6r#y&)f0UEF;`zLw<|I)I zHW-y4!E!8T&h0DXjW;haD5AYc|3HekR-25v!nY46j?7$gz1gj-*Z)s855zA@`G5aik{I3DyrDWN#4dzZY{vV$n!(Q? zI0Fn!|I@(O>skL5a8yVLsUsLy^MyG$*Z(~7zfO2vJNmqNZrZjsfECnHco=TK{jWL- za`Z5t!|v_2{|-a)XF-Ainy11O_y2v{*2pZRMAHsY#6LU(`F$-KV1dg)y#&wLe^*)< zAdL*xuXzaJ|Go(kBoz36SbOWBxPpFL6b}Rl8a!yQ;10pvLm&wRcXwxSf(3U7?iMWA zV1tLj87vUoJ-GYZ^WA&Sxwl@``|H)NN~Wl!>Dk@8clTQBw^qCJmyN9ds~be{LWaM^ zQOI%sXA?j~29S!O_eZew|NMQieLx|D_xR)~%&-%H8Yp=S1d~~@0C=7wHlT-P_sIR= z?fhO*t&QJCEfI3NANFnd>cfT`;`8*vS=-PCmr33il3mRWtaU?p4FZtzz5Mgm{d3#H zG1rsvKLDV~iN1#$^T0!e+W_Hj(hA&{9WZpyEQqK9PO{~Mm-v5ti(L?!=@=kD-E|x~^r%{cQx3QHfNIues5y!Z1V}X( z0hg6^IDQV>nGOJKotKnYsy4v@KvK{zeD(x%XHJuJK0#qWOcG}~R;=@89n%wF&YMXs zesr_JGZxak3?^L~jA6;Bnw&9tB;JT2*iqU_g$5f@>E*H6L9=CjtQ6xlgSE zk1c=+{337$+TmaEbrtyctC!(ZeY4U_T{rIkUG{MQ1mNf90zh==Z4NxhF~hXJRUE*G zmeA>4yrVvN#N*D61B5m4suQmLcFSP8k`1SE_GvZkm0@%VG6eHgMe!XgC&DvP7* z;n=+7SHP9}YmD>E`S?UT-FrCr1Gs@40n#N%5Sq(>Fn^%jp_gXhdl@_{!U68cvuK;z zMN+mwsc{0}nD@6PWnVWcvwPv-yszi~GGZ#S{lCHak4S)XcQ!eY?x74U`wehqlvhV4 zfUfGRagR+x=b1XZ_w~rLwbcAN=4}5G%p3!QdmcvmPzPj*)0gGC3^6aIXc_E<0Zug~ zLvug5t85<4kWP!}xW>=yRV!UU+FsN^FAIkwJ&e3?r7Qx(aZbV_3d)ust*!F87gc4G z@G=H~JL(;&{kua#V2Zg0powHwSWJH!gt#q+wg$uPok!afC8!JAHKgo%LLTx zivVS^&EC38YxqIt5SXL|`w|F8@cfY;A@1$}s&znaltgs3{MUoHBa;w0gOO#q#@<+% z+=J_QF&f7eE-?o{_5ZLJPYk?NV@VDS(Hcs|u>$cdP7w{h3bcX8OLmj)0Zjf%LU&>{ z?hH4s;LF|Q!yh7ZYa?sMREzbgHo{fy5bo_>k)Dx7t|ea52A;0dqUxHxov=ZD<^XkBQWPX z+5m)f364v`BQ1Pv^UmQxCTz98@&9A42KW8Q1k9Qf-*aL&w*j<7QXLRJFj-3^!-2{a z1^CVniUPF;5d}ZY5*2-`Q9*i0VCXB+i;r9HNKlbVe zl&%37$>_J>En_+c52={o>b8nYXG@>b1O)gm8L8HZMj zEfBgN5_!p*@7x#z=c0#0&tl)f#7UYl6>RimA!TaT-2p=3wEh+OLOGEuvX$pM8R8CN+0PoRDrRCIM9z)0T!g#TU~ zsIKtSXZ0pT%-8Q3!=;S&0_uY9MG&zvSP>nBr6b0G5)6mX*P2f71RSkOJIoJ!e?CV@ zq7-(!q5lO6U>1#keI&N%C6V4UjUE9Y@FRdqxLyv9mPVoO@+}iybn3l5016_ysnq#L zkwEJJ-({wn#K{~T>SW2jnne7P>C+SbGT-^?7V?ZaP+@VUl<3X$3OcHpjT-$W8C#B7 z9nmSSd!fcqJeN~>sjj*Ha68-74PO1T%xNUbImQ{QzD@+EO`HCjMBO%ilgkr2ljn4K zn}sXJ2JRCZqd7O9NS>2uDR}bYVK%BX$NyM z!qG3V0LJ-mGf^r`;=){H+(sYSCk*{oTk;~ zLA~T4lw;F>U9)Y6;LH_DHkPSrV|70_OmFOE$(k6^tG_wdR9>ryR8^KD+yj3s=J9T& z4F||I5)`r}1q!r^F*8&JtT(=!2bktB zP!V_v+#=pfem8N0s1u?(Uj74o;H*_=les7fd10o4>z7^eGU9|)Cd0VWUEUTXu`<-u zU!ju1Z$nJ8@Py(EpyXkSA3K=zqbX5nBNJ~6-7*oqTuC$#ped+#jI<1NUJ0^9r>@4a z+!985$ry6%%hj|tB!wh6$q9^1B2!{RKRnF;0hLN3{%l?0GmWfA|Gdt}@OT?yEC({E zQKp=lyV1y-u>}^#1!Ol7Leaal`?o=r@S=JyCYqJqrznZ>KKo60oL~O-X)vMHiAI@$d|MB2pv6?op?J3XB@Pc;7wl-j4A%Ryg*i){yo<+jS_ZTa-+ zn#_Mplma{QZ9CK)-p)$8y51o*H{v=X?Oq}Q7s5dHRmaT8gg+K3E>^Kj#BGw?BVLq# zp_E8(4<2R5s3zH2W7mA3s#NQH7E`KYPInJgz>Z_c=tr3(dWaSxGso2uq6_k5AUa0= zB~2I!?V*Q8$$0%sx2m@~B2>(7C{kntg25Pgzh$hx$Kt(4#afU{qtFKv?lo<9AsbNzi$*0OJK|n6R2`r`AYfDwr%C8k4{-v= z74f_8obP+X8yMC8w5h}b|39G%F2F{0fi_O}%xu7#rU1!^lbfNy*&Iw|Lssdf9@_Dz zf$xI(lRy1=eV~aA%HMVDAZ{FUO%NW%6jm9YmCfIsG=El;ZKWR8h;f^Xl zhg|m_@V*btnQ$BzaJA=O3NigY`)raYPh$D}it%1$86(G_?Bwq&B_8fNT^3LIobW1D z!x?EBsoqpnv^O%*>VcBMjM7C>cR-ZEZzx!MTTho^x{v7_X;qr(!mk8LT?bgPQA)7M zF|(ztVAJ(bPFlDA9C&D&g=gm(w(J);r}6o|*Fh4GPHrSpXorH+@^=Ux!FJZ`dLzvd z47vg%lo26122M*<$#00Ly{H?E2G1*?`#W;myNl&EA6Sl%>#N2b%aXQ=iVDptokoqS zqim1XW<>>J#QhGD_`4{Po+%HZxCJ7_Wn<1ey5IDKHQ=DsQ@6c5$nZ*eTMLy|50&(8 z;w7PJevy`;HmDQuqKRwi9Jn2tH%J!Ix9>1Gyv2+mb~X!%ct59+9Be22X+KJDlv~sY z&o7kSPlU)|NDsDOQxlUM+Br2-aAQIAp>+G+)+Q@ddz(fuSYb2#MPgMfXg>WCt8XCK z$nFpb&>5DR@q<|iYbxj$*_CE{*i;l}l{y0wk47&w?vlHCRqX--YmO}zQEnM@tc`!$ zm3`y~QAjEWo~(x@jeL8{5Rv5C?;7;S4jNRp>SN7U@@w<0X;da+o7$;(GwA)YYYjxM z4NQ8ob=fJC^a)WNRnFGf`rlbOug%v%;5dx{ECXwvgy)8}-TMgo%2bgzL$mbkQG!&` zrLq?S71-(wj$U`?Ak3Cg4GltKPR;Ojr5&(EmoefDAwhjwksuN)MZqpHc^!nH0=eb9ofnu-F_?=M!HV z>Ezqg0EhbTCMg4>-&I-^=Doj-f0FV9)35apY@U*S@~m(|e=@bQWI-BLGUh3d+vEpm zc;}>_Dr{*4bU&G;QpSBL1px?k9`uIn3FdlEfnmu}#JPz~TQ#_%Je?>%!kN~#{^t@z z9pajCuSkxMjGR*?qby4 zAZHJX_?|9c3W!@)uiS0$aOFa051DUdpTrnpVMy0#R9Re2MV?6L$(^-w5j}mD^b)t_ zSX=W5=7~HZ*xsgans9wdskBLEyVn%E+|c1Qdt8*J7{fBGu-+4_Yy!QcF#5TBD*4E;$4I zykgi24y@7^4TKF_n$lfXB)E=$*(;eit2YAFM4 zDf^PM-_EM0WY1L>Bp+v$gQ~ohiS-on6*h@mx*Ejf5yO}={<#Y)EFK7> zrA2FJb1BYjx%wTZnctZd;jTj}fr{K;d?QTQxmgNt`+5AlQtVT9q^%ispq!@h7xV?G z_V49&&(}t2aybV1Rh2+->7eeZvO~jj@@u$QO?JMUV(t=M?`*$;?1*fx_(>2>gEih6dYh4fQ1T5G zP9oP0OkP?t;+h09AVnp;^-E{UD_Xh$E4jfSLlFL3rCrwicIgkDdtZn= z(_DRWn-Pm4!x`sl}P`X z7UV1sG+s7oh@9qs4|DXWN+#aP)>X$|sUR@kdlyotddUkR^522V%B)+dfF4wU5P?;1ZcY3l5l47{KjMEaBkS;Wk0;b-oO z!C5tFx0qrqLS&e&FR4|Mv`o$C8}5!|OGcvFb_OG89-0+8(ur5tE?fBKX0T3GZg?3~ z+iB!q+Or{yNf#K{1`XR>b>Hamsub#X ziZ8wADK01M+tXCZfrm>=DQ)uw_FnyQZ+}t_c_eWTY41u@a;fxft7G(m`O}>fxvmB4 zlHFn6f@G_T$U!oM#R0 z?qGq&jRze2tSmr)FlIw%-6=Ba&#Mo=8O5A+8n=6?o}66M+7^r9{@W!py2F{r-m`5w zivc&iRN$o?00$Wb%zNkm0gA^_s;851@V^)0H zwRw`O`tlsE@^tMNUakdQ6jF(5&2o58L}dUW&c#B&?sCW5e?)qzk$Zct);;%bx)gk1 zY*6TK7qE0UlYiMv^vF|v={c;sTsH@}rDqsEou%o!Ss2u8&Hp=-%pJ*!I4N)Fu~sYI zSf&k&nLv#5Dn1G2@XZGS|6`KhbS-y_)l%C!=~M3WZ08f-r9Y&HqEyqMdo<2>lWufE zo@zi*`f_QlP8*knv219A|hb!zO&jR>+94;?&ht3BHf_=uak zP&FH`Ykap@s(!V>{Em301P^Fk?xu1(@Muh}avuL#9xqqVrXXP!cbRke%xTW$Tvl3U zS1bWJXZ5$h_%)65xdVE50g9{&gUg@8(e*93l{lkCUDqAg?cgy3pTj@#;!~@DD#vce z0zl3UEV5L6EE^{oyp&(*Mdr`;Zr{krCtoyVuAOlSW*QN4l=zXPd%G%P#KAio!md4gl zQ1Ln&02FISVF6F)+h_vKk_%&{VwdI1SF7nQ>TAGo`3Z~HLoJ^kVj>twS%MiU)1IF0 zW;?GYH7;Hn_(2ewI$AWEe4#C!b>eRv|KA9M-cd8ycX`2!G(u1>iA-6~>T zps%wd+2))~Y%in!lOjMcY)~zLEe8<}M>3)s<~*nUH&s_2>##m-H*AKV`H#h10`69% zY@Ur#&lWL4k1Cm+<7t)61G4Os`*qe{8<&f)`JCUx(z6Ut`LIcc6X0eIsXV6D^$U5! z5-nM_Qfj?w+#mTOvP3s&aIE2uSKBQxKZoZ2=lxPm%S4Pr1MiUlWDR>% zUi@xi+gi;>XM=*r;BjBe(d*@^t>L{+J-}-;LPKnO_A_Q77Uwtp;{JtI%{2j!2liq_ z$Lw7Qpvk11hD!FnW&mggawDJu8dWW)F^-F1&^Avls65*FBvK1fAOzF`qz#3nsELh{eO9kEO$3gcSY*KE?+cco{{ zy}}57j9VoyCeR5JM*=9Je0kma&BbwJm(rhl&djV_zXM}ZRVHaSG94CAiHwU zZcKw;ptGc0Naa`&ChsC(p_0)rc2zri=ooMh&M2%(66iRM8Kz8Pyq;<5Xe0Z%UyU_;!0m9U*Y>G;ocHGnw{bgsT#K7q;9jX0K4l-dm4a>3#7`3s z^IwRpB92;raLrI0Wn&TWfZ#O)Uu_8jEJ}-3Z5!FgzLut9bypXmj8r#WFTj3t8QwtW z#{i{%uucnKx4@P}&eLIbO{r&kW?7&a3&J0*Fz=cA)YEC!WtGe& zI?{KR(GcIO`rLN6djN&AHMnk_ZNyt8G}wBlWlagJ<^pNWzv(rmA&2&kw$>*l0`28& z9DA-g=UJsONTp}5YrOhAqIcfUwrDi`Q@Bkc4kGTn={qdHK;XsUyh!G1Mv4QCn5K$W z_?EG%ko(CCHE$l(_+M6BUEPj(b`Ygi>(yQDB~_xP*b@}&3Bf>P#U=JsNiSyPwx?QY zk{rBx$=UxL2;WYobxiLIb02@H@%}SCa2J1@cg9M z%cc859&R;|(ZKw_Lgc3c7`y*zRB3s4fAxsW3Ve3h`>fo}G^Oqt-$M3tuNt2Dz7Tb@ z1Sc$oylz^iHoMY0eEQG+lag^`T_dgabA=sX19uOVFm4 znmR747DQc@Ztqu~{VP6lVfINW)aHnuZ%{oqV=r0Y(_4sdF{@d(zafACDrWF9FH zIU)51N3?I0?qb1df8F!GR_DC;Ty%riPZD&xrH5?+M}lq+kJ_k4zW`uJ>{EWq(jr}k zFpA{Qc`VqIBQ4Nww~#RA`(_{LmC|4T@F%4t!jn{V=B7j^S%{kle=HE}AEWP$;}(GS ziyk>wIWs&*uOEWbTW;5hJOAn(xun^~a5WTkEw(*f)~sZ0Q0!Q#JE_in+T4y*e}Hc# zx-p&jpNAL`gZj`rt{Q8W^tQRvtSh*NF#1VsL8&gXIOi@;=eeD1Iec0!`*!I%yCQs0 zQcA9B#TH8dBFZTm2_zUdN(?aF@R z`POpm?fm{h=E{SG>ulR{<7)`5gvbZ`UM{196cheZs}};U(22DwSAV;dH(skj_Jo|b z%!K&8C?9pWd_k~nb%%n+g%=e;rgwk{#C;7$9bCgS1H3a~9{%m)l4v)`SgLYZq~9E? zK)x1OIDWg*y1ht_Yg)X&9Ser>>v~xdoM+HV2V0w<6WZd*)@DdJ z>=v;k;#f*})Lt*-{nqKd-UcN9yB}2ZpBxf9Xef&NPTPwE(;=9ldQuX<;|Tg^cC!8j z8qej*N+PuRdFCZ)pG5aHwC|T7z-s9{i2;3D;1`l3N)_B()LZrQla-r%GlK{kH4Z}N zq>6rN+T<|a|CMAV>zqV%+ki6&i*`robF`@2`iQ|r0kM5B=Df5DrUdlrTS7Yqn2Djyj^&?=948r$XsoPFu_56d550N#E(*E&FUYPdn=m~t| zeckRiMj0b->&K&6>*XNmVFD+-x(KXAz_^gFF+<5R@qiI`96} zEHjZwjf*_)sX1a7=RxUEf6xy_8ND7fe)#%UTMz3MwT5SmtzMxhV-^U4!YL_R3)y&c zY?WfNH>%wrf)#~J&=ZO`U{o)`yns+LLAhqcCHSK95gnYld{HtAOtdR=Q_^`3<1=6v zQKKKfO9&eil>Mstk_acPiJH~rm*_iVqi7eqTFU@MzuYyzJ>qqxfB}Y^dSLV^un@VDYoCU(BPt_02a>daok!SSyjXqV z%Ql3DZ*4M-9VELxU_|mh2VcNc?TNOvRgO-*h(!9#SP(({eh#M7_mksQKd{GKqi-ot zZTNk>o5h#YF{Ho&GL7L@U?Ll`M|Vu5lMbT5L!5-QAGy~Q_n$OzMK&j^gNt8g6HH{w zNRn7T4T$M};CeSKpA4U-v-)~1q8XmXo(vdKap^Rw!rZl%ok={Ka)OoSjtWm zEKZZpbL77w;pZCB)Ab5@R+5~?`8tA7oy?~rFVrLu8Bh?lB@zb3`rJj%`@)I|9S)9s7#u3i-beln3kVV4kTu`$DBSRBOubuSh>c)T7p36vW~M@REgPIRNh4S^nI z^3@ZNHOMXaizMYUMq2+%2L?9|&i-sY2SX0)J?7xz?vTY)XTW5aifON0L78Q(4j zAxEfV7umfIb=lKUd*y*qZF~lGKxcO&H<@b;T{nSqWu%bPZsFvsz5Ie$!cKVU8jDn9 z8uRmi-F|oTh$_bMzTCBG)CC`Kbxd}U`KSugVT#btec2f^F`~gt3WT#L=PzWq-El#v zjuFSj#yR&wS5=DUE~(!<_hUsZ4!B`k?+;@WLaj|FxgPYE8H4T85){{vXU#I%3}Q7_ zvY@-W8!JV;$&Z3@-3%EzWTZ>pEe6vM#qG8I9kuRT;R^5LJO92g3+GLl0(NzNP4X%3 zmywM!0dh60iCS_r;D~oM<<3y)J*j20h^~LjF!#zU*8ODRk|p#qP9=uMO5r_`iKa8L z;9A}fObp9E;+q^t(RV(XiIm%A8ZqT-8~fxW?*_v@-_##-eADcy^p{SHuJz?_U>SyH z^>W0sZRiR2XrmiGEs~&*`MEY~WZj?a7LLZZ?AzM%4cRp&>mr#`E#0OSv1Rm18={!8 z-&rNM474iddTE)_B-lji6s2mIqJOl&0?T%jQ1nmhGy4<5dMU4dfk`*Omuv!Ryo7Aq zp|YnIRufHQtEob2?VwZrLDz%@>G|DiRG6FjNrT7TZhYOigvkR7unh&1s`Ck>nR#@a z{VRpGaoZ)C<=y}K5F|2SChn4bks9DksWc!$7! zvfu`7(r?BjYA0psm3WPrlh32}3{p=thLkMyJU=8Q=RR;oB{uclUld<+nrL_WjNK>J zY``iy&Z@+KS5XsQ8RXP*Lfrv~OrT6|VDbF7eBI%BP>XXYFu{n|;DEw__me$Vx@HY~ zQ@S`;grzCSlDTziv_dgkv46bNvAWKje{aruiZ0oX$f%6@LLHcj;a#Ll6A{8@M-Ir^|9LfWGBdN>dzV$Sw%FohH z6rVg5R;KnTAT*>D$+uHwh0sy$x46!JLuUa2KQSAk(Qo+8x|RhXeH~L#wjv zga49@sr|b-C7FaPecer)z ztPw8#H1i(H-##knppd2=Qmq}@rL{74VvA8& z6sq%URKN|TRXIT_)W8?+#@;MY@R!ZBBQJ7vjXbWC%{>E>uPl6-A)8dbwAc7Qt^>dS z82E8FV}52KLz=A1xZQMMwsi}NHHD7=rQVPwqz`k5?H%v;ZyX1&M5%f+rRSsZ+5t~Y z_6mobRWhOaf7?hLb$oh5ZMCB>fHl}lv&{^Xl;Bs#K;EPTJ%_|hyX#mx+XFtn>{WV3 zo$BFWHzD@%w@Y?>#-SoA+kly)QJb+`LdtmFNcIltYUvjbUt&Z3PniqE-eXyNF24ts zUeLYa@Xidci`?2@2I^f>^Epj|FJwp%yc$WK#J4y@hO6BSKR5q81)A9j8A3>E5Gz>H zT3KYokQufM_Tm{4 z#Nb$#M|m9gUptgV8hXP{OA@VO3hXTq(z-sTsL?2`SIsD{x{^{yWG{IW@*^Yp**9W? zTz}d1l2?f_n^2BJ&#j0Wj<5E5uVSY$)B%&|T{LsM zrS%O5vc7o!{%J`%3I9922sH+opjY;mWvp3$D3^H+T)vG&ni_QIt2ug2%^ZKyIrb2z zJs7@fACTmC`7mgB_Ss)2OI4UUsY@B zbjS*XOhOdWJ45Fo*fgVmFB9ayStUBp2#h7}G!Ro{y%0q5ipb+P#Ika<*1@DT&yTx{ z{&2Ats`gDxq}5$n1cEq}C$JN7x2k(_L1c-Mg(%k|fOl>I2n+ zK##F}uJ7$uGc4BXm3BSk3Nf+GNm3G<+poWx^3ZM)!HG$UNeDG3UvhQB9W?euJVOge zgVIVX+hCTmw^7sTL&-sh+BdH3vJs@49i}e?KbU=O;cqqN;~yi=zR1V%EAw-<)36!% zachhB_oSvsf9Njugx1q;%_UkEfz(pp_daLzLHN#qN$hSu4EAbEmhpUS@1P@l(Y~Ul zhW)8LNvzF2c@`M|y3tE-e*mG~w$Cc=G_nJcLSjjXL_7$RnI=V+25SX@I{h?^T*bq( z3N-^ylKh(LcF=;~8A=JWyl&E2mffvN#S3w{KMexKt6U9+?x1iIH=WMAtp1ycCmV!$ zU9S_$mm!Rj$_Sh1_@LB$8b_xYk#cdj>XYvtr4xLQ9Cy1s+yz`Wu8lh}Cfs8wmF==| zoeRtGxAfr^&&B**!!oJp6A`L3i05(6f5Be5D7v8Zp$%7LFq0;-`u;(wI;M}T&c9^v zueM)wLTJ)Ft>+qNO#h&QZS3hE%g>$*V-J=UzkCAlW-Ist=IKp$7gL6a-6U$P8}w1w z!WwGP4M-~rYl_K;8r7_}L*amto`1N@|#ub=+W&ZW`lt&d#W|J1cGwQL6% z{jnmIt5P6beX_8oIaqW zOyj@#6gac;3l~nF(3n-m{7)P3Ppn}`e*|^0-q^DI58(s6W z&42Qw^ZyI!aeDc13kz@vi1)i8XtaQTjnof_;+v06osU({l|b*SW9q3MR$q*cI(XD? z!_WE_T%R(@JEExf`+>8R1rU{By$qm790e_G9WjOv>%^mPj=lP~6986&NPK40KJW#F zlLU)n2Y_C}WR`Fel2ieYnCFpJ(|47cZKh5?K3@aov)26(Kmnolv+mc~HDpKB-q0Ux z^Qo(C`Ldet;5p#=I)J=0+xvcDr30Q%nyKcu|H&154zj9v_~q}zf4az-zLKn~b^>6U zrJ&0S!=;CZ9dX038Sg$%(nQRT6X`ALepG?ZK0f*GpiZDC!y=n-XOy)_|0ufUcR0Jb z&kvRhy||zxke*wzsY+W#9}i=elN8HJ$4wsxd!ZMUOsMJK_BRgbxN*0B)2Mkg>AB5C z0>Aj}pc+5b-FSEgUOtB=P40j_Wy8350Z>OojVCM}B0zcNHzfg)M(nLWUUI5@Z@W!gW50#Eo*{L1bKeL4X5c zSXR@`Y4W=OV09K*<$eb$kp{To_boum{lbe?#(CU%3xoE~;P~F(oeq5T1z7`ey%%y9 z<4}O_p1p#Bh{tChX^gV^DO^=tfhdRTSRPY6KF%>XZ8i#r>cQ3YGE7^tcgZ-gz8l?Pj#FqH@VvUIr9*t}lXMP*+`sfXI#9F#l4=+r*Rl1*= zk=|E%zs@G&Aev%&Tv21#TyV=8NRZB*EZ-=qh?e3PV?SGO>b33Jd9SY=R|m7+@e*() zUOpaE%aJ!U{mn6DM1P*{F`;ibpMmBiP#OSmS|wj>kGpj|yuR})t8tiH z;f3s`pIG0j>`u<+dY=^zc8wwe<8&1!0Lj1o+b=c)*;942VRw#DZs3&^^f_21$i0zq zh4X5nj341os(@#6@0*N%k!>#f^Z@jy9^#H)x4_fT`Priah;0Y06XgCqIYRo*zIh+x z=u0O%3jDdTeHs_wOJ4r*2Eda$S^xxh;%GE?M`TAk6$Z71Qzmm+z@*gi?hv7AUM2E6 zjWS%!>Cw&%%D*xBH4EA18wKXj7QI~C(3k2-k#)Q{D>(MuG%ED`r^f#e1b8lV!-(nK z0H(3R9Gn=|O(TyLeYH*P1m(%81pzQhgB|PkULn<^)p3ACO^%fg_A$AgE0f@itJb)4f zw>e5f0LbJ6e5(}B0TQmG1@Lc}N*!b*4Be~>j?&wtwZE{UjPuKB$^O&X0)jIiB6kyU z4z7JVZv`HFfUZsWUbn5-8=OXJ@oIIPr7W1Zx-_*dRW0Rs?Fg@={~V45%!*uGfzK^1 za8O$WU_9)nl|RrI(msTOONB!^5;s%2vKR4$r0kjXh7@1pq`%1;~ z{S>~M4l?|XFI1gsALQGY?NH6b8F2?VgTmJKznCk4pP9`9Sccc`SOf5XI|{h-w|>?_ z`N~_5Im4ZPmJai^u#Pb}&zQ9v$Q2`@4Hgjq(*9~_L<(d1a&Nm{SeS zP{REqXy=jC(M*3o;-Wwqfhu9*4g)K}v0Qj>zzMYfDRjV%RcHeMduq3hqO zJ^segC zR6iX$f7jE#l5n1A3fq-9KLX59fD;-Hln3Uv;?ZGA2Va_sXgTC^KPeoXd9QZ2_341%O1u`O!+5O7<6p@j2yd z#k3HrW6(1|IT~<}WxaUoYk{BiVBPjB1V{?6S>l(r8w$;PxF{80N)63V;bCQJ)?HjD ziV2kfQTm>ASAB`oRz@5h?^PhN0YXe{Vq_kbM_7qfBKr9k?55sXfBR;{n78%f_qf6m z&5Z^F(HeZ>dH5tFy#2dHrSQ+}BNx7-XWK%fN(^3M^W}L`?n6;ADuu~n$@7_&$Zp>W z1bAc4zEdz|)MHYWDn}92Rv>Arh^K!vwZS;F6g|-PN!O8jw-Jq}MP`XY);n@#iG_re z!(}N9Tg11*l5wRc(_;UN->bMR+N2{u2hrqkjD72Q zXlvLe)GstPLH7D4;f&Q7J=WYW>~f3Uvt>rX)Qsy)kYc7Et}K{Yh3;&JbDNOxAj#qg zBAqmqu=}oIHc5%00dMoCtL57nfxeqfM)4Ne4L~+vJFEp4Cg_I#%=*Pn)1or7hsy30 z1b!O7{0RP(^B-Qy`g^B|;9kGCl$I$n)Y|WPS65BA1sH2i{^AwjjX|^nxZX9U_!!>w5R)lh(Z0(XRP1V@)*TO4?~RXj&bB0x zcpBl$NZ`PF^J)&RIRMWq?eO>|phj2vET898(K*;>#sSsq9@Z4wA?ky;?YEvVAbaS%zfCC!-bbl- zb0xf#@^rcr10)~dSIv!aImE5wp{+|zv-R7eINGzj5-%n>wv#?|6LXnChf*32zgE-K zg&E-G(K%`pRzKMzt{RM2)gmq|!Z9a&HyoiI*_7xRa(c`|2 z_;{N2SZ?W@5~i1OOoIC=um#}FsOH~^=d43GZ5_g|;&w2CFwd(t0RmKxCT z!y}C4jJcA7S^y~djZSGdc%%qqnPvTnmlLhAv7e=}*p!0M4r5zPuGQtkbUZNG)N>Zr zgM$5Gz`%o>06V(UE1eKpDCw3%&IsVRHbER4f^Lifr8lu(EPkkc6;p*NZ9e|jqwP^; zBON}0t9p?wsE_uFGU}#i^Zn9s2O(&) zQaks2Af@h6(e^ugbdu%_m3M~*gyAxH83D!+|Lth`$Bx_jl46^A(!5^OS(RoRLF)V9 zV3$}vmY2VoYV$(KgM9Xly1rg_$Cv;l238Q84y7b@m_ArJ<&z9}Uc#klJ_`F8JqMsI zST~uXXl`FxmmUkE7|w`L|6L{hKAU_014>)^(aSKfw0kw=Jf+&LSfq6#;bT{zh&iQH zAQu992sbCkmL#B#ks|m_?fSt8@gwc*r2%m{O0@q*RH^d! z)1%T+Ve^s?SUiVcVfoSm$9-flolnFeE0$H^&lT;b0kN+sOn#Ibt0ccSi1eh)SO&yX zhR_{~--3zO`s~=as_(Yq_?a)*&7Ld=^J))0?$bT=!Ebt1{J8l9!_lVZ(>-uFl3i87 z@mqmw7@F^M?diy$x`o2hxzCNnB%nhQJlDm>Vb8QXBjUJoW(e`680bt*lq8lOBCQy= zv=-n#QVXmLV70ia(;t#}XU?2sNs>gLRqzK%y&hj?5kVfq>}e;Z9n{elc7ifLhH33- z0J*!{`kWCkF$_>Y7&_zb)V|XOm4yMN`j~o50%3$(a^+kvLl$JqNNhxM-`<2KC_!2m zY)O{CjhGD?V{V*&xXZK6I<0HX8|jHO*=HI`2lEy*ioiz9(Y9yw2}Tlmek#6c^DpP76`DT=&tN zL?3J66k`dDG~8ZZmpsRV@22sGHZX2Tkd+znctr>ox0OnpIhFKSq1Bz!2hxs60>PqD zhwP)jOE{u*!dmZh_v&kEqLJSS-3H=?dXDC{9B*`vm$(g0#aU5hPlm!@!uAOY8%0*8 z*XblB`HCR%4VtL?JC=hnpJjbR4@QY?3(6Lab#7biln?~x^`>nd@k zjSDLUz7lLiyCiv<9K2l!t^CIsg_?3cNrzcW`_)zS@CRFZUF`5|_4Nu3hBP;^jB zjF;5_V$FUYu)EFn{%AGVtv4Ho9H#oIyr-J@7fx)aGUu`Lnq~P zQ&zX;6zyAQ_0v2G2EGq?y3Y_)MmSq^<7On2Z*K;@{mdplh-A`GUU>91kJsx{fhDa= z#o&#pbLQvVT7|N|4s{A8L8pVcr+ofY-y4ee(mT-A=U%P7EgEi1HYNIX*(Eqkt9(lv zhsC9irE4}fIWiOO&ke&;QOvN#Hofc5qy@-{xt~!4-K&?f$9DOgN;{!~Odx-(Sdc|= zzYID$x9=H%RMfG~LMk6sbckA{}W)(w$R)#zHfICSozzc70q2J$@Z81a; z$s216(B}E6&&i-n`qQ!!y3PijSb#80&BlLt42#{3F`i;QFsxB@?Az9`W|r&@dHe0K zq{He&8#uPYe1;@;nGErgZ=u!nt7%YeFP@dxpBPtNam-lSKX){;BpAF5)Z-HJrQJzD z1c7~u{+*IM?fgw1?`ww$Y(s>PO#xUE#^TdoN#iwf09_j0`tV-Ci7Hs@n~2%xbfPJH z9uX6^x8kCYRo5Focd}>@Ofj4xuT5*;;%`!J$$`$tQ((4V>AB?u)2Jawhp!D_1qk&) zcEw{;4wdeXUs7_i%A&RU>D|-f4|Q_$^X%>lKAQXOfO#d;d*xTX7pxm;TCz<6j)yZ5_9d|f)Ws4d7+Muqc#wySAM0ml-z8D9aRuP2E{hratJwB|Q z6ysqu_CDgAMExQHumn8%W9SU13#?42F7mX<5;ym5ClpOaoc;zUwDut1PAi1uZ-$cF z??!Z2Cs*u59a2)W6m03@R%s19jG5^$R*w< z+XbT>n%ua(a{A|x4i^fLwh0_5&#^Nmu)bw%)s5@h_@u@-dOschUO?-eR*(2H7RPM- zrDh3g(E^D=vAUhU$D1ZDFWIrwN3O4^oJ!QCqcr!lx`!=sO}pu52YAs6j$Ualf|s** z%?t@V!FAZb+fdCX^ITuTOx_JIMAAJeevt8XG{mi=B_(npF-qt(|Iq}xps!8JC+rp> zG{@sv5Dy7yiX*8Z;xGE<{_ZnC`* zR+a-*VX8LDA+YZ&ngmzJsO~SXG{8btj2|Lef^uC%wsZq#vWbaEEdL+Y-a4qQ_}kYm z4#g>j;KiZ1O9QmUO0iNZxN9L$Jh;2NL-7hy+#Q0u6^EjQ1_HtL-RZgaob!ACzQYXD zA=B(6`ZR5KlrGpsNxmOa~`|4oq6P-Z4QckZ40~& z(ZIH*6n|p%gvpk^w$rLAvhzgDZ6-%&7u&kBdFndb}#*D94voSS{L282x~ zJDxZ~=YArZWBGMc%f3l6%I�y$+k`CZWD+*`7{@^56{rxI4nG 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

s492ubt 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 literal 0 HcmV?d00001 diff --git a/chat-agent-sample/extension.js b/chat-agent-sample/extension.js new file mode 100644 index 00000000..410fc217 --- /dev/null +++ b/chat-agent-sample/extension.js @@ -0,0 +1,105 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deactivate = exports.activate = void 0; +const vscode = __importStar(require("vscode")); +const CAT_SYSTEM_PROMPT = 'You are a cat! Your job is to explain computer science concepts in a manner of a cat.'; +const MEOW_COMMAND_ID = 'cat.meow'; +function activate(context) { + const teachResult = { /* you can return anything in your result object */}; + const playResult = { /* you can return anything in your result object */}; + // Define a Cat chat agent handler. + const handler = async (request, context, progress, token) => { + // To talk to an LLM in your slash command handler implementation, your + // extension can use VS Code's `requestChatAccess` API to access the Copilot API. + // The pre-release of the GitHub Copilot Chat extension implements this provider. + if (request.slashCommand?.name == 'teach') { + const access = await vscode.chat.requestChatAccess('copilot'); + const topics = ["linked list", "recursion", "stack", "queue", "pointers"]; + const topic = topics[Math.floor(Math.random() * topics.length)]; + const messages = [ + { + role: vscode.ChatMessageRole.System, + content: CAT_SYSTEM_PROMPT + }, + { + role: vscode.ChatMessageRole.User, + content: topic + }, + ]; + const request = access.makeRequest(messages, {}, token); + for await (const fragment of request.response) { + const incomingText = fragment.replace('[RESPONSE END]', ''); + progress.report({ content: incomingText }); + } + return teachResult; + } + else if (request.slashCommand?.name == 'play') { + const access = await vscode.chat.requestChatAccess('copilot'); + return playResult; + } + }; + // Agents appear as top-level options in the chat input + // when you type `@`, and can contribute sub-commands in the chat input + // that appear when you type `/`. + const agent = vscode.chat.createChatAgent('cat', handler); + agent.iconPath = vscode.Uri.joinPath(context.extensionUri, 'cat.jpeg'); + agent.description = vscode.l10n.t('Meow! What can I help you with?'); + agent.fullName = vscode.l10n.t('Cat'); + agent.slashCommandProvider = { + provideSlashCommands(token) { + return [ + { name: 'teach', description: 'Explain a computer science concept in purfect way of a cat' }, + { name: 'play', description: 'Do whatever you want, you are a cat after all' } + ]; + } + }; + agent.followupProvider = { + provideFollowups(result, token) { + if (result === teachResult) { + return [{ + commandId: MEOW_COMMAND_ID, + message: '@cat thank you', + title: vscode.l10n.t('Meow!') + }]; + } + else if (result === playResult) { + return [{ + message: '@teams /examples Show me more project examples', + title: vscode.l10n.t('Show Examples') + }]; + } + } + }; + context.subscriptions.push(agent, + // Register the command handler for the /meow followup + vscode.commands.registerCommand(MEOW_COMMAND_ID, async () => { + vscode.window.showInformationMessage('Meow!'); + })); +} +exports.activate = activate; +function deactivate() { } +exports.deactivate = deactivate; +//# sourceMappingURL=extension.js.map \ No newline at end of file diff --git a/chat-agent-sample/extension.js.map b/chat-agent-sample/extension.js.map new file mode 100644 index 00000000..e2a0360e --- /dev/null +++ b/chat-agent-sample/extension.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extension.js","sourceRoot":"","sources":["src/extension.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/chat-agent-sample/package-lock.json b/chat-agent-sample/package-lock.json new file mode 100644 index 00000000..c8f79ed6 --- /dev/null +++ b/chat-agent-sample/package-lock.json @@ -0,0 +1,1617 @@ +{ + "name": "chat-agent-sample", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "chat-agent-sample", + "version": "0.1.0", + "devDependencies": { + "@types/node": "^20.5.9", + "@types/vscode": "1.82.0", + "eslint": "^7.22.0", + "tslint": "^6.1.3", + "typescript": "^4.0.3" + }, + "engines": { + "vscode": "^1.84.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", + "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/vscode": { + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.82.0.tgz", + "integrity": "sha512-VSHV+VnpF8DEm8LNrn8OJ8VuUNcBzN3tMvKrNpbhhfuVjFm82+6v44AbDhLvVFgCzn6vs94EJNTp7w8S6+Q1Rw==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true, + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/table/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tslint": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + }, + "peerDependencies": { + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" + } + }, + "node_modules/tslint/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslint/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/tslint/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslint/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/tslint/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/tslint/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tslint/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/tslint/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tslint/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslint/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/tslint/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/tslint/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "peerDependencies": { + "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/chat-agent-sample/package.json b/chat-agent-sample/package.json new file mode 100644 index 00000000..e25f4508 --- /dev/null +++ b/chat-agent-sample/package.json @@ -0,0 +1,42 @@ +{ + "name": "chat-agent-sample", + "publisher": "vscode-samples", + "displayName": "Copilot Chat Sample Agent", + "description": "Sample chat agent extension, a trusty cat that will help you with your code.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/vscode-extension-samples" + }, + "version": "0.1.0", + "engines": { + "vscode": "^1.84.0" + }, + "extensionDependencies": [ + "github.copilot-chat" + ], + "categories": [ + "Other" + ], + "activationEvents": [ + "onStartupFinished" + ], + "enabledApiProposals": [ + "chatAgents2", + "chatRequestAccess", + "interactive", + "readonlyMessage" + ], + "main": "./out/extension.js", + "scripts": { + "vscode:prepublish": "npm run compile", + "compile": "tsc -p ./", + "watch": "tsc -watch -p ./" + }, + "devDependencies": { + "@types/node": "^20.5.9", + "@types/vscode": "1.82.0", + "eslint": "^7.22.0", + "tslint": "^6.1.3", + "typescript": "^4.0.3" + } +} diff --git a/chat-agent-sample/src/extension.ts b/chat-agent-sample/src/extension.ts new file mode 100644 index 00000000..bbd2d0eb --- /dev/null +++ b/chat-agent-sample/src/extension.ts @@ -0,0 +1,95 @@ +import * as vscode from 'vscode'; + +const CAT_LEARN_SYSTEM_PROMPT = 'You are a cat! Your job is to explain computer science concepts in a funny manner of a cat. Always start your response by stating what concept you are explaining.'; +const CAT_PLAY_SYSTEM_PROMPT = 'You are a cat that wants to play! Reply in a helpful way for a coder, but with the hidden meaning that all you want to do is play.'; +const MEOW_COMMAND_ID = 'cat.meow'; + +export function activate(context: vscode.ExtensionContext) { + + const teachResult = { /* you can return anything in your result object */ }; + const playResult = { /* you can return anything in your result object */ }; + // Define a Cat chat agent handler. + const handler: vscode.ChatAgentHandler = async (request: vscode.ChatAgentRequest, context: vscode.ChatAgentContext, progress: vscode.Progress, token: vscode.CancellationToken) => { + // To talk to an LLM in your slash command handler implementation, your + // extension can use VS Code's `requestChatAccess` API to access the Copilot API. + // The pre-release of the GitHub Copilot Chat extension implements this provider. + if (request.slashCommand?.name == 'teach') { + const access = await vscode.chat.requestChatAccess('copilot'); + const topics = ["linked list", "recursion", "stack", "queue", "pointers"]; + const topic = topics[Math.floor(Math.random() * topics.length)]; + const messages = [ + { + role: vscode.ChatMessageRole.System, + content: CAT_LEARN_SYSTEM_PROMPT + }, + { + role: vscode.ChatMessageRole.User, + content: topic + }, + ]; + const request = access.makeRequest(messages, {}, token); + for await (const fragment of request.response) { + const incomingText = fragment.replace('[RESPONSE END]', ''); + progress.report({ content: incomingText }); + } + return teachResult; + } else if (request.slashCommand?.name == 'play') { + const access = await vscode.chat.requestChatAccess('copilot'); + const messages = [ + { + role: vscode.ChatMessageRole.System, + content: CAT_PLAY_SYSTEM_PROMPT + }, + ]; + const request = access.makeRequest(messages, {}, token); + for await (const fragment of request.response) { + const incomingText = fragment.replace('[RESPONSE END]', ''); + progress.report({ content: incomingText }); + } + return playResult; + } + }; + + // Agents appear as top-level options in the chat input + // when you type `@`, and can contribute sub-commands in the chat input + // that appear when you type `/`. + const agent = vscode.chat.createChatAgent('cat', handler); + agent.iconPath = vscode.Uri.joinPath(context.extensionUri, 'cat.jpeg'); + agent.description = vscode.l10n.t('Meow! What can I help you with?'); + agent.fullName = vscode.l10n.t('Cat'); + agent.slashCommandProvider = { + provideSlashCommands(token) { + return [ + { name: 'teach', description: 'Pick at random a computer science concept then explain it in purfect way of a cat' }, + { name: 'play', description: 'Do whatever you want, you are a cat after all' } + ]; + } + }; + + agent.followupProvider = { + provideFollowups(result, token) { + if (result === teachResult) { + return [{ + commandId: MEOW_COMMAND_ID, + message: '@cat thank you', + title: vscode.l10n.t('Meow!') + }]; + } else if (result === playResult) { + return [{ + message: '@cat let us play', + title: vscode.l10n.t('Play with the cat') + }]; + } + } + }; + + context.subscriptions.push( + agent, + // Register the command handler for the /meow followup + vscode.commands.registerCommand(MEOW_COMMAND_ID, async () => { + vscode.window.showInformationMessage('Meow!'); + }), + ); +} + +export function deactivate() { } diff --git a/chat-agent-sample/src/vscode.proposed.chat.d.ts b/chat-agent-sample/src/vscode.proposed.chat.d.ts new file mode 100644 index 00000000..8585cb31 --- /dev/null +++ b/chat-agent-sample/src/vscode.proposed.chat.d.ts @@ -0,0 +1,25 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +declare module 'vscode' { + + // ChatML + export enum ChatMessageRole { + System = 0, + User = 1, + Assistant = 2, + Function = 3, + } + + // ChatML + export class ChatMessage { + role: ChatMessageRole; + content: string; + name?: string; + + constructor(role: ChatMessageRole, content: string); + } + +} diff --git a/chat-agent-sample/src/vscode.proposed.chatAgents2.d.ts b/chat-agent-sample/src/vscode.proposed.chatAgents2.d.ts new file mode 100644 index 00000000..376ee957 --- /dev/null +++ b/chat-agent-sample/src/vscode.proposed.chatAgents2.d.ts @@ -0,0 +1,368 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +declare module 'vscode' { + + export interface ChatAgentContext { + /** + * All of the chat messages so far in the current chat session. + */ + history: ChatMessage[]; + } + + /** + * Represents an error result from a chat request. + */ + export interface ChatAgentErrorDetails { + /** + * An error message that is shown to the user. + */ + message: string; + + /** + * If partial markdown content was sent over the `progress` callback before the response terminated, then this flag + * can be set to true and it will be rendered with incomplete markdown features patched up. + * + * For example, if the response terminated after sending part of a triple-backtick code block, then the editor will + * render it as a complete code block. + */ + responseIsIncomplete?: boolean; + + /** + * If set to true, the response will be partly blurred out. + */ + responseIsFiltered?: boolean; + } + + /** + * The result of a chat request. + */ + export interface ChatAgentResult2 { + /** + * If the request resulted in an error, this property defines the error details. + */ + errorDetails?: ChatAgentErrorDetails; + } + + /** + * Represents the type of user feedback received. + */ + export enum ChatAgentResultFeedbackKind { + /** + * The user marked the result as helpful. + */ + Unhelpful = 0, + + /** + * The user marked the result as unhelpful. + */ + Helpful = 1, + } + + /** + * Represents user feedback for a result. + */ + export interface ChatAgentResult2Feedback { + /** + * This instance of ChatAgentResult2 is the same instance that was returned from the chat agent, + * and it can be extended with arbitrary properties if needed. + */ + readonly result: ChatAgentResult2; + + /** + * The kind of feedback that was received. + */ + readonly kind: ChatAgentResultFeedbackKind; + } + + export interface ChatAgentSlashCommand { + /** + * A short name by which this command is referred to in the UI, e.g. `fix` or + * `explain` for commands that fix an issue or explain code. + * + * **Note**: The name should be unique among the slash commands provided by this agent. + */ + readonly name: string; + + /** + * Human-readable description explaining what this command does. + */ + readonly description: string; + + /** + * When the user clicks this slash command in `/help`, this text will be submitted to this slash command + */ + readonly sampleRequest?: string; + + /** + * Whether executing the command puts the + * chat into a persistent mode, where the + * slash command is prepended to the chat input. + */ + readonly shouldRepopulate?: boolean; + /** + * Placeholder text to render in the chat input + * when the slash command has been repopulated. + * Has no effect if `shouldRepopulate` is `false`. + */ + readonly followupPlaceholder?: string; + } + + export interface ChatAgentSlashCommandProvider { + + /** + * Returns a list of slash commands that its agent is capable of handling. A slash command + * can be selected by the user and will then be passed to the {@link ChatAgentHandler handler} + * via the {@link ChatAgentRequest.slashCommand slashCommand} property. + * + * + * @param token A cancellation token. + * @returns A list of slash commands. The lack of a result can be signaled by returning `undefined`, `null`, or + * an empty array. + */ + provideSlashCommands(token: CancellationToken): ProviderResult; + } + + // TODO@API This should become a progress type, and use vscode.Command + // TODO@API what's the when-property for? how about not returning it in the first place? + export interface ChatAgentCommandFollowup { + commandId: string; + args?: any[]; + title: string; // supports codicon strings + when?: string; + } + + /** + * A followup question suggested by the model. + */ + export interface ChatAgentReplyFollowup { + /** + * The message to send to the chat. + */ + message: string; + + /** + * A tooltip to show when hovering over the followup. + */ + tooltip?: string; + + /** + * A title to show the user, when it is different than the message. + */ + title?: string; + } + + export type ChatAgentFollowup = ChatAgentCommandFollowup | ChatAgentReplyFollowup; + + /** + * Will be invoked once after each request to get suggested followup questions to show the user. The user can click the followup to send it to the chat. + */ + export interface FollowupProvider { + /** + * + * @param result The same instance of the result object that was returned by the chat agent, and it can be extended with arbitrary properties if needed. + * @param token A cancellation token. + */ + provideFollowups(result: ChatAgentResult2, token: CancellationToken): ProviderResult; + } + + export interface ChatAgent2 { + + /** + * The short name by which this agent is referred to in the UI, e.g `workspace`. + */ + readonly name: string; + + /** + * The full name of this agent. + */ + fullName: string; + + /** + * A human-readable description explaining what this agent does. + */ + description: string; + + /** + * Icon for the agent shown in UI. + */ + iconPath?: Uri | { + /** + * The icon path for the light theme. + */ + light: Uri; + /** + * The icon path for the dark theme. + */ + dark: Uri; + } | ThemeIcon; + + /** + * This provider will be called to retrieve the agent's slash commands. + */ + slashCommandProvider?: ChatAgentSlashCommandProvider; + + /** + * This provider will be called once after each request to retrieve suggested followup questions. + */ + followupProvider?: FollowupProvider; + + /** + * When the user clicks this agent in `/help`, this text will be submitted to this slash command + */ + sampleRequest?: string; + + /** + * An event that fires whenever feedback for a result is received, e.g. when a user up- or down-votes + * a result. + * + * The passed {@link ChatAgentResult2Feedback.result result} is guaranteed to be the same instance that was + * previously returned from this chat agent. + */ + onDidReceiveFeedback: Event; + + /** + * TODO@API explain what happens wrt to history, in-flight requests etc... + * Dispose this agent and free resources + */ + dispose(): void; + } + + export interface ChatAgentRequest { + + /** + * The prompt entered by the user. The {@link ChatAgent2.name name} of the agent or the {@link ChatAgentSlashCommand.name slash command} + * are not part of the prompt. + * + * @see {@link ChatAgentRequest.slashCommand} + */ + prompt: string; + + /** + * The {@link ChatAgentSlashCommand slash command} that was selected for this request. It is guaranteed that the passed slash + * command is an instance that was previously returned from the {@link ChatAgentSlashCommandProvider.provideSlashCommands slash command provider}. + */ + slashCommand?: ChatAgentSlashCommand; + + variables: Record; + } + + // TODO@API should these each be prefixed ChatAgentProgress*? + export type ChatAgentProgress = + | ChatAgentContent + | ChatAgentTask + | ChatAgentFileTree + | ChatAgentUsedContext + | ChatAgentContentReference + | ChatAgentInlineContentReference; + + /** + * Indicates a piece of content that was used by the chat agent while processing the request. Will be displayed to the user. + */ + export interface ChatAgentContentReference { + /** + * The resource that was referenced. + */ + reference: Uri | Location; + } + + /** + * A reference to a piece of content that will be rendered inline with the markdown content. + */ + export interface ChatAgentInlineContentReference { + /** + * The resource being referenced. + */ + inlineReference: Uri | Location; + + /** + * An alternate title for the resource. + */ + title?: string; + } + + /** + * A piece of the chat response's content. Will be merged with other progress pieces as needed, and rendered as markdown. + */ + export interface ChatAgentContent { + /** + * The content as a string of markdown source. + */ + content: string; + } + + /** + * Represents a piece of the chat response's content that is resolved asynchronously. It is rendered immediately with a placeholder, + * which is replaced once the full content is available. + */ + export interface ChatAgentTask { + /** + * The markdown string to be rendered immediately. + */ + placeholder: string; + + /** + * A Thenable resolving to the real content. The placeholder will be replaced with this content once it's available. + */ + resolvedContent: Thenable; + } + + /** + * Represents a tree, such as a file and directory structure, rendered in the chat response. + */ + export interface ChatAgentFileTree { + /** + * The root node of the tree. + */ + treeData: ChatAgentFileTreeData; + } + + /** + * Represents a node in a chat response tree. + */ + export interface ChatAgentFileTreeData { + /** + * A human-readable string describing this node. + */ + label: string; + + /** + * A Uri for this node, opened when it's clicked. + */ + uri: Uri; + + /** + * The children of this node. + */ + children?: ChatAgentFileTreeData[]; + } + + export interface ChatAgentDocumentContext { + uri: Uri; + version: number; + ranges: Range[]; + } + + /** + * Document references that should be used by the MappedEditsProvider. + */ + export interface ChatAgentUsedContext { + documents: ChatAgentDocumentContext[]; + } + + export type ChatAgentHandler = (request: ChatAgentRequest, context: ChatAgentContext, progress: Progress, token: CancellationToken) => ProviderResult; + + export namespace chat { + + /** + * Create a new {@link ChatAgent2 chat agent} instance. + * + * @param name Short name by which this agent is referred to in the UI + * @param handler The reply-handler of the agent. + * @returns A new chat agent + */ + export function createChatAgent(name: string, handler: ChatAgentHandler): ChatAgent2; + } +} diff --git a/chat-agent-sample/src/vscode.proposed.chatRequestAccess.d.ts b/chat-agent-sample/src/vscode.proposed.chatRequestAccess.d.ts new file mode 100644 index 00000000..230366ae --- /dev/null +++ b/chat-agent-sample/src/vscode.proposed.chatRequestAccess.d.ts @@ -0,0 +1,99 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +declare module 'vscode' { + + export interface ChatResponseStream { + + /** + * The response stream. + */ + readonly response: AsyncIterable; + + /** + * The variant of multiple responses. This is used to disambiguate between multiple + * response streams when having asked for multiple response options + */ + readonly option: number; + } + + export interface ChatRequest { + + /** + * The overall result of the request which represents failure or success + * but _not_ the actual response or responses + */ + result: Thenable; + + /** + * The _default response_ stream. This is the stream of the first response option + * receiving data. + * + * Usually there is only one response option and this stream is more convienient to use + * than the {@link onDidStartResponseStream `onDidStartResponseStream`} event. + */ + response: AsyncIterable; + + /** + * An event that fires whenever a new response option is available. The response + * itself is a stream of the actual response. + * + * *Note* that the first time this event fires, the {@link ChatResponseStream.response response stream} + * is the same as the {@link response `default response stream`}. + * + * *Note* that unless requested there is only one response option, so this event will only fire + * once. + */ + onDidStartResponseStream: Event; + + /** + * Cancel this request. + */ + // TODO@API remove this? We pass a token to makeRequest call already + cancel(): void; + } + + /** + * Represents access to using a chat provider (LLM). Access is granted and temporary, usually only valid + * for the duration of an user interaction or specific time frame. + */ + export interface ChatAccess { + + /** + * Whether the access to chat has been revoked. This happens when the condition that allowed for + * chat access doesn't hold anymore, e.g a user interaction has ended. + */ + isRevoked: boolean; + + /** + * Make a chat request. + * + * The actual response will be reported back via the `progress` callback. The promise returned by this function + * returns a overall result which represents failure or success of the request. + * + * Chat can be asked for multiple response options. In that case the `progress` callback will be called multiple + * time with different `ChatResponseStream` objects. Each object represents a different response option and the actual + * response will be reported back via their `stream` property. + * + * *Note:* This will throw an error if access has been revoked. + * + * @param messages + * @param options + */ + makeRequest(messages: ChatMessage[], options: { [name: string]: any }, token: CancellationToken): ChatRequest; + } + + export namespace chat { + + /** + * Request access to chat. + * + * *Note* that this function will throw an error unless an user interaction is currently active. + * + * @param id The id of the chat provider, e.g `copilot` + */ + export function requestChatAccess(id: string): Thenable; + } +} diff --git a/chat-agent-sample/tsconfig.json b/chat-agent-sample/tsconfig.json new file mode 100644 index 00000000..5f02c869 --- /dev/null +++ b/chat-agent-sample/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "module": "Node16", + "target": "ES2022", + "lib": [ + "ES2022" + ], + "sourceMap": true, + "rootDir": "src", + "strict": true, /* enable all strict type-checking options */ + "outDir": "out" + /* Additional Checks */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + } +}