From 114c6593928b5674269db386716062c1468ad022 Mon Sep 17 00:00:00 2001 From: Isaiah Becker-Mayer Date: Tue, 5 Jul 2022 16:29:31 -0400 Subject: [PATCH 1/5] Adds directory sharing flag to the ACL, protected by a config variable (#951) --- packages/teleport/src/Main/fixtures/index.ts | 1 + packages/teleport/src/config.ts | 2 ++ packages/teleport/src/services/user/makeAcl.ts | 8 ++++++++ packages/teleport/src/services/user/types.ts | 1 + packages/teleport/src/services/user/user.test.ts | 1 + 5 files changed, 13 insertions(+) diff --git a/packages/teleport/src/Main/fixtures/index.ts b/packages/teleport/src/Main/fixtures/index.ts index eaa3e8f50..372155720 100644 --- a/packages/teleport/src/Main/fixtures/index.ts +++ b/packages/teleport/src/Main/fixtures/index.ts @@ -44,6 +44,7 @@ export const fullAcl: Acl = { nodes: fullAccess, clipboardSharingEnabled: true, desktopSessionRecordingEnabled: true, + directorySharingEnabled: true, }; export const userContext = makeUserContext({ diff --git a/packages/teleport/src/config.ts b/packages/teleport/src/config.ts index b02d4a24f..e09019edc 100644 --- a/packages/teleport/src/config.ts +++ b/packages/teleport/src/config.ts @@ -28,6 +28,8 @@ import { RecordingType } from 'teleport/services/recordings'; import generateResourcePath from './generateResourcePath'; const cfg = { + // TODO(isaiah): remove after feature is finished. + enableDirectorySharing: false, // note to reviewers: should be false in any PRs. isEnterprise: false, isCloud: false, tunnelPublicAddress: '', diff --git a/packages/teleport/src/services/user/makeAcl.ts b/packages/teleport/src/services/user/makeAcl.ts index 291c377d9..91a6f46aa 100644 --- a/packages/teleport/src/services/user/makeAcl.ts +++ b/packages/teleport/src/services/user/makeAcl.ts @@ -15,6 +15,7 @@ limitations under the License. */ import { Acl } from './types'; +import cfg from 'teleport/config'; export default function makeAcl(json): Acl { json = json || {}; @@ -43,6 +44,12 @@ export default function makeAcl(json): Acl { json.desktopSessionRecording !== undefined ? json.desktopSessionRecording : true; + // Behaves like clipboardSharingEnabled, see + // https://github.com/gravitational/teleport/pull/12684#issue-1237830087 + const directorySharingEnabled = + (json.directorySharing !== undefined ? json.directorySharing : true) && + cfg.enableDirectorySharing; + const nodes = json.nodes || defaultAccess; return { @@ -64,6 +71,7 @@ export default function makeAcl(json): Acl { clipboardSharingEnabled, desktopSessionRecordingEnabled, nodes, + directorySharingEnabled, }; } diff --git a/packages/teleport/src/services/user/types.ts b/packages/teleport/src/services/user/types.ts index 96bf6d70e..52ca12e28 100644 --- a/packages/teleport/src/services/user/types.ts +++ b/packages/teleport/src/services/user/types.ts @@ -46,6 +46,7 @@ export interface Access { } export interface Acl { + directorySharingEnabled: boolean; desktopSessionRecordingEnabled: boolean; clipboardSharingEnabled: boolean; windowsLogins: string[]; diff --git a/packages/teleport/src/services/user/user.test.ts b/packages/teleport/src/services/user/user.test.ts index a1c74b341..0702eed75 100644 --- a/packages/teleport/src/services/user/user.test.ts +++ b/packages/teleport/src/services/user/user.test.ts @@ -157,6 +157,7 @@ test('undefined values in context response gives proper default values', async ( }, clipboardSharingEnabled: true, desktopSessionRecordingEnabled: true, + directorySharingEnabled: false, }, cluster: { clusterId: 'aws', From 0aebe185798c9170a54a993e21b7320e3d1df15d Mon Sep 17 00:00:00 2001 From: Isaiah Becker-Mayer Date: Wed, 6 Jul 2022 13:07:45 -0400 Subject: [PATCH 2/5] Directory sharing menu item (#952) --- packages/design/src/Icon/Icon.jsx | 2 + packages/design/src/Icon/Icon.story.js | 2 + .../src/assets/icomoon/fonts/icomoon.eot | Bin 0 -> 53556 bytes .../src/assets/icomoon/fonts/icomoon.svg | 4 + .../src/assets/icomoon/fonts/icomoon.ttf | Bin 53392 -> 53392 bytes .../src/assets/icomoon/fonts/icomoon.woff | Bin 53468 -> 53468 bytes .../src/assets/icomoon/fonts/icomoon.woff2 | Bin 22904 -> 22884 bytes packages/design/src/assets/icomoon/style.css | 2 +- .../src/DesktopSession/ActionMenu.tsx | 12 +- .../DesktopSession/DesktopSession.story.tsx | 8 +- .../src/DesktopSession/DesktopSession.tsx | 20 +- .../teleport/src/DesktopSession/TopBar.tsx | 80 +- .../DesktopSession.story.test.tsx.snap | 690 ++++++++++-------- .../src/DesktopSession/useDesktopSession.tsx | 9 + packages/teleport/src/lib/tdp/client.ts | 38 +- packages/teleport/src/lib/tdp/playerClient.ts | 2 +- tsconfig.json | 4 +- 17 files changed, 523 insertions(+), 350 deletions(-) create mode 100644 packages/design/src/assets/icomoon/fonts/icomoon.eot diff --git a/packages/design/src/Icon/Icon.jsx b/packages/design/src/Icon/Icon.jsx index fe54edb6c..0a8fad484 100644 --- a/packages/design/src/Icon/Icon.jsx +++ b/packages/design/src/Icon/Icon.jsx @@ -151,6 +151,8 @@ export const Expand = makeFontIcon('Expand', 'icon-frame-expand'); export const Facebook = makeFontIcon('Facebook', 'icon-facebook'); export const FacebookSquare = makeFontIcon('FacebookSquare', 'icon-facebook2'); export const FileCode = makeFontIcon('Youtube', 'icon-file-code'); +export const FolderPlus = makeFontIcon('FolderPlus', 'icon-folder-plus'); +export const FolderShared = makeFontIcon('FolderShared', 'icon-folder-shared'); export const ForwarderAdded = makeFontIcon( 'ForwarderAdded', 'icon-add-fowarder' diff --git a/packages/design/src/Icon/Icon.story.js b/packages/design/src/Icon/Icon.story.js index dd13b6f65..200fdd9c7 100644 --- a/packages/design/src/Icon/Icon.story.js +++ b/packages/design/src/Icon/Icon.story.js @@ -99,6 +99,8 @@ export const ListOfIcons = () => ( + + diff --git a/packages/design/src/assets/icomoon/fonts/icomoon.eot b/packages/design/src/assets/icomoon/fonts/icomoon.eot new file mode 100644 index 0000000000000000000000000000000000000000..3cfcf38d029bd98aafa6d7fece91f9003efb98c4 GIT binary patch literal 53556 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 QFmFEqY0ls&f9LOi0h9LI5dZ)H literal 0 HcmV?d00001 diff --git a/packages/design/src/assets/icomoon/fonts/icomoon.svg b/packages/design/src/assets/icomoon/fonts/icomoon.svg index 2b2c7a6f1..87fa6af6d 100644 --- a/packages/design/src/assets/icomoon/fonts/icomoon.svg +++ b/packages/design/src/assets/icomoon/fonts/icomoon.svg @@ -148,6 +148,10 @@ + + + + diff --git a/packages/design/src/assets/icomoon/fonts/icomoon.ttf b/packages/design/src/assets/icomoon/fonts/icomoon.ttf index a9e1655adea66b7f6e70428cabf76283eb1bcf51..dd20d7f8b22255b4cabf963a5d2218286440ffe9 100644 GIT binary patch delta 49 vcmbQRka+?S1v1+nP2CuB^`!LC>h5@co39MqEDRuU@6Uk>7`@r$ln)yK;?xr& delta 49 vcmbQRka+?S1v0Bw_iqfjdQ$omzj-{r%~u9)76uTw_i=VFjNa^W%7+aA#(WYZ diff --git a/packages/design/src/assets/icomoon/fonts/icomoon.woff b/packages/design/src/assets/icomoon/fonts/icomoon.woff index c6a02e6ad2fa0b165ea2231de77b329de21e2a21..1acac7b28e181beaf915ba48c4236624cc7926bd 100644 GIT binary patch delta 49 xcmcb!konF+<_W#bwntMpPI!7!`e=1`JipCX25uGx5V-f}Kn0B6JmHiN8vqo)6pjD@ delta 49 xcmcb!konF+<_W#b>ec-lCp21_vM;*`Wp7CcW+i(t6dr&z+4# z)G$s8Jp2E4z{!~4$FGgC|d z7Oz06l1bfJ^Gsl^lKo|co-J!izECr$!kWDy-cA4BgU5J?3;_WL(*Zb;2a5ZlqT<4d zD~S`xYU+fTB@s=wjhZH+X_~P#Ta#vurZd=;v44}8**57&(x0Y7-+zCqbh2HoSJHn! zE!$kgtsOQ~!nOkd|Erqf6UXR16hd_CV@l~;GP$7WM4u%}qImao)v_b&xbUyQs*=+C zlwq`;q1-G6PA4lyITi0DsR@NuJwC~I_>SPU#F5sKiph~q%Wj>bJVa>9D<7p+Y8M0v z3yd5?5DYsrs&1d{l*A!44=6ByNFW$25+m3B%R_AEFv4R&mV&GYwRg9{u*Fl2I~KB zs=e(zfY5>p@!O^|^&{8LMJMT}Sh_0TyYIchn>RBcFau}@Lx36%!;%oCPeH)|Xzc+Y zN(+F{E{UH~0*MVEzjO>zVMEqBrCi187p048)$MWR^1CSAl>VJV<=$2As&&!2s5)P3 zNu|4K1SL^HMWY4~(3;0{U+4dF`rk{}_WGUwbRZIfSWSpZX#bjr%vH}S+lt%n&WZwp zf)Z*%CS_9eF9MXlhSmWD&^5tc0I+vEfZPEXp_Z?k5#v=DBMQHF6V6Y~0VfckOUD6o z64c0K0kU@yKz0zxd9C5euQUV&fMACDGA#IV?d8udpSyhVO4*gUS3kTaTpMs>@QsQa z?KeKY@#&2(ZgkxG<<{R_3%WLS?d>|!^<>xat}|U{yT0!BbqBf++}?G2|Lv!4f6`;< zX?vdN8S8KGEB;H-EUN{$-4@NJ9I*z3bBBFVL0XzkB!Y4G=Zx z3Ec>Ggns*#qU;(|W`by|C`lA0iU|HZczaM*;4gtUgx7>;g$2TVVV*EYXynWI!TtyQ zhy45eSNkvXZ}M;Ouk*L~hxv2;5uOi^!u^-~19O0x$RsmKEc{pem;4v}4t@~t(J1O9;hhX}%C3dd;7Pz5ZlX3jG^wD; zu}crqyaDPgUjUp6;@~xeT*i3V2sWY!kd3HhEP=^O<;#+oZf_!t@EITvnk*4@IzDd2$ZHig*&b01$6UDaH#)LXr$eF)RNY(?}^~tRMzCz|5xk1SK0lAy8YO zBJJb3YVRD3R%OdBG1WCV*xdS3sx3_KUYC9)&DkpFN}6sX#Jkas zQXE~{O0S(35B0Z+A@3;d`yvypA(av+bGbN|@$%S+qR=(X%!!f$MFmXr;z$;YVd$1> z^5{4m2e0DRW-G=Jm7Zq{s-x_!SDNzWdEIdN2c!{Y|ClX;9_G(zq@1jl)K6O4^yXV%y2E?iC zP=EhHsrjaI@}`=O998NyIu2i!obKx_h|Xd|)s@n=8qS{;Sj601zGOuq>EnC^%SqLS zwYk{`^mK9+41a7Pb55BA?)aS`Ub$76VqEK9s-DbgPW2RVnPl+MYV zEvSb!Vpq*=jsiF9zV3XNRvc+dRtQ^2ML6M{6JO)A?;*sQl6W~`vE2Lxxq1cfq}_6iU4dH9~>fy>?sY1xU&x*-_6Yx#ole&*paC?wlV$jBdJRXe#*b6iFOqWx=8yDxA(F z4k?2CQWIEp8E^m?<-iI2HHJPB?*bz(60{0k#SVN+Xb&8F1QaB}*T%Bg>mFe*FszL%dHaV>2I0+8H}CN)unSewbY^O#gmrOQhVV?m3f82opAKoysG}H zMw9^FsnBBa#0W?<06~5Ck?(!bS*b7Nc_8^YPr0b=A4&cfRbE%)U`U`cngB*tDT_MM zZ~Ljn=4J6b0CU;LmNnvJkpMc>O{zQjox1ZSMlc$^%inGDw?M576T>U7qzV zMonoM@9TAUb8o6w9g4k%Zx&UWjc_gptOpvOLJ#_OjBR44Zj3H|46toN*LO0GBc+!W?L7{8+#<6W*ysa z6Iug}*pB(AKI!8J9l-ARmdhJ~PuBe?6%$AweIS^Oa1R%fR~I(8_zPN5i?x*4!NhM# zD3%x1wiD~a?Y1oqT?KT4yCbQEQZ~htfJnLO;awN^6*4|+Dl}ZA+?i39Ymm#7@2yH# z=*&`r#n}#>J?Bq}h$*zgueZzCpLm?VJW%IIjPy%xRwr({{c2ga{TkXVTNL}wPTd_- z&Ei#zV?WxhO8w`i?~OxbA2aW`G?;u+xH3qOaqSDSUWs;5Etfd$z#=53CpTS`wN14L zZvF%Up3e{3WzM}>?4{X=x-a2;3#LL>DR$74zHKC6Lt#j~XuO(Y?eZvqA7IHNjG)eJ zGHpcF6@07YjIw&P`lsjoK<%uR=hbG-!mau+a&%F--;+{5%SB*BD&mNT79a|iu^z4o z+s!8%?7_SR>jrH>lf*?*x-XGnFoEVxgqkm{MK#ViE$m#3nUmbDYpmg=95i&;T#PRS z@#0QOc<9tOO(pIGKRSEoNe5??QlIR`uO0z(mRlmb4okA_^KNLA#FA?n28AV@ zX6>*VY6ius7+t7{Ukj1{P>Vhs2syr$^jq(J8!%#pJF!YFmzv3HL`^ zVId;Xw)C z`p1Pkm0_X425AlCB25a^S?$CfRwc-$fzaB)Pv`h#;_Q?HaOB`PUwjnK7f>Bb@z{a8 z+o(LYHM|{-C$UY`_26`G0@16kH7Rp{ePm!{B!yQtY>Wy%g62mFKmm{S31)e%nfJ-r zwmD+joEtx|ff!Lvj7BnQX5r4hKz5%V+-IycducwXHWuMv31H|+55`LM+~_erHw#^= zkuVHOGJPH2E*CvekkL@(Xz%yz*S#l;zt4D#83uIHlpq@AW0lS!sT{TjH6)xJabWp+ zi1zqABy=e&f>0cYJ7cyHY6QA=gSAI4gd`>Zz`4mdN{YXHt06bmuC`Gzyt|4+ojKNeDQMhKWrQ+H4<( zdbwMOI>;SrL#FnEDN*i`Zkh#os2L^?%zZxMnQeOw;p-(XbtR3kfik!jxG@0`m>TH$UYO6jD!qNNuPK7K0B{)atY*ryKZ^x~1 zNoqc#oIsQMiQ8p0XQWxYJ63eGmWlu)TF2+iSpwXj!90Jz@z}TM44NUZ|7F$a*_-rR z@@%vZG5>v)MyhZ^z;D#|ZKw&53-t5g)az}&!kQ+bJkUe<2ekAd-tI;ok?;hx7i z`7yCmA5qm6Je@5ktr!d4+ThoSs5QAR(O5l(9a*BmUw17CWS6T%vrqnDC_&X6efNX7<@r3!l6 zLp`9VX0ZWcDLFMqL<-_tJ&iXiX=PZs!3bwMzLqSPk#6&=m zj&`A_#5D-XVx_IRv1!VvlZ1Uj8phar(vu!i+KhG>G;%qNVc{tO4J43dE^G>u^7fp2 zuOG&H`F0sWCSw-!{P_by#F?uHHoCOkrQmNhi6lvUQ!l_|6hg`MM*9L_oooZt}T319_@DeQ0Ed6&s_`_7-tVcH8DE z4a>gXF5{-m!yhvpedWx8F;t9zTSB{q(G=oY3^a)RzZEEgDgSiN76`@yl&nD1Q;ev zG!qdqMKj_Vp<6J3g9Q)~v<@~6sL?_b?7;;arNRK|Aeu)Jf!5VT5U2?O26K}0z_z-m z&IM(;d*ioCFq`-AVlg|F2a^{H)W&Fg^8B$->}-Yh8z(s+qTLEMeO$?UshFZN&f;1NzkPt-QFn=Qm;yuG9; z!Q3{JyTJmYi$0IUK7feDuy|Sj$vKUfl;)9ligFDHFsW=W9Ytc4%#>8?Q79_5TvOPS zqb|xGfk!jhIri|-a)`e~tk`;%oukhmD|MY|DJqmOI#d!=@W*8@-tii!l<4HXcW4K< z!tsEQ-w@Q^F#pzZ({Q4+@=($w3Pe=PMHD-|i8_a9n#1=0_&{-E0aeWvqB>#3V}cCGPF=x z(Y0Qc-JQu8Jn;JY+?@2Kj%bOvp<~C*idDT^*@X^};cSY6(LeBS9L(iJC#g%=CRh0U z9JB}nxHqtH7+QdI1HAk*Csvxs_QV6Fg>a*$?~z#dc^ZZgFW;Ro6;hp&t4XXX;d?|JRoLHUOg*C(*8vqCHKDE zKKJAOZ@oR@RZ^}MWk{j;(nz-ldB5M&MQOXkvd}%6IjiWLn;IYm=|Au`ZajxX<3Qt zb2jQQo7WHzfRI^xe9&eNz&pm1EmPSJ^Ok`*O?WM}C}Bjx=!s5?sFEqN{zSI+iwKGy zl`|M^p&eli@Vgo~^e@gKEMyTyMs+#Ntu<-W(oT{EA{zfhfrto;~G^~O}+rsUP=VS;*mvN4Oq z**>E4#wqHd^D+2<3|#{nr#LG2Vn%=jw3K0pa8US%M0d3sr5ZrPlOx5u!V?ImoN1S@ zODVp7zFDj!%t_T%=By?$9_BaI+fmSu1k-S zI}I?JBoS}-2Qn}jz#Z67Uw)(~N;1_pl65S;l_)BbZjc)|Vrfio%d74y#A34YmUNg7 z^L479xc)k4utWq261QFvf31)#TN}3rG|zcMcSAeS61KCQGt<{9VQaBJ{umoEf_WaD z0Ou>*Pv@&xtKsK2f5q+3?rHa+jo}(bV6y2}>6%e6yTc5gVKQ>SjN|3T-y2~>khP;E zbVPjPjv3i%t_R|Ifc6~#IBc%a{wopxFlaaQfC)seG5=}qMx?EBhg!6}S5+|06kB(> zE*98PjR!vJi9sf4PX5t$Z_NZl<1VjBwt62U60NZJ_Kfg9IVdRI2!?~It{N0lxFOPc z;`1B6m|4~2U(gg?clmimU80lwu-`z1a zox>O@&vki>olZansh_EvTPAz2K_fiXTS6Cw zKnBYuA)(bwjsrN!^QDGEI0M?bxTpx90B=c^^OKQeIU(IAP!3J#WKZebllYEB+}#e8#|M}>5kYrLFKMbtA znxlrLo!+EA<$lDAc1SSo(|1fs&1Saa+Fg)fO|TXZ9F)?Nv=LNZZtiB$Rlm%2KHV-q zhd%By^jw%g^S2)>&;HC*2|5EqgUPRHxDH>^!Rm4c{G1h!@fnnmdq@6`@c0FUQq}c^ zFVVPs3t1l9OmL|6r16{_w7St8?LL=#Zhuf7qx4)^758KqcvBu zt6Z&D_EMYYJYo5++O7Q_f$BodNM{N|FJ_7jXrZP-H{^;M0#}0;RT?NJHQ;Z^+@+aw zOu$c=b1V!DsAd^EOq5J;R6ns|fIuK=`(e%?CW~o%wnJW5B+7Sk_lkBC`97aD85;hs zFe>DUI|i2DnS0M+Dmc$nQJ+Qy9ipQNw5HjjH@ zG!?UI!=)DjLOJCbT;F9mJ^fahm0}O9jH5~%YQDUzQD03S?9!P5dy^HmiuvCc_FkA+dxZBP$BTSJ+ue=*C1U- zcpkQ-*MljMcx8t1N-@P@<>?Zzd?!EU|E7 zKKd2I3m~y{w6MpDFrz~zwqjre@(YI_Hdzq6mP+R?$?xa#d8Xb$SO5Oj5Sg1SHW!+!EaFi{y7L&ULvc6Nh47!^Ww&ch6Kx}l z**GL>U&LqL845mKx#*%uMK3$$R^E93*Ga5OQ)Oobd_q4d=nn+7Ca~7Q`wdnq*DcB} zBk|yt-FZ+bJg6hBEXw$rbi2aM$q!XY`#ehVL^pyN^Mk_cRo9nkq{LFnzO3dHbBQ-2 zNT&N2QN9?g((%7vI3Wk|;wbLA{2Nh|dmza9m^7qE8WTS>F52@tO~|5-0a6;WyrPKl z!}}6E34bHKIZsV`Bd%E_&cDg>$(ki|IVk#?7TSE>jN9az=X!}NzMEF@i2mILGWigf zLrU+4#bP@3&Pp(HeZ=@ObX8jlZK%zgi&07%Q`hz23VNm2y7CMffx!B={qZka@Irq*?)gU^@pCuLonkY7C#KXtr^d#e;sUD`>HX(SM+j7rpJe|xD^=1 zqVzJNq}Ui^3nmwgO%>{U9C$j~0BhLYhp2px&;3{@bHDOkk>g~rOfraF(d6d-GCggJBTIqde8W}D%AA|4 z8#o_X5fZt@WHEUqxvOuuC-8m=JXgjQh6~Y`{b68-sDRrM5=Y-kEjEEv>)NLc4;$}6 zDuEW8D(U%X9Q5=gN&cJRM8d0x?eWQ~3p$nA@2lBJ5sKXnk3688{;2Vc;geZE+2Ofu zsjpq})p7@oJ+VzLV;$VmE&_4lv+Cxf`(v;#B?7QRx8NqD=Q7x?6*Bng=Bzq;PW`rh zJ@MBsw6nHVNMEM6(p4AQhP`54pHn99Ezxtv@8!qD<0kk{iBk8hQExdsUmWO$uB?V z;Bau958G;m0I90@(RrRVPh+T?STW{FOH?`SDRwJQ08GU?uC{DOVzENMt14s!~fs>bd!IL8nltM;p$#Vxi>@eA4C6=$t(I?i0M3eF=>JQ?T zctYt4U>J4`IZ6=E>|Lujbj|ns2y|3C8BOUBb>sed#YTo&f<|y;<)5<&=hjRqHakr- zo|XK#4dLP9>#r_7KFa+Ij4FzIK&tzDP5WWYg@?C25Hz$Nc!r%~PB4HQStt~RguVO? z1pdugx!}FAK4l4uN6pPfh8I&LDWVj;L1{<9zGS$<(=2jT6WMx7YQ2Ts4Er>K5XQM~@mFYUD_{x}HEa zV_I;LT421?tj1A4Ki&?McV*bt#S=h7(LEB%kvK0@Bgu!_cD%BqfvH(O4W>p($k$x5 z`dFcZfu?C|hCyHr(-HxD|GX`j8u!E#hMi3-1MiiPmtXGm{>fzV2tTK2*yy{imtML# zcq-3)xV@j8=NU3pj3bg{F&p4|N^fP5p$;UZuU=Y4oUUQIssh}nf#!obQi%$k4ZeHQS``4Wmy#)ZPZ^5Ci@*r&+Y zZH15^K-7s!FbIK&uu6hM6htc$(bFY`P8SG`I-hR$t-sqa)8@K%t+aI5&=Qx9m6q)* zxoqC~cl|y%UI++I0e3X*X1=N@TC=7o>d_N}&fpLaHR;}96J`R929tW$e8CipQ}GJZ z_te?p5y2%`J;EfqZ1a!}hXsWybh)r>!;sBy3d;m*IgQEfE$H3-4Hr^*vvF`8J}3Z{TCh#Uv*2EjtF5ZGVaf z`gkrY>i_(SKZx7;RL~vgA(ot264haNhq^4bGC4g ze__UpvZSgC(1#9ItKbwQQ4k?GM2Yi7F#P!XO^ru6uRE=hAl@K10Ft?LohGr+`|LTcjEKUD$>)#FXxrD zH2*R?>xb)w(pMKvwFz8viyn9?oUWKIe%00WA7+6``C8LF+hY@LO0!~{_}I5)lV+3M z)m7#0s@ih(q1C#}tE%8nU`e5R;j^axNc?Q$&Grx4$$}d@b?}d9J+h9Itccu>09Kpw zDr87oNB^|(eaD*@FX=nZJbv1A^EizK?lFq#si2tv7FggMjdJ@UvR`X!#C^Nd>uqT% zcelLe!=0V5?7i0FE)OAiX}VdSR*}Cqq^+v*o-2nWMPk9fQF-yUV71-7)9p``RCTsW zeg$I?&Emcd0I6LD?PVC}jG#jE%7lzF z^XEjRq}XhQh1T}ely>cyZT55AZh_mernvU*)$QErGAF-t!QdJw1*OVpeA*Gqk-R8; z@8VGl08mER9c*iromx;N6NsVNNkm!m&68;siq0qOWL??d@h&}dBq;uOBCTrI})bQAv9wj zL7ydUGE?jo0q+`Y*sR6i4SDEiBi@Zqk@YF^UMk-!7!PjT^Sil}Y)Vf*T=dPVV~s&i z1w~^8dGP1_?~;H%4is#pPx$zLSKq`_kSz8a9im`|am^Z*47LhFBQvl81XeQzR0D|L7THUcSCZ}*72S`G?d^5WiWT?tjC=RY9Ijcc>k*gp=pMjEtc6mY&XN+R1IHbA z4}vo_r73D}+~Uk>xHu%WvNF{-J{Lv^O0(Jd`n5{=`i-OMpadG%l}V#9IYp;SNd|xN ziVlh=@wh)#)?aEtGP5A-#3PRKlv1#Ba`lieWm9wW>sZ~eHoGAr4#a;qPh}KPY?e~$ zg&(4$FJ366T5J@7QPtVXv2j|LL>T!L`xfP5;D>Kyr|^vtOFDGELEdI&7E%sxi;UWK znD9RHSqA$JmGZ{OXHnl^Y-?2H)-mO6-(w2(vA6j7Gh?%ndKg!`)J$XWfv9e!_AS+R zgghJdtybx#zQM%Avsc`*fCY+b9~6c1)T+W4FFf=27pH-qyuzB5EE;O1cQHsqG;|rE zEJla6$9&%-owske0zsg9V_o8iFW<)S40${ZNf@gUu~%#pwVsIgZ_{{fw3oEtfF7hR z@L+8V_swPdf_T&1CAT0p#3aBrn85ttV@91`8^iScrZDvosk4L?Ej>)>0zA-%8r$i4 zCNvk!09t)x8NKPEplb$?Q(-l%nmMx|qbi4a_uX?%AG3^6+Hl=57H1k5OCn9Cu?9xN zn91~=!Wjl;>>Yd-r3JVs@2{WkGOMccGj9H?pn`EYK&FK%82OC6X!mEAj?w&+sUQrVRyN?=zFHu7(bunz?(cgc5UBHoBClvj>=gm==i(ueS3H)NGjnE6u4|ER z&-ZF*FKHmoDMLF@U^r@6)mmM0if;GQC}{35Q_2K^S<+B~#)c$lHEslgA*)8+Dh&t# z07wv_q>Wr%PLB3? z*4APlMYixpZ*PP}`rE>V`|ocv-xFplXgs05=S)f2MfMP^hQwYmOoZy_^je^Du8r>N zdnpj8T`qA}Hi&oRyKFN1lYbxC!h8b zwWBX-0uSd?J2)=PC6k6HZZ?M6E;=?QMv8$gH|<0>p)_-ccMx?!-WqP>T^W{(-%Oo% z-{-e7ar(@s7fE`V#*JtZw??KXU3@xodTji|3I2oxAzR^x&;0DbuK8o_J)~V??J_N! z3ljIZw7j(is7{ZJRT40%| zY=lB0RoN3$Kp=zG8Y=j8M{Ls?V`6l4X5u1O?D{E637oqzMtN55eoeT4nC zV0%{@AqYUfwx#}I#^|VY0D*CF{Td1YNX=FLZ+=~CL`#>7*5Kfp#p?AW8_x!fP(S*J zIs$>gcAVje1&r67cuf2(onnOZlH!GAEqP&av2Te-kX}V1Ri}9bk~$(k;D_R8#m_+U zh;jfBm$LETYW!4yC*UN0aLq;@$~+N>(F~d80+eJsu=+TU;bC%599R|I*#H^@HH8RF ztJK^8#^JBT(D_)vUcWPsVhyp=1ZOlr6KqWwqi*=@} zp>P2eG_-6J6UMbfO+rXWUS4r=LZZVy z91_AVwGCsTd4t~)P8P*N)0 z|0#&uoH7z9&7 zt#Ia-AcazS+B{t$jJ4f^;9Cst1*=!0voO#=s=Q4C?pqR@$_w(A^s?vym~QdJgSauz zpq*>)6{qLmI+qPgEqCx7vH@fW8IW!Gh&7IbdL{<1;cYd{jR*+_@%j?I2g{D_Uig~O zFUXyX+75H$fNJ{$aCk*tt3CCZH#V(evq_5<%QV0Sz+mTE8VGRH)z@O#Pq~I%#*J;z zo^8(`%Fk%ho@&5UJ?^0fQAAZQ?*b4ECpJsl3~@W#-%yT)hDBveF&nGB(GbR8MgAfz z^t;8}NVxY$($NsDPsrkcmX>!Pq|C<4?@D;7`=7|32#k<*3knh-j`zQ}z~gg_QzI6<%&CYkO`JXZc^lJK#?CyjYgb}f|A1}u z6tm?lmZPihU69C7|e|Kr+C9R?*ERupbZgBlW15&>K-}A0^ZV}-*<9%_W!f7`J zBV4bys4&>%bSMxq@=BF)?lDOFOH(RKVWnxBV3%*8XRtee@ElGBk%E-%H|n#*i#EN? z%KY+Xjpf!)r1Vu^-8N|A;%wH|`aDr?br}Eb!BEqPCo(4h4=~i$8kUDY=i)4yu(IcP zoOMWJm8FrZx&K_O3o|i%|5%=o7MdRFD5sOspZ_$&a`T2!vRq@6`X~Mt1V01nRtu|@ zv{PH5?dd2SMbCP4c}Ba(mR7B^Ae%9y6&tA5w-lI~MBEy$*Uq&~lGpl(lS9D?C)a_w z5fIm$KjH)vAQ^lew{fSHHEzU3sEg^=W=}O$Wc2i4I!AYu1jhX#uRN~PYL&X(5Li{q zP7nD$x$j$)`p*{9xVq9@V}DIlDT!}vg=VG7jQ8y>h=h`;=htoVp^|;cy5tn2@yev` zRm--N{uz!)hmz4{t2Hvkq#hwfa&{|{%}W(>!dB`F~<-{dn~^F$zvJRYWoTRJtUf((p;DRJ!$X$td*5CPp#Cqt79|oNv zEf}{FS})MTY;N=-m?Yzs*RYqcJ1|y>bYU4$JevU4LIQzOfQt%;7J_q?Qt(AEi5aOZ0x zXKCj0tmXgvarv^sQjTHofvqU{+U!@xQ1s@H*sQmUia!ZLTn0a*amI|&(wN**>(>bN ziw`#Lu7J=`W9qKyOzLI{NGZlB*MPi6kf}0V4<#Ej{ zwtNR^LN|Fu{#|r#H>d0_3Op_=Q*cMZ8v{VxEv3x|XcI@m1}Q7 z=6Xz6KE?EITiWWnz_7qiv8n=rxtr~k5rG+*CRbWigPEt66|H7k;})cC#dC70VO8ec zWK}?fF{1z%;T@lUz^cH>&q(XFcDbW7V!BorF|EnLDYvIN{B_o@9@EzWVxB5l4 ztr6bZ7kj?A2NH|VkK6LO-<%kP==q=Zflu%>v**8LdR6)MiCfmt9GS*5#BEbk@6_OL z6r@z1e}Q_M zn-7YD56-PU&$2VRdooPU;%IfW{68KzLp~vYJCC$O``;>~xo}m+)U>o^?edELbbUj& zg%cfB&S`5%*Y{V*+ojFKxpPVDG3B}~HIccAadEl1HIZA^DeVS_gHt~5(d2B+rcKF7 z`!>zeOg@@tmpi0g#OHaP*I&k1`xdNDu7N|_ONv4bY48QGq@4$uBUdjtJu=vsY5{~8 z2uvnoL<18d5n#Ne9@sh%<8tT1;#&rsNAxl$*LmWk&i7Sz2hTyKDVZJtyVE-zTnAO0 z2yC}=ondMGJX{`!vs_x9v&WW;zUUGy1sDVI=r71hWfW( z`lpMcR}8uiu4=7&TGP_@Mp6EH#pv|I85-vMGHE_Plv2_?vHaGhabKFmRd^l&K&4aw&`~&D(ymgTrRRXBr4k&(Po)b z?ISJI{T^Nv--;a~nIpM=&SiJ4cVp}s|BnI?&eHQ0HS!W!$)ZIiOII}@X*M@HHzam> zZhrh~i*O8J- zcWsmoQH6|_AovYc6-Wyt?d{WuxvENXzyfYCXlB9yCI(GP7|8W(X_d7T>B2l7{X1)0 zzPzNAN9i!6`z{1r_~pCf-<@y}?RMO8?ex{t4%}`hIs%*^vW<2CL0U9d&s;mx2LB7w z+KE%StY3Wv*39F1UD34IGrsy*`rm+qUP7&;cn%qG^GoXKC7!9`YBH(1*fS-mBk+IP zZvM{vJ%^oUS)Hw>IA83w|E6!7Wp_g{*?YCPZrW;2`59AQ@_Kuv=`C9r`nF(fAZOP- zKtu*)-pfv|6JS^WV|OgD$eulqQ9pl9^fet))^0-`ug8`wn3clmm^vnpYjE8RmUQDT zSvlb|OShDy3l-4#QGsFxKm|cF`4S*NK`}pNs%>s$(b|8RcrME~RLsRIs4r9`c-jp5 zo?Ilp%jV=r3V zDP~K}KSL}W5vh?p4>Hj8I5s=%$gXr~&~nrENbkS+{IBZ`S&qGT{iwNz_%K?G>qRzZ|kA?)irjHj*Wv$W3G6VV5pQb_1l z)TNv#-w%RTz^3}4`Qcw5S%s?Ljdb}|h$;P!^-C2Qr79_T2mu{_$fFEBI2sg41tnR? z(2b+X3a+JyoiHlK<9((XPds$2&vE0CL0X~^j^k=bOc2#FJm8-Z)si5JxCQ<1XqMQ} zAV2?nu|xjj&m>oD`Pk7*3vaDhZYx-^qChq~3f8V0WnUQha6&pY{E-bCSv&}?3TPHL zL40SIMYDL8kkm15SER@>U;_PqB`Nb&?Z zPyV=4GHo*@Ov4GLx$I}}neD2n%ikT5XzTZ{@}c7!7EYYhuweYqy{O+-b*(x~?e@Qo zWt7=t* z0YI2h*g+=7N&%RX^M6!K@|28q@z2Vj6uox;t@h#G3aVF>@`=QL#6sRiyDgdPbijg(`^r4|G4Y1HI$+R%r zfrMb?8s|i-giL7ntBjDtRF;-NVWUJo2_i!187lP*3PA*j#3!O`3an!R>gcKnKOlCn z0AW&0qt}U9Fd%_sF%f_udWjTdN~}OLx;3r)U73UoS!?+DDw-b^?qcc0Et0JWS_p{& zguns5|JyzQCK=p@ZQLex1L*rLrC^Y$hY>>Dx=LA=9KaYbvbB|z4PX-_=M!^EEiAP- zyFw5k6wCy1<{|+x8P4W*TwOd-!GYLNHmSA6pa(GFSmYHShY>k2NG2nx`M*MNA;c^u zHgUHb+&CZ@0oebR?|*RVo&&`uND@aRbrb~YuEk8$6Y(O3=>0*$f_xp8!x5CW~hsNDKyb0T@$#^ zxbie+kn}VX+1!d@1S65E)2f#8+^)7$hoWoZhSWd5(`8juo|Y@ep4@AyI8VO&Sv?e& zxvfKu<}m-8l;@-XvOIl@WE$x?<;$=zb7OCJsZS0lq?1YX!T>8)`$s_z>|^q zW9L88bHoy@^UH(nm~|ZXtZ>+JTgV%ufwz1dcbfKir@HsphAm{<5lUb9FUHf#A@23G z)uK16=W?pDAmhDk-@e5zLTK41hSSIaj&T*7%Nv4Wv)6iXz1Zl~;ulc@j+uqx<0@wu z9I(p%vRy3bMQQZ;Tv=nPmt)&rs+2FcjlH~DUNAKqg~q>0&jZq~ZcqmWjhlg~8d~gSGGe2rmYh?g?mPFS!@Ir4WJ)t+n;cwcjr^Wcv6A%QA%o%IK|9y})qM0N z&9LrInT3tg)&gh{{WF&)=xp<5m3tc-z2#Y6R(JeA1bDO&A~Js|io5YtGz0TN9}mxo ziN5b65MdPQ*4d`VnG3CgtMwAH>J5f8x(d-3A^6%(6Qzwef6Ha6f8eC=vgsOZGou8fY+q_$fQu zCwJXoGH!g*Ho4?&-~`Z}IT84FiB=pD9#Qg&LVZ=@SKAxAnzBo_YYioHZ;9rIU@lN} zY{B2hzF;uF2!NS)F?`9gjED6}7lv9EQ7D^Q#5EH0V_46`VPuDP&Hl#^F*gE>;i5qv zlVIZ|m!5X~zT|Q44b7F^51QY<1OOJT{;^f@^_N3`eR~naJRjN`2`mh@y*(7wgX00m zCGPIgQw+xGk?x+(m_7sEE<2WDO79;0xu+z%Qv059!#^b@c~NBfxh<1;AA;(-(?cyI z-Ajx-a;2+m#O*X zm!cT9-<)jS`tFkKetX6AxEVF^P6@}%PwIutqqVwb{SNSh53geWj}t z7h-87z+FBzHb92}A)?bS?%fJpxs?ic^}n-gs}OE5g;D#k39kLk1z1}g%UVAl;`aTW zcXW+zYc&9y%nTp_gEGA`bUzIJ?*9$GE^iSdVaU=et?SVLZ{#1;wB90ykw{q33kESv zVkEYiU)QB=k}xC;xK?@qdVlr(fX~u;xJ#NwNv9g4UlZ&6{-aM`M{Zr+Gz}SR61M%mkhpr4 zu;a7Ffv~}#iv7UbBIMrVYPt8g!rG&v30+Q(4t!n0gy`sErIt{4hzz(l>Il5ne9=x7 z@p?PQN?ePz9b3uc!aJSUa7=(i=a3IgAu2OYJBT&!rkQ-9C#otp4IATNc1p>Ca|QkV3WcJ7 zoi)>39NM0mAHTZHwmLo^M9}kTgL^ENm8;T3Cq}!woqhCLVVSU&E^yw<4KNCEd=k0C zQKQ46v^|4KoU~OdJ+6N^(r}r9eQ30{cEtvIE-ow$z;o%dR(Pwc+u8uYeHz;!^Q{5z zo5bXmtDX4r#hi%SiQ`qJ59(=mx4=XKQ6by$UoU#E6O4q{mxSN#S|uF}zt^>Lwm_?h zqJZt92^y~g2_89A=bO~J%V-N%I6*QmnDl$^rBNc0w%s`_96=NsC)WHedCo>}y{s`MRITDx=8tTNzVF}p)a=10U5AAg!L1x8n1YE$;W~n9%!nedfvhK^0GV;NwYXv18A>C z>8x9EWreo;?{$|}w5L^6$a}u;2LK?%_JIC1@W3K#F&QF2w@uf@3=;LLU2Ic#X*SS) z`^x3gW)%%c$Hq1Bh+x5VHLCD{Gq<;$Tw1#?DfB0afZxPj6ScF($7Fhv&HH+5IE=pl z1u+y#tW(aivpJo|*gb@tZ!PwR2|^G1Sg3_8guoKy%41C11y+}f9$+7! z1!&t)+Krg?bf-r0MUN>dBRb>{WjVAsseo!|D9;%5xGkMzrr?d`>C(^R?hHP}r>;+> zev7IL6f0NLsjuyoYd3|hnww*v@lsh9UYhsaeQ{HwMVu?jZEBiE#1>2L0Sh9WTuWj) zcK^G)7p^ROS^G|N=7y~@*+L6JAjO%SQ=BdCdggi8`S~R7n(B0Y7Mwe{QXWg5+Yw5w zm`=xoj|&p$c|6=1{@FBZikWoKmdS#RY4;Q%Y13w;r^AB3ptL-^II*wd52}nF7evPm z7k-GFV)(o)LTAf)7fj*irY5tWDJ&D>=S7{NAx3luQmfVi)_B`DqYu&_JeUp1ix^zxKe7H%D(@8>^f87Xh^O&anM0wNX4vCIMsMQN6X1|s$DmH)r_5*)N7hv5-j(8 zseDQ}m8JSpdQ!tFh;JNW(in{J4TF5jIOR*|Ku?1MnDxCU}wmpSoYb8IvJAN(RgeQ|CYcAorm+5iK5ib@iKov^^P%&jhkC~ z@yj}s2{AdG{t10djb+Z!fm{LT64S-hoy+NWjgpOVIOSTJ0h9Z{$j zd~-z5*IyemeMY~6L(7{pH$TiMTJ>hv!Gr71kIh&Gq@xdQtkS-a&)v=4(>Hc-tbe3` zQQX_VRxDl;6O}~-nM>wXo26!n!yyqrg{w_G1J_`lYoCd8;U6h9Ffu~qf5JpwQq(E$ z$PC{cxM!LU?6L<2IyZo6x;=rL!!tYNOO_O8lQ+JQhnbO!!E|8$6jbg6N|gjMi>Q=u zVVpbDZk|iiGF8)0IUHteS=;G=vg0F^xb-$90!50u>X~88BR|R$~O9a>_MduACP(y}1X& z;k*tWPSdMlRj+Xe2RhClc5~jamz&{g^LP$=K%A2U;hfwuBWuhGbLM+;JlQj+jx~=n zFI=ddu~Vla#`wZT-)_xQS1t+?*&{g z`FT+jK0j5N!Q+%r9igAem{Z@zk|Nk$jX~EO>i9pO5XsaZvJIfR&XUrU2 zah%1T-!Ze&H=@j>SpWB^-pn-7Y|7ih@EETD%^NdOpOs%7r*dT%`<~x@Q2+Y@fl?w% zO^mp*?D|J+M_c!9*2_na`me^I-0T?zS&9Gx0uvAd*z9cU(WUh4=~$MY*xY&n$y|WE z`JA)_EVv9@D56e!i|d=g(UsmeYMM^Iyb!=!L;U?8U#6_7KRUg&dUHYvxu3x=-<9f5 zzCtx#y0aQ%<_q#ncFWd7q*`iI^YMf^yT`jUekI!X!(aXcz!0lNyO3j?OK^F9d@yD=Fe^~aU zdZR=VMW?S)B>{TB1O5T5(rn8QR5%X~vfV)6W8zdMfGq?BAp#wF`My8e&|WPCD>pC2 zs}O4k^(z=BFadD}0vUprLERdumEZ~@fTVhjW>$;XH{&mJCHCv0g{PJuF)d2L{cykE zz;CWXgDX9#D(hWmEyg5DzaD9Q`*xC3df;Z;_CxE&WO7kL?ouCmWB_4fKVj&)zkyeb zQ$*HvAXd(+{miPO(B`$j4K7>mAC;D#M5vl%>E(OoS-!y@6b>9spl`M zyx{u&*48aQEj~IcRvDEvn`2&;%MYN*Houk!JSXRl_@6rlLccpUZ#cV-QW{tqxVR!* zpPEeKwUwKL3WKJh^Ao4xxlZZDzMP@#k6<*Pt(#}d9ud!^BN20)g;WDv4C>* zL_lU`x{kbd|LJreKb#X-KKm%Wh`dUi11d5oqS~%C<8+^G0Zsm&bx&28SexqBm>Unb zfew&aQ(+3Z8+en_eRb> zy%%(zJ~ey6-qWsA`?7lh_|-VOIgX^uxZRtGFbWf?FcYT1v7rPSObLaT*#w9H6G#vn zQrg*C(ogVBeknu0p_%O{ZDLK|_(~~*{BW{|`ZXUtOQW4dX=ikNn0ny;>9du=gv>-x z_er4J7{rD9-$}a|X2sBd`;KxgOZNqpbR?F_%4ez2Au44Rs$#BvqZH}_tp~ z6k|6(*KSg8in%CrF-jSa52-GzRHs-uo$pmy>WeNaG@T$6{z2o^5oe1tFoW2j$`H>! zdp|1CoLl^fX`tnkmeVLz(wY^bI?G=F?Y9`t;mC|HaKq_rIHu`Oy0=B{b*}q6CSF z@;SPJUh6yd+2J1g=a=5N8KMxO-_L$w@gc(%yy<}-q4XO^UbixXLj=L1aJ_uk0(gx9 zk=5db!wbchz%p@J@TTtJ(BZ>v0f-=5l1)BB70h7k{hx4iB^i`UR6z|_zalVU^)cTp zNf!Ai#iy5-gR6d8agB7|49k$#*xHu+Apd(+XlzJWR+wBG^l3QfCXa=6=#%^U^@iDV zz{nx)9WKMb85{h*EahJ2GM7JC%rutze!cu}(KMo!D1S!O z5><$m_)*{kN{ln+&|%(s*hq*VMIxJzv6Q_EiBrOe*bDPugTlQ3J|t-Sr3l6B#0q|y zUn5af8pfrXFO&`bGrH=iN2rF6fsUWtDA`It%c@X-?D=%?F=GW z%{gcBwfHvlN`RUx&XtypU+Os5cEoOSBOoBI8&hr^Jx6!XW=biT) z^b8txFfY{9v{3y+o9hG20BIkwq3X?%W4q8675G|(*#SUh5h@LUV{Lv5`+(Q(FX;Qw zA;vCuyn~EZH|cH|*;jhP8>w%H8T4h{5867llD6SVbc*RV;9*+u2&E6`4D`io>XL3d zT5H`h-Q6Vm2EsFO zspnXyf<6FH-ANqD=s-4v+*Qd*%dEHgHl%`Ti@yQJ@4yl!a^|1=&Jsz5m!D8&VX_f^5JX z3mm}VUR4@8Lbv)q^s80xYMY5T1f;763q5XTILH{PL(a1WRBy$9a!-bM)E7BXE8;?E zID@@Fysj{n?(vqtN)FBDj;)mNrg3YKbzVRi0C|sDV@! TR?WJHPS5yvA4Q1UE literal 22904 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 diff --git a/packages/design/src/assets/icomoon/style.css b/packages/design/src/assets/icomoon/style.css index 331068c52..bf9a2aa62 100644 --- a/packages/design/src/assets/icomoon/style.css +++ b/packages/design/src/assets/icomoon/style.css @@ -1,6 +1,6 @@ @font-face { font-family: 'icomoon'; - src: url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SD6EAAAC8AAAAYGNtYXDQpuzmAAABHAAAAdxnYXNwAAAAEAAAAvgAAAAIZ2x5ZoX83HsAAAMAAADHIGhlYWQiJ3uPAADKIAAAADZoaGVhCOcFnQAAylgAAAAkaG10eMupIx4AAMp8AAAC3GxvY2EikVLaAADNWAAAAXBtYXhwANMCAwAAzsgAAAAgbmFtZZlKCfsAAM7oAAABhnBvc3QAAwAAAADQcAAAACAAAwP0AZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADygwPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQBwAAAAGwAQAAFACwAAQAgADDgAuBl4Mvg2+De4UXhaeLG4yLjOOU75VPlxeXI5crlzeXU5/fn/uhv6IToj+iW6Jzos+jB6MTo0Olu6YHpkuqM6pHqnerJ8AvwZPCb8J3w1fDa8NzxIPFx8XrxfPGb8fXyg//9//8AAAAAACAAMOAC4GXgy+Da4N7hReFp4sbjIuM45TvlU+XE5cflyuXN5dPn9+f96G/ohOiO6JbonOiz6MHoxOjQ6QDpgemS6ozqkeqd6snwCfBk8JnwnfDV8Nfw3PEg8XHxefF88Zvx8PKD//3//wAB/+P/1CADH6EfPB8uHywexh6jHUcc7BzXGtUavhpOGk0aTBpKGkUYIxgeF64XmheRF4sXhhdwF2MXYRdWFycXFRcFFgwWCBX9FdIQkxA7EAcQBg/PD84PzQ+KDzoPMw8yDxQOwA4zAAMAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAPAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAwAqACsD1gNVAAMABwAKAAABNSMVFzUjFQUJAQIqVFRU/lQB1gHWAVWsrKpWVoADKvzWAAQAVgBVA9YCqwAFAAkADQARAAABFwEnNxclNSEVExUhNQUVITUDlkD+1sJAgv2qAVSs/gACAP4AAcFA/tTAQIAsVFQBqlZWqlZWAAACAFYAAQOqA1UABAASAAABESERNwEyFhURFAYjIQcRNDYzA1b9VFYCViIyMSP9qqoxIwEBAgD9qlYCVDIi/gAjM6oDACIyAAACACoAqwPWAqsACwAuAAABMjY1NCYjIgYVFBYlIRUjFSM1IwYHDgEHBiMiJy4BJyY1NDc+ATc2MzIXHgEXFgEqIjQzIyIyMQEVAbpWqroNFxg/JyYqNS8vRRQUFBRFLy81KiYnPxgXAVUzIyI0NCIjM6ysqqomHx8tDQwUFEUvLjY1Ly5GFBQNDC0gHwAAAAACAID/1QOAA4EAFwAjAAABMhYVERQGIyEiJj0BMxUhESEVIzU0NjMTBxcHJwcnNyc3FzcDKiI0MyP+ViI0VgGq/lZWMyOqqqoqqqwqqqoqrKoDgTQi/QAjMzMjgFYCrFaAIjT+zKqsKqqqKqyqKqqqAAAAAAMAgP/VA4ADgQAXACMAZwAAATIWFREUBiMhIiY9ATMVIREhFSM1NDYzAzI2NTQmIyIGFRQWNxceAQ8BDgEjJw4BDwEOASsBIiY3Jy4BJwcGJi8BNDY/ATUnLgE/AT4BMxc+AT8BPgE7ATIWFRceARc3NhYfARQGDwEDKiI0MyP+ViI0VgGq/lZWMyMqIjIxIyI0M8UuAwQDKgMGAzgJFAkKAwYDVgMIAwgJFAk8AwgDKgEDMDADBAMqAwgDNgkWCQgDBgNWBgYKCRQJOAMGAyoBAy4DgTQi/QAjMzMjgFYCrFaAIjT91DMjIjQ0IiMzQCYDBgNKAwEWBg0DNgMHBwM2Aw0GEgMGA0gDBwYiLCIDBgNKAwEWBg0DNgMHBwM2Aw0GEgMGA0gDBgMiAAEA1gCBAyoC1QALAAABIREjESE1IREzESEDKv8AVP8AAQBUAQABgf8AAQBUAQD/AAAAAAADAIAAKwOAAysAAwAKACIAABMhJyEFBzMVMzUzEx4BFREUBiMhIiY1ETQ2PwE+ATMhMhYX2gJMKP4AAQLqlKyUggkLMyP9rCQyCwk6CRoPAgAPGgkC1Szs6lZWAaILHg/97CMzMyMCFA8eC0YKDg4KAAAAAAIA1gBVAyoDKwADAAoAADchFSE3ESMJASMR1gJU/ayqqgEqASqqq1asAQABKv7W/wAAAAAEAIAAKwOAAysAAwAzADcAOwAAJREhEQEjFTMVIxUUBisBFSM1IxUjNSMiJj0BIzUzNSM1MzU0NjsBNTMVMzUzFTMyFh0BMwU1IxU3ESERAtb+VAJWVlZWMSNWVlRWViIyVlZWVjEjVlZUVlYiMlb+qlSq/wDVAaz+VAEAVFZWIzFWVlZWMSNWVlRWViIyVlZWVjIiVqpUVKr/AAEAAAAABAAqAKsD1gKrAAsAFwAjADMAAAEyNjU0JiMiBhUUFgcyNjU0JiMiBhUUFic1IzUjFSMVMxUzNQEyFhURFAYjISImNRE0NjMDQBslJRsbJSWPGyUlGxslJaWAVoCAVgIqIjQzI/0AIjQzIwGrJRsbJSUbGyWAJRsbJSUbGyVWVICAVICAASo0Iv6sIzMzIwFUIjQAAAIAgAApA4ADVQAPABUAAAEmJy4BJyYnCQEGBw4BBwYHJRcJATcCADAwMGAwMDABgAGAMDAwYDAwMAE6Rv6A/oBGAQElJSZKJSYlASr+1iUmJUomJZP2Nv7WASo2AAAAAAIAVgBVA6oDAQAJACcAACUnNy8BDwEXBzclFBYzFRQGIyEiJj0BMjY1NCYjNTQ2MyEyFh0BIgYCmC6MtEJCto4umAFWMSMxI/1UIjIkMDEjMSMCrCIyIjLfrnQKqKgKdK5iaiMzqiMzMyOqMyMiNKoiNDQiqjQAAAEAqgBVA1YDAQAIAAABFSEXBwkBFwcDVv347jz+qgFWPO4B1VTwPAFWAVY88AAAAAEBKgErAtYCAQACAAABIQcBKgGs1gIB1gAAAAABASoBVQLWAisAAgAAATcXASrW1gFV1tYAAAAAAQCqAFUDVgMBAAgAAAkCJzchNSEnAgABVv6qPO79+AII7gMB/qr+qjzwVPAAAAAAAQCSAIEDgAK9AAUAACUBFwEnNwGAAcQ8/gDuPPkBxDz+AO48AAAAAAEA1gCBAyoC1QALAAABBxcHJwcnNyc3FzcDKu7uPO7uPO7uPO7uApnu7jzu7jzu7jzu7gADAKoBVQNWAgEACwAXACMAAAEyFhUUBiMiJjU0NiEyFhUUBiMiJjU0NiEyFhUUBiMiJjU0NgIAIjQzIyI0MwEjIjQzIyI0M/4jIjQzIyI0MwIBNCIjMzMjIjQ0IiMzMyMiNDQiIzMzIyI0AAADAaoAVQJWAwEACwAXACMAAAEyFhUUBiMiJjU0NhMyFhUUBiMiJjU0NjciJjU0NjMyFhUUBgIAIjQzIyI0MyMiNDMjIjQzIyI0MyMiNDMBATQiIzMzIyI0AQA0IiMzMyMiNFQzIyI0NCIjMwAEAFYAAQOqA0EABgAjADMAQwAAJSImNTMUBhMVFxUhNTc1NDc+ATc2NzU0NjMyFh0BFhceARcWFyYnLgEnJic3FhceARcWFwEGBw4BBwYHIzY3PgE3NjcCACQyqjHdVv1UVg0NMSQjLiUbGyUuIyQxDQ1UAgwLJxsbIDwmIB8uDQ4C/ZohGxsnDAwCVgIODS4fICYBMSMmLgHU1FYqKlbUMSwsRxkZDB4bJSUbHgwZGUctLBoqKCdGHh0YPB4kJVUwLzMBEhgdHkYnKCozLzBVJSQeAAIAqgBVA1YDAQAQABwAAAEyFx4BFxYdASE1NDc+ATc2NyImNTQ2MzIWFRQGAgArOzprJiX9VCUmazo7K0ZkY0dGZGMBVQsKKyAgKlZWKiAgKwoLVmNHRmZmRkdjAAAAAAMAKgBVA9YDAQAQABwAKAAAATIXHgEXFh0BITU0Nz4BNzYlMxUjFSM1IzUzNTMFIiY1NDYzMhYVFAYCgCs7OmsmJf1UJSZrOjv+q4CAVoCAVgGARmRjR0ZkYwFVCworICAqVlYqICArCgusVoCAVoDWY0dGZmZGR2MAAAACAFYAqwOqAqsABQALAAAlNyc3CQElBwkBFwcCbsbGPAEA/wD+6Dz/AAEAPMbnxMQ8/wD/ADw8AQABADzEAAAAAgDWAFUDKgMrAAMACgAANyEVIQkCMxEhEdYCVP2sAlT+1v7WqgEAq1YB1v7WASoBAP8AAAMAVgABA6oDVQADAAcAIwAAATUjFRMRIxETMhceARcWFRQHDgEHBiMiJy4BJyY1NDc+ATc2AipUVFQqWE5OcyIhISJzTk1ZWE5OcyIhISJzTk0CK1ZW/qoBAP8AAoAiIXRNTlhZTU50ISEhIXROTVlYTk10ISIAAAQAVgABA6oDVQADAB8AOwA/AAABNTMVAzI3PgE3NjU0Jy4BJyYjIgcOAQcGFRQXHgEXFhMyFx4BFxYVFAcOAQcGIyInLgEnJjU0Nz4BNzYTETMRAdZUKkY/Pl0bGxsbXT4+R0Y/Pl0bGxsbXT4+R1hOTnMiISEic05NWVhOTnMiISEic05NL1QCK1ZW/iobG10+PkdGPj9dGxsbG10/PkZHPj5dGxsDACIhdE1OWFlNTnQhISEhdE5NWVhOTXQhIv2AAQD/AAAABgCAANUDgAKBAAMABwALAA8AEwAXAAABIRUhETUhFSU1IRUlNTMVAzUzFSc1MxUBKgJW/aoCVv2qAlb9AFZWVlZWAoFW/qpWVqxUVKpWVv6qVlasVFQAAAMAqgABA1YDVQACAA4AHAAAATMnEzUjNSMVIxUzFTM1EwERFAYjISImNRM0NjMCKuzsgIBUgIBULAEAMyP+ACI0AjEjAivq/exUgIBUgIACVP8A/gAjMTEjAqwiMgAAAAIAKgArA6oDKwAFADsAAAEzFRcHJxMyFx4BFxYVFAcOAQcGIyImJzceATMyNz4BNzY1NCcuAScmIyIHDgEHBhUzBy8BMzQ3PgE3NgIAQJYgtipPRkZpHh4eHmlGRVBPijU8KGw+Pjc3URcYGBdRNzc+Pjc2URcXgKwEpoAeHmlGRQJVtFo0bgGqHx5oRkZPUEZGaB4eOzU+KS8XF1E2Nj8+NjdQFxgYF1A3Nj6sBqZPRkZoHh8AAAAGACr/1QPWA4EACwAYACUAMQA9AEoAAAE1IRUUBgcVIzUuAQMVMxEhETM1NDYzMhYFMxEhETM1NDYzMhYVATUhFRQGBxUjNS4BJTUhFRQGBxUjNS4BAxUzESERMzU0NjMyFgLWAQAwJlYlL6xW/wBWGBISGAFWVv8AVBoSEhj8qgEALiZWJTEBVgEAMCZUJTGqVP8AVhgSEhoBAVRUKkENtLQNQQJ+qv8AAQCqEhoavP8AAQCqEhoaEv2sVFQqQQ20tA1BKlRUKkENtLQNQQJ+qv8AAQCqEhoaAAAABgAqACsD1gMrAAMAEwAWABkAHAAfAAAlESERATIWFREUBiMhIiY1ETQ2MwEHJwMVJyUXBwEXIwOA/QADACI0MyP9ACI0MyMB1lZWqmoCampq/wBWrH8CWP2oAqw0Iv2sIzMzIwJUIjT91mxsAQCsVlZWVgFsbAAAAgBWAAEDqgNVAAkAJQAAJSc3LwEPARcHNxEyFx4BFxYVFAcOAQcGIyInLgEnJjU0Nz4BNzYCtDCg0lJS0qAwtFhOTnMiISEic05NWVhOTnMiISEic05Nq86KEsDCEIrObAI+IiF0TU5YWU1OdCEhISF0Tk1ZWE5NdCEiAAIAB//AA/kDkAAiAFUAABMiJicuATcBPgEzOAExMhYXARYGBwYmJwEuASMiBgcBDgEjASMiJj0BIxUUBisBIiY1ETQ2MzIWFREUFjsBNTQ2OwEyFh0BMzI2NRE0NjMyFhURFAYjGgUJBAcBBwHEChwPDxwKAcQIAgcIFQf+OwMIBAQIA/48BAoFAwDNCw9mDwvNHy0PCgsPDwq0DwqaCg+0Cg8PCwoPLR8BWgMDBxUIAfQMDAwM/gwIFQcHAQgB9AMEBAP+DAQE/mYPC7OzCw8tIAGZCw8PC/5nCw+zCw8PC7MPCwGZCw8PC/5nIC0AABsAAP/AA80DvwADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AEMARwBLAE8AUwBXAFsAXwCAAIcAjwAAATMVIxUzFSMVMxUjFTMVIxUzFSM1MxUjATMVIxUzFSMVMxUjFTMVIxUzFSM1MxUjAzMVIxUzFSMVMxUjFTMVIxUzFSM1MxUjEzMVIxUzFSMVMxUjFTMVIxUzFSM1MxUjBSMRNCYvATU0JicuAQcFDgEVESMiBhUUFjMhMjY1NCYjAx4BFREhEQU0NjclESERAs0zMzMzMzMzMzMzMzP+ZjMzMzMzMzMzMzMzM2YzMzMzMzMzMzMzMzPNMzMzMzMzMzMzMzMzAhkZJxvyBQUFDAb+MRwnGQsPDwsDmQsPDwtsDRL/AP4AEwwBrv4zAo0zNDMzMzM0mTOZMwHNMzQzMzMzNJkzmTMBzTM0MzMzMzSZM5kzAc0zNDMzMzM0mTOZM80Csx41CVBUBwoEBAICiwg1Hf0ZDwoLDw8LCg8C3wUaDf1NAylCDBkEgfxvAucAAAAAAwAC/8AD/wO/AB8AJQA1AAABLgEjIgYHAQ4BBwMGFhceATMyNjclPgE3AT4BNTQmJwEHNwEXAQEHJzc+ATMyFhceARUUBgcD0hU4Hx44Ff1zAgMBZgMDBQQKBQIEAgEaAwQCAo0WFxcW/VPhUgI3j/3JAokujy4OJRQVJQ4ODw8OA5IWFxcW/XMCBAP+5gcOBQQEAQFmAQMCAo0VOB4fOBX8xFLhAjeP/ckCiS6PLg4QEA4OJRUUJQ4AAAACAAAAjQQAAvMALwBmAAAlISInLgEnJjU0Nz4BNzYzMhYXPgE3PgEzMhYVFAYHOgEzMhceARcWFRQHDgEHBiMBIgcOAQcGFRQXHgEXFjMhMjY1NCYjIgYHBiYnJjY3PgE1NCYjIgYHDgEHFAYHBiYnLgEnLgEjAzT9/z84OFQYGBgYVDg4Pz5xKwQIBRZBJT9aBAUCBQMqJSU4EBAQEDglJSr9/zUuL0YUFBQURi8uNQIBP1paPw4aDQgRBQUBBw0PPCoZKw8JCgEKCAgQBAQKBCVkN40YGFQ4N0BANzhUGBgvLAgOBx0hWj8OGgwQEDglJSsqJSY3EBACMxQURi4vNTUvLkYUFFo/QFoFBQMGBwgSBg4lFCo8FhQMGw8IDQICBQcGDAUpLQAAAAAFAAAAJgPNA8AANgBfAIoAtQDgAAABLgEnJicuAScmIyIHDgEHBgcOAQcOARURFBYXHgEXFhceARcWMzI3PgE3Njc+ATc+ATURNCYnBTY3PgE3NjMyFx4BFxYXHgEVFAYHBgcOAQcGIyInLgEnJicuATU0NjcBBgcOAQcGIyInLgEnJicuAT0BHgEXFhceARcWMzI3PgE3Njc+ATcVFAYHNQYHDgEHBiMiJy4BJyYnLgE9AR4BFxYXHgEXFjMyNz4BNzY3PgE3FRQGBzUGBw4BBwYjIicuAScmJy4BPQEeARcWFx4BFxYzMjc+ATc2Nz4BNxUUBgcDnRM1IiEnJlUtLi8vLS1VJichIjUTGBgYGBM1IiEnJlUtLS8vLi1VJichIjUTGBgYGP0KICUlUSwrLS4rLFElJR9FMDBFHyUlUSwrLi0rLFElJSBFLy9FAn4fJSVRLCsuLSssUSUlIEUvEzQgIScmVS0tLy8uLVUmJyEgNBMwRR8lJVEsKy4tKyxRJSUgRS8TNCAhJyZVLS0vLy4tVSYnISA0EzBFHyUlUSwrLi0rLFElJSBFLxM0ICEnJlUtLS8vLi1VJichIDQTMEUDbgwWCgkHBwoCAwMCCgcHCQoWDBAkFP2aFCQPDRYJCQgHCgIDAwIKBwgJCRYNDyQUAmYUJBAGCQcHCQIDAwIJBwcJEyYJCCYTCQcHCQMCAgMJBwcJEyYICSYT/RYJBgcKAgICAgoHBgkTJgmDCxUJCgcHCgIDAwIKBwcKCRULgwkmE80JBwcJAgMDAgkHBwkTJgmDDBUJCQcHCgIDAwIKBwcJCRUMgwkmE80JBwcJAgMDAgkHBwkTJgmDDBUJCQcHCgMCAgMKBwcJCRUMgwkmEwAPAAD/wAQAA8AADQAbACkAXgBuAH8AlgCmALIAvgDKANYA4gDuAPoAAAEjIiY1NDY7ATIWFRQGByMiJjU0NjsBMhYVFAYHIyImNTQ2OwEyFhUUBhM0Ji8BLgEjISIGDwEOAR0BFBYXDgEdARQWFw4BHQEUFjMhMjY9ATQmJz4BPQE0Jic+AT0BBxUUBiMhIiY9ATQ2MyEyFiUiJj0BNDYzITIWHQEUBiMhEz4BMyEyFh8BHgEXJiIjISoBBz4BPwEBFAYjISImPQE0NjMhMhYVJRQGIyImNTQ2MzIWFxQGIyImNTQ2MzIWFxQGIyImNTQ2MzIWFxQGIyImNTQ2MzIWJRQGIyImNTQ2MzIWFRQGIyImNTQ2MzIWFRQGIyImNTQ2MzIWA4AzCw8PCzMLDw8LMwsPDwszCw8PCzMLDw8LMwsPD3URDIAOORz+ABw5DoAMEQoKCgoKCgoKLSADZiAtCgoKCgoKCgozDwv8mgsPDwsDZgsP/IALDw8LA2YLDw8L/Jp8ByIOAgAOIgd/AQIBAgMC/JoCAwIBAgF/AwQPC/yaCw8PCwNmCw/8zQ8LCw8PCwsPZg8LCg8PCgsPZg8KCw8PCwoPZw8LCg8PCgsPATMPCwoPDwoLDw8LCg8PCgsPDwsKDw8KCw8B8w8LCg8PCgsPzQ8LCw8PCwsPzA8KCw8PCwoPAeYYPxXbGCEhGNsVPxhmDxoLChoPZg8aCgsaD5kgLS0gmQ8aCwoaD2YPGgoLGg9mzWYLDw8LZgsPD0IPC2YLDw8LZgsPAa0NExMN2gIDAgEBAgMC2vygCw8PC5kLDw8LmgsPDwsLDw8LCw8PCwsPDwsLDw8LCw8PCwsPDwsLDw/CCw8PCwoPD9cLDw8LCw8P2AoPDwoLDw8AAAADAAD/wAPNA7wAOQBiAHkAAAUiJiMmJy4BJyYnJicuAScmNTQ2MzI3PgE3Njc2MhcWFx4BFxYzMhYVFAcOAQcGBwYHDgEHBgciBiMBFhceARcWFxYXHgEXFhc2Nz4BNzY3Njc+ATc2Ny4BJy4BJw4BBw4BBwEiJi8BJjQ3NjIfATc2MhcWFAcBDgEjAeYCBAIjJydPJiUiHiAfMxEQDws2QUJ/NTUcBw8HHDU1f0FCNgsPEBEzIB8eIiYmTicnIwIFAv5OAhAQMB0dHCIkJEYgIBoaISBGJCQiHB0dMBAQAj6CMjZnJCNnNjKCPgF/BQkEZggIBxUIVO4IFQcICP8ABAkFQAEMGRlFKysxLTs6klZVYwoPERAuGhoTBAQTGhouEBEPCmNVVpI6Oy0xKytFGRkMAQM0WU5NhDY1KTIoKT0VFAoKFBU9KSgyKTU2hE1OWQQkEhUwFRUwFRIkBP5MBANnBxYHCAhU7gcHCBUI/wADBAADAJr/8wMzA1oAIQArADsAAAEjNTQnLgEnJiMiBw4BBwYdASMiBhURFBYzITI2NRE0JiMlNDYzMhYdASE1ARQGIyEiJjURNDYzITIWFQLmGRISPyoqMC8qKj8SEhofLS0fAgAgLS0g/k1pSktp/pkBzQ8L/gAKDw8KAgALDwImTTAqKj4SExMSPioqME0tH/5mIC0tIAGaHy1NSmlpSk1N/c0LDw8LAZoKDw8KAAAAAAYAGv/AA+YDjQArAEIAVQBhAG0AeQAAATQnLgEnJiMiBgcOAQcxAQ4BBwMGFhceATM6ATMlPgE3ATgBOQE+ATc+ATUjFAYPASYnLgEnJic3PgEzMhceARcWFQE3MjYzMhceARcWFRQGDwE0JiMBPgEzMhYXAS4BJwEDAR4BFRQGBwEuAScFMjYzMhYVHAEVBzcD5hQURS8vNR03GgIDAv3jAwMBMwEEBAQJBQECAQFmBAgDAhwCAwEMDDMJCTsCFhZJMDE3OxQqFislJTgQEPy0FQgOCC8qKj8SEgEBmEs0AbkLFgwpSR7+cSNXMAF8rgGPFxsCAv6EAiId/u0CBAEgLWIOAo01Li9GFBQNDAEDAf3jAwcE/pkGCwUDBDMBBAMCHAIEAhk4HRYrFDo3MDFJFhYCOgkKERA3JiUq/gCYARISPioqMAcPBxY1SwJIAgMbGP5xHSMBAXz+HwGPHkkpCxcL/oQxViObAS0gAgQBDmEAAAIAAP/zA5oDjQAvAEAAAAEiBw4BBwYdASEiBhURFBYzITI2NRE0JisBNTQ2MzIWHQEUFjMyNj0BNCcuAScmIwMyFhURFAYjISImNRE0NjMhArMvKio/EhL+gCAtLSACACAtLSBNaUpKaQ8LCw8TEj4qKjBmCg8PCv4ACw8PCwIAA40SEj8qKjCALR/+ZiAtLSABmh8tgEtpaUszCg8PCjMwKio/EhL+Zg8K/mYLDw8LAZoKDwAAAAAEABD/zwPwA7AAhwDbAOcA8wAABSImIy4BJy4BNz4BNTQmIyIGBwYmJy4BJyY2Nz4BNTQmJy4BNz4BNz4BFx4BMzI2NTQmJyY2Nz4BNzYWFx4BMzI2Nz4BFx4BFx4BBw4BFRQWMzI2NzYWFx4BFxYGBw4BFRQWFx4BBw4BBw4BJy4BIyIGFRQWFxYGBw4BBwYmJy4BIyIGBw4BIzcyFhc+ATcuATU0NjMyFhc+ATcuATU0NjcuAScOASMiJjU0NjcuAScOASMiJicOAQceARUUBiMiJicOAQceARUUBgceARc+ATMyFhUUBgceARc+ATciJjU0NjMyFhUUBgMiBhUUFjMyNjU0JgGHAgMCIkIfCQUFBgY8Kg0ZCwoUBRIbCQMKCh8mJh8KCgMJGxIFFAoLGQ0qPAYGBQUJH0IiChIDCjYhITULAxIKIkIfCQUFBgY8Kg0ZCwkUBhIbCQIJCh8mJh8KCQIJGxIGFAkLGQ0qPAYGBQUJH0IiChIDCzUhITYKAw0IeStJFBQnEgQEWj8NGgwJEAYlLS0lBhAJDBoNP1oEBBInFBRJKytJFBQnEgQEWj8NGgwJEAYlLS0lBhAJDBoNP1oEBBInFBRJK0BaWkBAWlpAKjw8Kio8PDEBCRsSBhQJCxkNKjwGBgUFCR9CIgoSAws1ISE2CgMSCiJCHwkFBQYGPCoNGQsKFAUSGwkDCgofJiYfCgoDCRsSBRQKCxkNKjwGBgUFCR9CIgoSAwo2ISE1CwMSCiJCHwkFBQYGPCoNGQsJFAYSGwkCCQofJiYfCAqLLSUGEAkMGg0/WgQEEicUFEkrK0kUFCcSBARaQAwaDAkQByYsLCYHEAkMGgxAWgQEEicUFEkrK0kUFCcSBARaPw0aDAkQBiUtzFpAQFpaQEBaAQA8Kio8PCoqPAAAAAcAZv/AA2YDwAAiACwANgBGAFQAYgBwAAABIzU0JisBIgYdASMiBh0BFBYXERQWMyEyNjURPgE9ATQmIyU0NjsBMhYdASMBISImNREhERQGExQGIyEiJj0BNDYzITIWFQciBhURFBYzMjY1ETQmIyIGFREUFjMyNjURNCYjIgYVERQWMzI2NRE0JgMatC0fZyAtsyAtHRctHwIAIC0XHC0f/oAPCmcKD5kBTP4ACg8CMw9CDwr9mQoPDwoCZwoPswsPDwsLDw+lCg8PCgsPD6QLDw8LCg8PA1oZIC0tIBktIDMZKAj9fCAtLSAChAgoGTMgLRkLDw8LGfyZDwsCgP2ACw8C5wsPDwszCg8PCrMPC/4ACw8PCwIACw8PC/4ACw8PCwIACw8PC/4ACw8PCwIACw8ACQAA//MEAAPAAA0AGwBCAEYAXwBvAH0AiwCZAAAlIyImNTQ2OwEyFhUUBhMhIiY1NDYzITIWFRQGFwMuASc1NCYnLgEjISIGBw4BHQEOAQcDDgEdARQWMyEyNj0BNCYnAxEhEQcVFBYzITI2PQETHgEXIiYjISIGIz4BNxMBFAYjISImPQE0NjMhMhYVASEiJjU0NjMhMhYVFAYnISImNTQ2MyEyFhUUBichIiY1NDYzITIWFRQGAk2aCg8PCpoKDw/2/WYKDw8KApoKDw+SigYXDwQDBAkF/cwFCQQDBA8XBooKDS0gA2YgLQ0K6f4AMw8KAjQKD4cCAgEDBgP8mgMGAwECAocDAA8L/JoLDw8LA2YLD/7m/poLDw8LAWYLDw8L/poLDw8LAWYLDw8L/poLDw8LAWYLDw+NDwoLDw8LCg8BAA8KCw8PCwoPFAE8DhkIwgYJBAMEBAMECQbCCBkO/sQWPhjNIC0tIM0YPhYCFP6ZAWfzjQsPDwuN/ssDBgMBAQMGAwE1/aYLDw8LzQoPDwoBTQ8KCw8PCwoPZg8LCg8PCgsPZg8LCw8PCwsPAAAAAAkAM//AA5oDwAAtAE0AZgB+AIwAmgCoALYAxAAABSEiJjURNDY7ATIWFRQGKwEiBhURFBYzITI2NRE0JisBIiY1NDY7ATIWFREUBgM4ATEhIiY1NDY3PgE3PgEzMhYXHgEXHgEXMBQxFAYjJSEuAScuATEiJjU0JiMiBhUUBiMwBgcOATciJicuATU0Njc+ATMyFhceARUUBgcOARMhIiY1NDYzITIWFRQGByEiJjU0NjMhMhYVFAYXISImNTQ2MyEyFhUUBgchIiY1NDYzITIWFRQGBSEiJjU0NjMhMhYVFAYDTf0zIC0tIDMLDw8LMwsPDwsCzQoPDwozCw8PCzMgLS26/mcLDyIfCxQICUYvL0cICRQKICEBDwv+gwFhBBANDxoLDy0gHy0PCxoPDRCsBQkEAwQEAwQJBQUKAwQEBAQDCvv+AAoPDwoCAAsPD3H+ZgoPDwoBmgsPD1v+AAoPDwoCAAsPDwv+AAoPDwoCAAsPD/71/wAKDw8KAQALDw9ALSACzR8tDwoLDw8K/TMLDw8LAs0KDw8LCg8tH/0zIC0DAA8LJjoQBQcBLTw8LQEHBRA5JgELDzMOFAcHAw8LIC0tIAsPAwcHFCUEBAQJBQUKAwQEBAQDCgUFCgMEBP8ADwsLDw8LCw+ZDwoLDw8LCg9nDwsLDw8LCw9mDwsKDw8KCw9mDwoLDw8LCg8AAAoAAAAmBAADWgAPACAALgA8AEoAWABmAJAApACwAAAlISImNRE0NjMhMhYVERQGASIGFREUFjMhMjY1ETQmIyEFISImNTQ2MyEyFhUUBgchIiY1NDYzITIWFRQGByEiJjU0NjMhMhYVFAYHISImNTQ2MyEyFhUUBgchIiY1NDYzITIWFRQGAS8BIycHIw8BFwcfARwBMREUFhcWNj8BFx4BMzI2Nz4BNREwJjU/ASc3Bz8BMzcXMx8BBxcPASMHJyMvATcTJiIPATUzFzczFScDs/yaIC0tIANmIC0t/HoLDw8LA2YLDw8L/JoBmf7NCg8PCgEzCw8PC/7NCg8PCgEzCw8PC/7NCg8PCgEzCw8PC/7NCg8PCgEzCw8PPv8ACg8PCgEACw8PAdkqEDMqKjMQKhAQKgcICAcPBTs7AwoFAgUDBwkBByoQEPEZCR8ZGR8JGQkJGQkfGRkfCRkJYwcWByEJKioJISYtIAKaIC0tIP1mIC0DAA8K/WYKDw8KApoKD5kPCgsPDwsKD5oPCwoPDwoLD2YPCgsPDwsKD2cPCwsPDwsLD2YPCwoPDwoLDwGxHjEeHjEeMTEeFQEB/wAIDQMDAwU7OwMEAQEDDQgBAAEBFR4xMRQTHRISHRMdHRMdEhIdEx3++QcHIqkeHqkiAAAABAAA/8AEAAPAAA8AIAA5AD0AAAUhIiY1ETQ2MyEyFhURFAYBIgYVERQWMyEyNjURNCYjIQEiJicuATURNDY3NjIXAR4BFRQGBwEOASMTES0BA7P8miAtLSADZiAtLfx6Cw8PCwNmCw8PC/yaAQADBgMGCAgGBg4GAZoFBgYF/mYDBwQZAVP+rUAtIANmIC0tIPyaIC0DzQ8L/JoLDw8LA2YLD/0AAQIDDAcCNAcMAwME/uYECwYGDAP+5gICAhz+LunpAAQAAABXBAAC9gAcACcANwBIAAAlOAExIiYvAS4BPQE0Nj8BPgEzMhYVERQGBw4BIwMHDgEdARQWHwERASEiJjURNDYzITIWFREUBgEiBhURFBYzITI2NRE0JiMhA9QKEgqwFRwcFbAKEgoQHAUFBhIKB68MEhIMr/6A/gAgLS0gAgAgLS394AsPDwsCAAoPDwr+AFcHCIwRPBuZGzsRjQgHGhz9zQsSBwgKAmeMCScPmRAmCosCL/2cLR8CACAtLSD+AB8tAmYPC/4ACg8PCgIACw8AAgAAAFoDpgLzABQAKQAAJSEiJjURNDYzITIWHwEWFA8BDgEjASIGFREUFjMhMjY/ATY0LwEuASMhAoD9zSAtLSACMxs7Er4UFL4SOxv9zQsPDwsCMw8nCr8HB78KJw/9zVotHwIAIC0cFOUXQRflFRsCZg8L/gAKDxIM5AobCeUMEgAACgAAAFoEAAMmAA8AIAA6AEgAVgBlAHQAgQCNAJsAACUhIiY1ETQ2MyEyFhURFAYBIgYVERQWMyEyNjURNCYjIQE4ATEhIiY1NDY3PgEzMhYXHgEVHAExFAYjJzMuAScuASMiBgcOAQcBISImNTQ2MyEyFhUUBgcjIiY1NDY7ATIWFRQGIxUjIiY1NDY7ATIWFRQGIyUiJjU0NjMyFhUUBiM1IgYVFBYzMjY1NCYBISImNTQ2MyEyFhUUBgOz/JogLS0gA2YgLS38egsPDwsDZgsPDwv8mgFm/wAKDwUODj46Oz0ODQcPC+DBAgMDDC0gIC0MAgQBAnr/AAsPDwsBAAoPDz3NCw8PC80KDw8KzQsPDwvNCg8PCv4ZKjw8Kis8PCsVHh4VFR4eAgX/AAsPDwsBAAoPD1otHwI0Hy0tH/3MHy0CmQ8K/cwKDw8KAjQKD/4ADwsCJxgVKioVFSQGAQELDzMEBwMTExMTAwcEAQAPCwsPDwsLD2YPCwoPDwoLD2YPCgsPDwsKD2Y8Kis8PCsqPJoeFhUeHhUWHv6ZDwsKDw8KCw8AAAQAAP/AA80DwAAbADcAUABsAAABIicuAScmNTQ3PgE3NjMyFx4BFxYVFAcOAQcGAyIHDgEHBhUUFx4BFxYzMjc+ATc2NTQnLgEnJgEhIiY1NDY3PgE3PgEzMhYXHgEXHgEVFAYBIgcOAQcGBw4BMRQWMyEyNjUwJicmJy4BJyYjAeY6MzNNFhYWFk0zMzo7MzNNFhYWFk0zMzsvKio/EhISEj8qKi8wKio/EhISEj8qKgFq/M0gLRAvG0ouOItRUos4LkobLxAt/kZDOjlhJSYbJw8PCwMzCw8PKBomJmA6OkMBjRYWTTMzOjszM00WFhYWTTMzOzozM00WFgIAEhI/KiowLyoqPxISEhI/KiovMCoqPxIS/DMtIAJpPiQ5FBkaGhkUOSQ+aQIgLQFmCQkjGxojNFgLDw8LWDQjGhsjCQkAAAcAAAAmBAADJgAZAC0ASgBWAH0AiQCWAAAlISImNTQ2Nz4BNz4BMzIWFx4BFx4BFRQGIyUUFjMhMjY1NCYnLgEjIgYHDgEVASInLgEnJjU0Nz4BNzYzMhceARcWFRQHDgEHBiMRIgYVFBYzMjY1NCYBIyImNTQ2Nz4BNz4BMzoBMx4BBxQGJyoBIyIGFRQWOwEyFhUUBiMTIiY1NDYzMhYVFAYDIgYVFBYzMjY1NCYjA7P9zSAtDCQUNiIqZTw7ZikiNxQjDC0g/bMPCwIzCw8LGyWKXl+JJhsLATQrJSU4EBAQEDglJSsqJSY3EBAQEDcmJSpAWlpAP1pa/g2ZIC0JGQ4oGB5IKgcNBwsOARALBgwGlTgPC5oKDw8KGUBaWkBAWlpAKjw8Kio8PComLSACSisZJw4RERERDicZK0oCIC1NCw4PCgE4ICwuLiwgOAEBGhAQOCUlKyolJjcQEBAQNyYlKislJTgQEAFmWj9AWlpAP1r9My0gAjkhFB4LDQ0BEAoLDgF7BQsODwsLDwE0Wj9AWlpAP1oBADwrKjw8Kis8AAgAAAAmBAADJgAdAE0AdACAAI0AqQC2ANYAACUjIiY1NDY3PgE3NhYXFgYHDgEVFBY7ATIWFRQGIwMiJicuATU0Nz4BNzYzMhceARcWFRQGBw4BJy4BNzQ2NTQmIyIGFRQWFxYUBw4BIwEjIiY1NDY3PgE3PgEzOgEzHgEHFAYnKgEjIgYVFBY7ATIWFRQGIxMiJjU0NjMyFhUUBgMiBhUUFjMyNjU0JiMBIicuAScmNTQ3PgE3NjMyFx4BFxYVFAcOAQcGAyIGFRQWMzI2NTQmIxcjNTQmIyIGHQEjIgYVFBY7ARUUFjMyNj0BMzI2NTQmAk3NIC0GEA9EQgoTAwQJCmQlDwvNCg8PCjIFCQQdHxAQOCUlKyolJTgQEAEBARELCg0CAVpAP1oXFgcHBAkF/suZIC0JGQ4oGB5IKgcNBwsOARALBgwGlTgPC5oKDw8KGUBaWkBAWlpAKjw8Kio8PCoCGjAqKj8SEhISPyoqMC8qKj8SEhISPyoqL0tpaUtKaWlKZk0PCgsPTQoPDwpNDwsKD00LDw8mLSADLh8dRhcECQoKEwQkcgQKDw8LCw8BmwQEHUspKiUlOBAQEBA4JSUqCA4ICg0CARELBQsGP1paPx84FggVBwQE/mUtIAI5IRQeCw0NARAKCw4BewULDg8LCw8BNFo/QFpaQD9aAQA8Kyo8PCorPP3MExI+KiowLyoqPxISEhI/KiovMCoqPhITAZppSkppaUpKaZpNCw8PC00PCgsPTQoPDwpNDwsKDwAKAAD/8wPNA40ADwATACMAKAA4ADwATABQAGAAZAAAFyMiJj0BNDY7ATIWHQEUBiczNSMFIyImNRE0NjsBMhYVERQGJzM1IxUFIyImNRE0NjsBMhYVERQGJzMRIwEjIiY1ETQ2OwEyFhURFAYnMxEjASMiJjURNDY7ATIWFREUBiczESOAZgsPDwtmCw8PWDMzARpnCg8PCmcKDw9XMzMBGmcKDw8KZwoPD1czMwEZZgsPDwtmCw8PVzMzARlmCw8PC2YLDw9YNDQNDwuZCw8PC5kLDzNnmg8LAQAKDw8K/wALDzPNzTMPCwGZCw8PC/5nCw8zAWf+Zg8LAmYLDw8L/ZoLDzMCNP2ZDwsDZgsPDwv8mgsPMwM0AAAAAAgAh//AA3gDwAAYADAAPgBdAHwAkwCqALwAACUhIiY9ATQ2MzIWHQEhNTQ2MzIWHQEUBiMRIiY9ASEVFAYjIiY9ATQ2MyEyFh0BFAYDIyImNTQ2OwEyFhUUBhchIiY9ATQ2MzIWHQEUFjMhMjY9ATQ2MzIWHQEUBiMTIiY9ATQmIyEiBh0BFAYjIiY9ATQ2MyEyFh0BFAYjASImLwEmND8BNjIXFhQPARcWFAcOASMhIiYnJjQ/AScmNDc2Mh8BFhQPAQ4BIyEiJicuATcTPgEXHgEHAw4BIwKz/poLDw8LCg8BNA8KCw8PCwoP/swPCgsPDwsBZgsPD6Q0Cg8PCjQKDw/C/jQgLQ8KCw8PCwHMCw8PCwoPLSA0Cw8PC/40Cw8PCwoPLSABzCAtDwr+GQUJBJoHB5oIFQcICIeHCAgDCgUBmgUKAwgIh4cICAcVCJkICJkECQX+5gMFAwoGBJoFFAkKBgSaAw0HjQ8KNAoPDwoaGgoPDwo0Cg8CMw8LTEwLDw8LZgsPDwtmCw/9Zg8LCw8PCwsPZi0gzQoPDwrNCw8PC80KDw8KzSAtAwAPC5kLDw8LmQsPDwuZIC0tIJkLD/5mBASZCBUImQgIBxUIh4gHFgcEBAQEBxYHiIcIFQcICJkIFQiZBAQCAQUUCQE0CQcFBRQJ/s0HCAAFAGb/wAOaA8AADwAgAC4APgBCAAAFISImNRE0NjMhMhYVERQGASIGFREUFjMhMjY1ETQmIyEBIyImNTQ2OwEyFhUUBjchIiY1ETQ2MyEyFhURFAYlIREhA039ZiAtLSACmiAtLf1GCg8PCgKaCg8PCv1mAWc0Cg8PCjQKDw/2/cwKDw8KAjQKDw/93AIA/gBALSADZiAtLSD8miAtA80PC/yaCw8PCwNmCw/8mQ8LCw8PCwsPZw8KApoLDw8L/WYKDzMCZgAAAAYAAP/zBAADjQAPABoAJAAwADwASAAAASEiBhURFBYzITI2NRE0JgUhMhYdASE1NDYzASEiJjURIREUBgEUBiMiJjU0NjMyFhcUBiMiJjU0NjMyFhcUBiMiJjU0NjMyFgOz/JogLS0gA2YgLS38egNmCw/8Zg8LA2b8mgsPA5oP/NwPCwsPDwsLD2YPCwoPDwoLD2YPCgsPDwsKDwONLSD9ACAtLSADACAtMw8LgIALD/zMDwsCTf2zCw8C5wsPDwsKDw8KCw8PCwoPDwoLDw8LCg8PAAAAAAIAnP/AAzEDiAAhADMAAAUiJicuATcTIyImJyY2NwE+ARceAQcDMzIWFxYGBwEOASMDMzIWFx4BBwMBIyImJy4BNxMBGgQIAwgFBKb1CAwDAwMFAgAHEggHBQOm9QcNAwMDBf4ABAkFKd8GDAMEAQN+AXPfBgwDBAEDfkACAwUSCAF2CAcIDwUCAAcCBgUSCP6KCAgHDwX+AAQEAc0GBgUNBv7kAXMGBgUNBgEcAAAABgAA/8AD/wO/ACMAZgByAH8AiwCXAAAFISImNRE0Njc2Fh8BFgYHBiYvAREhJy4BNz4BHwEeAQcOASMDNCYjIgYVFBYXAw4BByc+ATU0JiMiBhUUFhcHKgEjIgYVFBYzMjY1NCYnNzoBMzI2NxcOARUUFjMyNjU0JicTMjY1JzIWFRQGIyImNTQ2ATIWFRQGIyImNTQ2MwMiJjU0NjMyFhUUBiUiJjU0NjMyFhUUBgPm/DQLDwsJCBAENAQGCgkUBQMDRwYJBwUFFAlnCAcCAg4JgC0fIC0QDWsLFAiPAgItICAtDApZAgUDHy0tHyAtCwpZAgUCCxUJjwMCLSAgLRAObB8sTAoPDwoLDw/+cQsPDwsLDw8LmgoPDwoLDw8BjwsPDwsLDw9ADwsDzAkOAgIHCGcJFAUFBwoF/LkDBRQJCgcFMwQRCAkLAxofLS0fEx8L/r0BBgVyBg0HHy0tHxAbC7EtIB8tLR8QGwuxBgVyBg0GIC0tIBIgCgFELSAZDwoLDw8LCg//AA8KCw8PCwoP/poPCgsPDwsKD2YPCwoPDwoLDwAAAAgAAP/AA80DjQAPACAAMAA0AEQASABYAFwAAAUhIiY1ETQ2MyEyFhURFAYBIgYVERQWMyEyNjURNCYjIQEjIiY1ETQ2OwEyFhURFAYnMxEjASMiJjURNDY7ATIWFREUBiczESMBIyImNRE0NjsBMhYVERQGJzM1IwOA/M0gLS0gAzMgLS38rQsPDwsDMwsPDwv8zQEAZwoPDwpnCg8PVzMzARpnCg8PCmcKDw9XMzMBGWYLDw8LZgsPD1czM0AtIAMzIC0tIPzNIC0Dmg8L/M0LDw8LAzMLD/0ADwoBzQsPDwv+MwoPMwGZ/jQPCgJnCg8PCv2ZCg8zAjP9mg8KAQALDw8L/wAKDzPNAAAEAAAAJgPNAyYAHQAtAFcAhQAAJSImJyY0NzY3PgE3Njc2FhceAQcGBw4BBwYHDgEjNw4BBwYUFx4BMzI2Nz4BNxMmJy4BJyYjIgcOAQcGBwYHDgEHBhUUFhceATMhMjY3PgE1NCcuAScmJxMhLgEnMzI2NTQmKwE2Nz4BNzY3FRQWMzI2PQEWFx4BFxYXIyIGFRQWOwEOAQcB5g8cCxYWCCMkVScnDwgSBwYCBQsbGzwaGgcLHBBzNEsGBwcECQUGCQQFNyTlIigoVy8vMTAvL1gnKCMiGxokCgkqKAQLBgL/BgsEKCoJCiQbGiMa/R0dIQMZCg8PChkFISJuSEhTDwoLD1JJSG4hIgUZCw8PCxkDIR3ADAoXQBYIGho8GxsKBQEHBhMHDycnViMkBwsMvyQ2BggVBwQEBAQGSzMBGSIbGiUJCQkJJBsbIiMnKFcvLzFJiTwGBgYGPIlJMS8vVygnI/3CLmg2DwsLD1JISW0iIgQYCw8PCxgEIiJtSUhSDwsLDzZoLgAAAAAFAAAAJgPNAyYASABUAGAAbAB4AAABNTQmIyE1PgE1NCYjIgYVFBYXFSEiBh0BDgEVFBYzMjY1NCYnNTQ2MyEVDgEVFBYzMjY1NCYnNSEyFh0BDgEVFBYzMjY1NCYnATQ2MzIWFRQGIyImAxQGIyImNTQ2MzIWBRQGIyImNTQ2MzIWBSImNTQ2MzIWFRQGA2YtH/7mLDpLNTVLOyz+5iAtKztLNTVLOysPCgEaLDtLNTVLOiwBGgoPLDpLNTVLOyz+NC0fIC0tIB8tzS0gIC0tICAtAWYtIB8tLR8gLQEaIC0tICAtLQEkTyAtaQlGLjVLSzUuRglpLSBPCUYvNUtLNS9GCU8LD2kJRi81S0s1L0YJaQ8LTwlGLzVLSzUvRgkBgiAtLSAfLS3+Hx8tLR8gLS0gHy0tHyAtLWwtHyAtLSAfLQAFAA8AJgPvA1oAQwBnAHQAhQCSAAABLgEnJgYHLgEjIgcOAQcGBwYHDgEHBhUUFhUOAQcGFhceATMyNjc+ATceATMyNz4BNzY3Njc+ATc2NTQmNT4BNz4BJyUyFx4BFxYXBgcOAQcGBwYHDgEHBgcmJy4BJyY1NDc+ATc2MwEmNjceARceARcGJicFIiYnPgE3PgE3BgcOAQcGIwEuASc2FhcWBgcuAScD7w85KCJSLzFwOykoJ0ohIh0dFhYfCAgBICwMDwEQFFU+ESUUCBEJMXA7KScoSiEiHR0WFh8ICAEGCwU5IRr+EUY9PmAeHwcZHR5CJCQnJygnTSUmIyIcGycLChwcYUJBSv49ERspDDgqBAcDQ1wQAcMnSiFAiENEdzEHHx9fPj5FASIEBwNDXBAQGikMOCoC3hojBgYECiAhCAgfFhYdHSIhSignKQUIBSRFICZDGiMkAwMBAwEfIQgIHxYWHR0iIUonKCkECQUGDgZIfS1IGRlXOjtEGxobMxgYFxYUEyAMDAgZHyBKKiotSkFCYRwc/ZYcWjY5ZisDBgQIFh1iEA8TOycnWC5EOjtXGRgCiAMHAwgWHRxaNjlmKwAAAAAEAAAAJgQAA1oADwAgADoASAAAJSEiJjURNDYzITIWFREUBgEiBhURFBYzITI2NRE0JiMhEyImJyY2PwEnLgE3PgEfAR4BFRQGDwEOASMhIyImNTQ2OwEyFhUUBgOz/JogLS0gA2YgLS38egsPDwsDZgsPDwv8mmYGCwQGBAl6egkEBgYVCJoFBgYFmgMHBAGamgoPDwqaCg8PJi0gApogLS0g/WYgLQMADwr9ZgoPDwoCmgoP/poGBQkVBlFRBhUJCAUGZwMMBgYMA2cCAg8LCg8PCgsPAAADACEAwAPfAokAFgAtAD8AACUiJi8BJjQ/ATYyFxYUDwEXFhQHDgEjISImJyY0PwEnJjQ3NjIfARYUDwEOASMhIiYnLgE3AT4BFx4BBwEOASMBAAUJBM0HB80HFgcICLu7CAgECQUCAAUJBAgIu7sICAcWB80HB80ECQX+gAMHBAkEBQEABhUJCQQF/wAEDAbABAPNCBUHzQgIBxUIu7oIFQcEBAQDCBUIursIFQcICM0HFQjNAwQCAgUVCQGaCQUGBhQJ/mYGBgAAAAADADP/8wPNA40AEQBUAJcAACUiJicmNDcBNjIXFhQHAQ4BIyUiJiMuATc+ARcyFjMyNz4BNzY1NCcuAScmIyIHDgEHBhUUFhUWBgcGJic0JjU0Nz4BNzYzMhceARcWFRQHDgEHBiMBIicuAScmNTQ3PgE3NjMyFjMeAQcOASciJiMiBw4BBwYVFBceARcWMzI3PgE3NjU0JjUmNjc2FhcUFhUUBw4BBwYjAU0FCgMICAFmCBUHCAj+mgQJBQGABw8HCg0BARALBgsGKiUmNxARERA3JiUqKyUlOBAQAQENCgsRAQEUFEYuLzU1Li9GFBQUFEYvLjX+ZjUuL0YUFBQURi8uNQcPBwoNAQEQCwYLBiolJjcQEREQNyYlKislJTgQEAEBDQoLEQEBFBRGLi818wQEBxUIAWYICAcVCP6aBASaAQIQCwoNAQEQEDglJSsqJSY3ERAQETcmJSoGCwYKEQEBDQoHDwc1Li9GFBQUFEYvLjU1Ly5GFBT+ZhQURi8uNTUvLkYUFAECEAsKDQEBEBA4JSUrKiUmNxEQEBE3JiUqBgsGChEBAQ0KBw8HNS4vRhQUAAAAAAEAuwBaA0UC7AAmAAAJATY0JyYiBwkBJiIHBhQXCQEGFBceATMyNjcJAR4BMzI2NzY0JwECJAEhCAgHFQj+3/7fCBUHCAgBIf7fCAgDCgUFCQQBIQEhBAkFBQoDCAj+3wGmASEIFQgHB/7fASEHBwgVCP7f/t8HFQgEAwMEASH+3wQDAwQIFQcBIQAABgAH/8AEAAOfABYAJAA7AEkAYABuAAATIiYvASY0NzYyHwE3NjIXFhQPAQ4BIyUhIiY1NDYzITIWFRQGASImLwEmNDc2Mh8BNzYyFxYUDwEOASMlISImNTQ2MyEyFhUUBgEiJi8BJjQ3NjIfATc2MhcWFA8BDgEjJSEiJjU0NjMhMhYVFAZmBQkETQcHCBUIOtUHFQgHB+cDCgUDgP2aCw8PCwJmCw8P/HUFCQRNBwcIFQg61QcVCAcH5wMKBQOA/ZoLDw8LAmYLDw/8dQUJBE0HBwgVCDrVBxUIBwfnAwoFA4D9mgsPDwsCZgsPDwKNBANNCBUHCAg61AcHCBUH5wMEMw8LCg8PCgsP/mYEBE0HFQgHBzvUCAgHFQjmBAQ0DwoLDw8LCg/+ZgQDTQgVBwgIOtQICAcWB+cDBDMPCwoPDwoLDwAAAAwAAABaBAAC8wANABwAKgA5AEcAVgBiAG8AewCIAJQAoQAAASEiJjU0NjMhMhYVFAYlIgYVFBYzITI2NTQmIyEBISImNTQ2MyEyFhUUBiUiBhUUFjMhMjY1NCYjIQEhIiY1NDYzITIWFRQGJSIGFRQWMyEyNjU0JiMhASImNTQ2MzIWFRQGJyIGFRQWMzI2NTQmIxEiJjU0NjMyFhUUBiciBhUUFjMyNjU0JiMRIiY1NDYzMhYVFAYnIgYVFBYzMjY1NCYjA7P9miAtLSACZiAtLf16Cw8PCwJmCw8PC/2aAmb9miAtLSACZiAtLf16Cw8PCwJmCw8PC/2aAmb9miAtLSACZiAtLf16Cw8PCwJmCw8PC/2a/wAgLS0gIC0tIAsPDwsKDw8KIC0tICAtLSALDw8LCg8PCiAtLSAgLS0gCw8PCwoPDwoCWi0fIC0tIB8tZg8LCg8PCgsP/potHyAtLSAfLWYPCwoPDwoLD/6aLR8gLS0gHy1mDwsKDw8KCw8Bmi0fIC0tIB8tZg8LCg8PCgsP/potHyAtLSAfLWYPCwoPDwoLD/6aLR8gLS0gHy1mDwsKDw8KCw8AAAQAAAAmA80DJgAWAC0ARABbAAABIiY9ATQmKwEiJjU0NjsBMhYdARQGIyEiJj0BNDY7ATIWFRQGKwEiBh0BFAYjEyMiJj0BNDYzMhYdARQWOwEyFhUUBiMhIyImNTQ2OwEyNj0BNDYzMhYdARQGIwOzCg8PC2YLDw8LZiAtDwv8ZwsPLSBmCw8PC2YLDw8KmWYgLQ8LCg8PC2YLDw8LAs1mCw8PC2YLDw8KCw8tIAJaDwpnCg8PCwoPLR9nCg8PCmcfLQ8KCw8PCmcKD/3MLSBnCg8PCmcKDw8LCw8PCwsPDwpnCg8PCmcgLQAABADNAI0DAALAABYALQBEAFsAAAEjIiY9ATQ2MzIWHQEUFjsBMhYVFAYjISMiJjU0NjsBMjY9ATQ2MzIWHQEUBiMBIiY9ATQ2OwEyFhUUBisBIgYdARQGIyMiJj0BNCYrASImNTQ2OwEyFh0BFAYjAuZmIC0PCwoPDwtmCw8PC/5nZwoPDwpnCg8PCwsPLSABAAsPLSBmCw8PC2YLDw8KzQsPDwpnCg8PCmcgLQ8LAfMtIGYLDw8LZgsPDwoLDw8LCg8PC2YLDw8LZiAt/poPCmcgLQ8LCw8PCmcKDw8KZwoPDwsLDy0gZwoPAAAEAAAAJgQAAyQAGAAdADQASgAAASImJyUuATU0NjclNjIXBR4BFRQGBwUOASUFLQEFASImJyUuATc+ARcFJTYWFxYGBwUOASMVIiYnJS4BNz4BFwUlNhYXFgYHBQ4BAgADBQL+GgcJCQcB5gUKBQHmBwkJB/4aAgX+WQGkAaT+XP5cAaQDBQL+GgoIBAQUCgHcAdwKFAQECAr+GgIFAwMFAv4aCggEBBQKAdwB3AoUBAQICv4aAgUBWgEBzAMNCAgNA8wCAswDDQgIDQPMAQHmsbGxsf6AAQHNBBQJCggEyckECAoJFATNAQGaAQHNBBQKCggFyMgFCAoKFATNAQEABgAAASYDzQImAAsAFwAjADAAPABIAAATIiY1NDYzMhYVFAYnIgYVFBYzMjY1NCYFIiY1NDYzMhYVFAYnIgYVFBYzMjY1NCYjBSImNTQ2MzIWFRQGJyIGFRQWMzI2NTQmgDVLSzU1S0s1IC0tICAtLQFGNUtLNTVLSzUfLS0fIC0tIAFnNUtLNTVLSzUgLS0gIC0tASZLNTVLSzU1S80tIB8tLR8gLc1LNTVLSzU1S80tIB8tLR8gLc1LNTVLSzU1S80tIB8tLR8gLQAAAwAA/8AD+AO5ABoAIABHAAA3IiYnLgE3EzQ2NwE2Mh8BFhQHAQ4BBwUGIiMTBzcBJwEBISImNRE0NjMhMhYVFAYjISIGFREUFjMhMjY1ETQ2MzIWFREUBiOzBQkEBQMCZwQBAhoIFQezCAj95wIFAv7mAgUCfVLhAgOP/f0CUPzNIC0tIAIACg8PCv4ACw8PCwMzCw8PCgsPLSBaAwQFDwcBGgIFAgIaBwe0BxUI/ecCAwFnAQEl4VICA4/9/f5BLSADMyAtDwsKDw8L/M0LDw8LAgAKDw8K/gAgLQAAAAAHAAAAWgQAAyYAEAAbACAAKgAuADIANgAAASEiBhURFBYzITI2NRE0JiMFITIWHQEhNTQ2MwUVITUhAyEiJjURIREUBiczFSMnMxUjJzMVIwOz/JogLS0gA2YgLS0g/JoDZgsP/GYPCwOA/GYDmhr8mgsPA5oPWDQ0zJmZmmZmAyYtH/3MHy0tHwI0Hy0zDwoaGgoPZpqa/gAPCgEa/uYKD2YzMzMzMwAFAAAAJgPNAyYADwAUAEkAVwBlAAAlISImNRE0NjMhMhYVERQGJSERIREBIzUzMjY1NCYrATU0JiMiBh0BIyIGHQEUFjsBFSMiBhUUFjsBFRQWMzI2PQEzMjY9ATQmIwEhIiY1NDYzITIWFRQGJyEiJjU0NjMhMhYVFAYDs/xnCw8PCwOZCw8P/HUDZ/yZAhqzswoPDwpNDwsKD00LDw8Ls7MLDw8LTQ8KCw9NCg8PCgEz/M0LDw8LAzMLDw8+/TMLDw8LAs0KDw8mDwsCAAsPDwv+AAsPNAHM/jQBADMPCgsPGgoPDwoaDwtmCw8zDwoLDxoKDw8KGg8LZgsPATMPCgsPDwsKD2YPCwoPDwoLDwAAAAACAAH/wAQAA8AASwCKAAAFIiYnJicuAScmJyYnLgEnJicuATU0Njc+ATMyFhceARceARUUBgcOAQcOARUWFx4BFxYXMjY3PgE3PgEzMhYXHgEXHgEVFAYHDgEjASIGBw4BFRQXHgEXFjMyNjc+ATUuAScuASMiBgcOAQcOASMiJicmJy4BJyYnJjY3PgE3PgE3PgE1NCYnLgEnAzNEkEsiIiJCICAeHhsbMRUWESYmPBIZSB0OIxYQJBMLTTciDRoKCwYSIyNYMDEtAQkJCBAIFSwcI3IOGCgPFRMsGBBNLP2ZCjIeHSFHSN+IiIEUNRsbGwEuNzBGCgEJCQcQCBYsHQUJBTI1NV8mJhQFBhcNIRENGQoLBickKzYIQCYmEhUVMRwbHh4gIEIiIiJLkEQsTRAYLBMVDygYDnIjHCsWCBAICQkBLTExVyMjEgYLChoNIjdNCxMkEBYjDh1IGRI9A80aHBs1FIGIiOBHSCIcHzIKCDYrJCcGCwoZDSM3AQIUJiZfNTUyDCUWCxYKCBAICAkBCkYwNy4BAAAABADN/8ADMwPAACYASABVAGIAAAUiJicuAScuAScuATU0Nz4BNzYzMhceARcWFRQGBw4BBw4BBw4BIxEiBw4BBwYVFBceARcWFx4BFz4BNzY3PgE3NjU0Jy4BJyYDIiY1NDYzMhYVFAYjESIGFRQWMzI2NTQmIwIABgoEAlg1IDESFhcYGFQ4OD9AODdUGBgXFhIxIDVYAgMLBjUvLkYUFA0MKBkYGCJBExNBIxcZGCgMDRQURi4vNUBaWkBAWlpAKjw8Kio8PCpABQUDe2I6cjZFgTs/ODhUGBgYGFQ4OD87gUU2cjpiewMFBQPNFBRGLy41Pz8/djY2K0FjGhpkQCw2NXc/Pj81Li9GFBT+ZlpAP1paP0BaAQA8Kis8PCsqPAAAAAMAAP/zBAADjQAiAD8ASQAAASM1NCYjIgYdASE1NCYjIgYdASMiBhURFBYzITI2NRE0JiMFMxUUFjMyNj0BIRUUFjMyNj0BMzIWHQEhNTQ2MwEhIiY1ESERFAYDs4APCgsP/gAPCwoPgCAtLSADZiAtLSD8moAPCgsPAgAPCwoPgAsP/GYPCwNm/JoLDwOaDwNaGQsPDwsZGQsPDwsZLSD9MyAtLSACzSAtNEwLDw8LTEwLDw8LTA8KgIAKD/0ADwsCGv3mCw8AAgAA//MDzQNaAEAAaAAAFyImJyY2Nz4BNyYnLgEnJjU0Njc+ATc2Nz4BNzYzMhceARcWFx4BFx4BFRQGBw4BBwYHDgEHBiMiJicOAQcOASMBIgcOAQcGFRQWFx4BBw4BBz4BNz4BFx4BMzI3PgE3NjU0Jy4BJyYjGgkOAgIGB0E9CiQbHCUKChQTEzUiIignVy8uMDEuL1cnKCIiNRIUFBQUEjUiIignVy8uMSdOJRA7JTliJwHMWk9PdiMiSkMHBQIEJCkyZigFCwUlTCdaUE92IiMjInZPUFoNCwgIEAUnYRsbHyBHJiUoJ0wkIz0aGxUUHAcICAccFBUbGj0jJEwnKEwkIj4aGxQVHAcHCQoLIxMcHQMzGhpaPT1ERoEvBBAHEVIsETgbAwIBCwoaGls8PUVEPT1aGhoAAAYAAAAxA80DHAAbAEcAYwCCAI0AkQAAJSImJyY2Nz4BNTQmJy4BNz4BFx4BFRQGBw4BIxciJicmNjc2Nz4BNzY1NCcuAScmJy4BNz4BFxYXHgEXFhUUBw4BBwYHDgEjJyImJyY2Nz4BNTQmJy4BNz4BFx4BFRQGBw4BIwMiBg8BIyIGHQEUFjsBFx4BMzgBMTI2Nz4BNRE0JiMBNTQ2OwERIyImNQUnETcCuwYKBAcDCCgtLSgIAgYHFQgyNjYyAwkEYQYKBAcDCCIaGiUJCgoJJRoaIggDBwcVCCYeHikLCwsLKR4eJgQIBMIFCwQGAggODg4OCAIGBxUIFxkZFwMJBLkJEwnSXSAtLSBd0gkTCQsSBgQFGxH+kg8LTU0LDwFnzc3GBQUIFQcgXjQ1XSEHFQgIAwcoc0BAcigDA3cFBAkVBhwhIkwqKissKilNISIbBxUICQIHHyYmVy8vMjEvMFYmJh8DA+4FBQgVBwsfERIfCwcVCAgCBhM0HR00EgMDAd8ICLItIM0gLbIICAoJBxEKAoAcGv4kzQoP/wAPC9WuARuuAAAEAAAAMQItAxwAMgA3AEIARQAAASYGDwE1NCYjIgYPASMiBh0BFBY7AQcGFhceATMyNj8BFx4BMzgBMTI2Nz4BNRE3NiYnJxUHNTcBNTQ2OwERIyImNQUnNwIrCBUHOhsRCRMJ0l0gLS0gIjUHAQgDCQUFCgRQzAkTCQsSBgQFYAcBCJHNzf6ZDwtNTQsPAWfIyAK5CAIHQW8cGggIsi0gzSAtOwgVCAMDBARZrQgICgkHEQoBxWoIFQcppOPZrv5ezQoP/wAPC9Wp3gAEAAAAJgPNAyYASQBNAFEAVQAAASE1MzI2PQE0JisBIgYdARQWOwEVISIGFRQWOwEVIyIGHQEUFjsBMjY9ATQmKwE1IRUjIgYdARQWOwEyNj0BNCYrATUzMjY1NCYBMxUjAyM1MwUjNTMDs/5NTQoPDwrNCw8PC03+TQsPDwuzTQsPDwvNCg8PCk0BzU0LDw8LzQoPDwpNswsPD/3cmZlnmZkCAJmZAcBmDwvNCg8PCs0LD2YPCwoPZw8KzQsPDwvNCg9nZw8KzQsPDwvNCg9nDwoLDwEzmf4AmZmZAAAAAAcAAP/ABAADwABUAFgAYABlAGkAcQB2AAABIxE0JisBNTQmIyEiBhURFBY7AQ4BBw4BFx4BOwEyNjc2JicuASczMjY9ATMyFhURIyIGFREUFjsBDgEHDgEXHgE7ATI2NzYmJy4BJzMyNjURNCYjARUhNQEjPgE3Mx4BJTUhFSEFFSE1ASM+ATczHgElNSEVIQPm5i0ggA8K/gALDw8LrggYBwUDAwMMCM0IDQMDAwYGGQeuCg+ACw/nCg8PCq4HGAcGAwMDDQjNCAwDAwMFBhkIrgsPDwv+Gv4zARllBwwDOQMM/u4Bzf4zA5r+MwEZZQcMAzkDDP7uAc3+MwHAARofLYALDw8L/poLDxMgBwYPBwcJCQcHDwYGIRMPC7MPCv7mDwv+mgsPEyAHBg8HBwkJBwcPBgYhEw8LAWYLDwHNzc3+ZgsaDg4aXDMzzc3N/mYLGg4OGlwzMwAAAAUAeQCNA7oC8wALABcAOQBbAIcAACUiJjU0NjMyFhUUBiciBhUUFjMyNjU0JiciJicuATc+ATc+ATMyFhceARcWBgcGJicuASMiBgcOASMlIiYnLgEjIgYHDgEnLgE3PgE3PgEzMhYXHgEXFgYHDgEjNyImJyYnLgEnJiMiBw4BBwYHDgEnLgE3Njc+ATc2MzIXHgEXFhcWBgcOASMCGiAtLSAfLS0fCw8PCwoPD7sDBwMJBQUPKhoaOx8eOxoaKg8FBQkJFQUYUzAvUxgDDAcB0AYLBDCLT1CLMAYVCQgDBhpEJylXLy5YKCdEGgYDCAMIBG0GCgQjKitgNTQ3NzU1YCsqIwcVCAgCBicvL2s6Oj08OzpqLy8nBwMIAwkEjS0gHy0tHyAtZg8KCw8PCwoPNQICBRUJGSoPDxAQDw8qGQkVBQYFCigwMCgGB28FBT9GRUAJAwcGFQkjORQVFRUVFDkjCRUGAwJtBQQrISEuDAwMDC4hISsIAgcHFQgvJSQzDQ0NDTMkJS8IFQcDAwAIADP/wAOaA8AALQBNAGYAfgCXAKsAtwDEAAAFISImNRE0NjsBMhYVFAYrASIGFREUFjMhMjY1ETQmKwEiJjU0NjsBMhYVERQGAzgBMSEiJjU0Njc+ATc+ATMyFhceARceARcwFDEUBiMlIS4BJy4BMSImNTQmIyIGFRQGIzAGBw4BNyImJy4BNTQ2Nz4BMzIWFx4BFRQGBw4BEyEiJicuATc0Njc+ATMyFhceARcWBgcOASciBjEGFBceATMhMjY3NjQnLgEjJyImNTQ2MzIWFRQGJyIGFRQWMzI2NTQmIwNN/TMgLS0gMwsPDwszCw8PCwLNCg8PCjMLDw8LMyAtLbr+ZwsPIh8LFAgJRi8vRwgJFAogIQEPC/6DAWEEEA0PGgsPLSAfLQ8LGg8NEKwFCQQDBAQDBAkFBQoDBAQEBAMKlf7NERsICQQGExgWUkFCUhYYEgEFAwkIHKpkQAEBAQYEATMEBQIBAQFBYgE1S0s1NUtLNR8tLR8gLS0gQC0gAs0fLQ8KCw8PCv0zCw8PCwLNCg8PCwoPLR/9MyAtAwAPCyY6EAUHAS08PC0BBwUQOSYBCw8zDhQHBwMPCyAtLSALDwMHBxQlBAQECQUFCgMEBAQEAwoFBQoDBAT9NA0LDB4QAicWFCcnFBYnAhAeDAsNmVcEBgIBAgIBAgYEA1RnSzU1S0s1NUvMLR8gLS0gHy0AAQAAAK4DxQKfABYAADcUFhcWMjcJARYyNzY0JwEmIgcBDgEVAAQDCBUIAboBuwgVBwgI/jMHFQj+MwMEwAUJBAgIAbv+RQgIBxYHAc0HB/4zBAkFAAAAAAEAAACuA8UCnwAWAAATNDY3NjIXCQE2MhcWFAcBBiInAS4BNQAEAwgVCAG6AbsIFQcICP4zBxUI/jMDBAKNBQkEBwf+RQG7BwcIFQf+MwgIAc0DCgUAAAABAO7/wALfA4UAFgAABTI2NzY0JwkBNjQnJiIHAQYUFwEeATMCzQUJBAcH/kUBuwcHCBUH/jMICAHNAwoFQAQDCBUIAboBuwgVBwgI/jMHFQj+MwMEAAAAAQDu/8AC3wOFABYAAAUiJicmNDcJASY0NzYyFwEWFAcBDgEjAQAFCQQICAG7/kUICAcWBwHNBwf+MwQJBUAEAwgVCAG6AbsIFQcICP4zBxUI/jMDBAAAAAIAof/aAywDnwAWAC0AAAEiJicJAQYiJyY0NwE2MhcBFhQHDgEjASImJwEmNDc2MhcJATYyFxYUBwEOASMDGgUKBP7f/t8HFQgHBwEzCBUIATMHBwQJBf7MBQkE/s0HBwgVBwEhASEIFQgHB/7MAwoFAkAEAwEi/t4HBwgVCAEzBwf+zQgVCAME/ZoDBAEzCBUHCAj+3wEhCAgHFQj+zQQDAAAABQAA/8AEAAPAADgARACQAKYBIgAAASYnLgEnJiMiBw4BBwYHBgcOAQcGFRQXHgEXFhcWFx4BFxYzMjc+ATc2NzY3PgE3NjU0Jy4BJyYnFy4BJy4BJy4BJx4BBxYGBw4BBw4BIy4BJy4BJy4BJy4BJy4BIyIGBw4BIzgBMSImJyY2Nz4BMzIWFx4BMzoBNzoBMzIWFx4BFx4BFx4BFw4BBw4BBw4BFyUeATMeARcOAQcOARcWBgcuATU8ATUBIicuAScmJz4BJzQ2Nz4BJy4BJy4BJzY3PgE3NjMyFhcuASMqASMGIiMiJicuASMiBgcOAQcGFhceATM4ATEyNjc+ATMyFhceARceARceARceARceATMyNjc+ATc+ATc+AScmNjc+ATc+ATc+AScwNDEeARUUBw4BBwYjA2okKipcMTIzMzIxXCoqJCQcHCYKCgoKJhwcJCQqKlwxMjMzMjFcKiokJBwcJgoKCgomHBwkRAgjGRoZCwkYFz9gdQMGIAkLBgwlMgIHAwMFAgMJCQ0pHg0cDgsTCQYNBQkVDBIdNR0qEg8gFhooDwYLBQQIBAgPCA8SCAwlLQYSBwYUCgcPCBgDAv0VBAkFFRcEAgcDCRIFAwQFDA4BzUI8PWkqKx0KGQgKBAoSCgYmJAgQBwsnKHpPT1g9cDIMFgkFCgQFCQULHBIcLBUaNyQfLQwLAw0QKh8IDwcIEAkKEwkRGQkJCAMDBQUDCAYHFgwiNhQQEwYECAQsBwMCAggJDgcOFAcFEAMNDiUkfVRUXwMqJBwcJgoKCgomHBwkJCoqXDEyMzMyMVwqKiQkHBwmCgoKCiYcHCQkKipcMTIzMzIxXCoqJMQNEAkJMSAbNBIoc/YaOCUJGw4iNQEQFBMuGSdUJS44CgUEAgEBAQocKnEjExILDA0HAQMGCikXJEcPAgYDBxIJBg0IFTEXDgECBQgCBAsDDiESDR0OJE0oAQIB/i8SEkAsLTYTTCUEDwUPJBMOEwgCAwFWSkptHyAeHAUDAQUKDg4WFxQ9JCRGHiQhAQEBAgMDBiYhIVAmHzkWDRUHDAwWFhIpEgoUBDFQHhYUCAcNBg0SCAUYDwElTilfVFR9JSQAAAACAAD/wAPGA8AAIwBAAAAFAT4BNTQmJy4BIyIGBw4BFRQWFx4BMzI2NwEeATMyNjc+AScBNDc+ATc2MzIXHgEXFhUUBw4BBwYjIicuAScmNQPG/tAzNzo2N4xNTYw2Nzo6NzaMTUJ7MwEwBAoFBQkEBwEH/G0aG1o9PEVFPD1aGxoaG1o9PEVFPD1aGxoVAUw2iEtNjDc2Ojo2N4xNTYw3NjorKf60BAQDBAcVCAJVRTw9WhsaGhtaPTxFRTw9WhsaGhtaPTxFAAMAAP/AA80DjQA3AFQAawAABSInLgEnJicmJy4BJyY1NDc+ATc2NzY3PgE3NjMyFx4BFxYXFhceARcWFRQHDgEHBgcGBw4BBwYDIgcOAQcGFRQXHgEXFjMyNz4BNzY1NCcuAScmIwMiJi8BJjQ3NjIfAQE2MhcWFAcBDgEjAeYwLy9YJygjIhsaJAoJCQokGhsiIygnWC8vMDEvL1coKCIjGhskCQoKCSQbGiMiKChXLy8xWk9PdiMiIiN2T09aWlBPdiIjIyJ2T1BaZgUJBJoHBwgVB4gBVAgVBwgI/poECQVACQokGhsiIygnWC8vMDEvL1coKCIjGhskCQoKCSQbGiMiKChXLy8xMC8vWCcoIyIbGiQKCQOaIyJ2T1BaWk9PdiMiIiN2T09aWlBPdiIj/YADBJoHFQgHB4gBVQcHCBUI/poEAwADAAD/wAPNA40AJQBdAHoAACUnNz4BJy4BDwEnJgYHBhYfAQcOARceATMyNj8BFx4BMzI2NzYmASInLgEnJicmJy4BJyY1NDc+ATc2NzY3PgE3NjMyFx4BFxYXFhceARcWFRQHDgEHBgcGBw4BBwYDIgcOAQcGFRQXHgEXFjMyNz4BNzY1NCcuAScmIwLe0dEIAQcHFQjW1QgVBwcBCNHRCAEHBAoFBQgE1dYDCQUFCgQHAf8AMC8vWCcoIyIbGiQKCQkKJBobIiMoJ1gvLzAxLy9XKCgiIxobJAkKCgkkGxojIigoVy8vMVpPT3YjIiIjdk9PWlpQT3YiIyMidk9QWu25ugcVCAgBB729BwEICBUHurkHFQgFBAMDvr4DAwQFCBX+2gkKJBobIiMoJ1gvLzAxLy9XKCgiIxobJAkKCgkkGxojIigoVy8vMTAvL1gnKCMiGxokCgkDmiMidk9QWlpPT3YjIiIjdk9PWlpQT3YiIwAEAAD/wAPNA40ANwBUAGQAdQAABSInLgEnJicmJy4BJyY1NDc+ATc2NzY3PgE3NjMyFx4BFxYXFhceARcWFRQHDgEHBgcGBw4BBwYDIgcOAQcGFRQXHgEXFjMyNz4BNzY1NCcuAScmIxMhIiY1ETQ2MyEyFhURFAYBIgYVERQWMyEyNjURNCYjIQHmMC8vWCcoIyIbGiQKCQkKJBobIiMoJ1gvLzAxLy9XKCgiIxobJAkKCgkkGxojIigoVy8vMVpPT3YjIiIjdk9PWlpQT3YiIyMidk9QWpr+zSAtLSABMyAtLf6tCw8PCwEzCw8PC/7NQAkKJBobIiMoJ1gvLzAxLy9XKCgiIxobJAkKCgkkGxojIigoVy8vMTAvL1gnKCMiGxokCgkDmiMidk9QWlpPT3YjIiIjdk9PWlpQT3YiI/1mLSABMyAtLSD+zSAtAZoPC/7NCw8PCwEzCw8AAAAABAAA/8ADzQONADcAVABtAHEAAAUiJy4BJyYnJicuAScmNTQ3PgE3Njc2Nz4BNzYzMhceARcWFxYXHgEXFhUUBw4BBwYHBgcOAQcGAyIHDgEHBhUUFx4BFxYzMjc+ATc2NTQnLgEnJiMDIiYnLgE1ETQ2NzYyFwEeARUUBgcBDgEjExEtAQHmMC8vWCcoIyIbGiQKCQkKJBobIiMoJ1gvLzAxLy9XKCgiIxobJAkKCgkkGxojIigoVy8vMVpPT3YjIiIjdk9PWlpQT3YiIyMidk9QWpkDBwMGBwcGBw0GAZoGBgYG/mYDBwMZAVD+sEAJCiQaGyIjKCdYLy8wMS8vVygoIiMaGyQJCgoJJBsaIyIoKFcvLzEwLy9YJygjIhsaJAoJA5ojInZPUFpaT092IyIiI3ZPT1paUE92IiP9MwECAwwHAgAHDAQDBP8AAwwHBgwD/wACAgHr/l3R0gAAAAYAAP/AA80DjQA3AFQAZAB1AIUAlgAABSInLgEnJicmJy4BJyY1NDc+ATc2NzY3PgE3NjMyFx4BFxYXFhceARcWFRQHDgEHBgcGBw4BBwYDIgcOAQcGFRQXHgEXFjMyNz4BNzY1NCcuAScmIwMjIiY1ETQ2OwEyFhURFAYDIgYVERQWOwEyNjURNCYrAQEjIiY1ETQ2OwEyFhURFAYDIgYVERQWOwEyNjURNCYrAQHmMC8vWCcoIyIbGiQKCQkKJBobIiMoJ1gvLzAxLy9XKCgiIxobJAkKCgkkGxojIigoVy8vMVpPT3YjIiIjdk9PWlpQT3YiIyMidk9QWmYzIC0tIDMgLS1TCw8PCzMLDw8LMwEzMyAtLSAzIC0tUwsPDwszCw8PCzNACQokGhsiIygnWC8vMDEvL1coKCIjGhskCQoKCSQbGiMiKChXLy8xMC8vWCcoIyIbGiQKCQOaIyJ2T1BaWk9PdiMiIiN2T09aWlBPdiIj/WYtIAEzIC0tIP7NIC0Bmg8L/s0LDw8LATMLD/5mLSABMyAtLSD+zSAtAZoPC/7NCw8PCwEzCw8AAAMAAP/AA80DjQA4AFUAdAAAEzY3PgE3NjMyFx4BFxYXFhceARcWFRQHDgEHBgcGBw4BBwYjIicuAScmJyYnLgEnJjU0Nz4BNzY3ATI3PgE3NjU0Jy4BJyYjIgcOAQcGFRQXHgEXFjMBNzYyFxYUDwEhMhYVFAYjIRcWFAcOASMiJi8BJjQ3jiMoJ1gvLzAxLy9XKCgiIxobJAkKCgkkGxojIigoVy8vMTAvL1gnKCMiGxokCgkJCiQaGyIBWFpQT3YiIyMidk9QWlpPT3YjIiIjdk9PWv7VzQcVCAcHoQIPCg8PCv3xoQcHBAoEBQoDzQgIAv4jGhskCQoKCSQbGiMiKChXLy8xMC8vVygoIyIbGiQKCQkKJBobIiMoJ1gvLzAxLy9XKCgi/PUiI3ZPT1paUE92IiMjInZPUFpaT092IyIBxc0ICAcVCKEPCwoPoQgVCAMEBATMCBUIAAMAAP/AA80DjQA4AFUAdAAAASYnLgEnJiMiBw4BBwYHBgcOAQcGFRQXHgEXFhcWFx4BFxYzMjc+ATc2NzY3PgE3NjU0Jy4BJyYnASInLgEnJjU0Nz4BNzYzMhceARcWFRQHDgEHBiMBJyYiBwYUHwEhIgYVFBYzIQcGFBceATMyNj8BNjQnAz4iKChXLy8xMC8vWCcoIyIbGiQKCQkKJBobIiMoJ1gvLzAxLy9XKCgiIxobJAkKCgkkGxoj/qhaT092IyIiI3ZPT1paUE92IiMjInZPUFoBLM0HFQgHB6H98QoPDwoCD6EHBwQJBQUKA80ICAL+IxobJAkKCgkkGxojIigoVy8vMTAvL1coKCMiGxokCgkJCiQaGyIjKCdYLy8wMS8vVygoIvz1IiN2T09aWlBPdiIjIyJ2T1BaWk9PdiMiAcXNCAgHFQihDwsKD6EIFQgDBAQEzAgVCAAAAAADAAD/wAPNA40AOABVAGwAABMGBw4BBwYVFBceARcWFxYXHgEXFjMyNz4BNzY3Njc+ATc2NTQnLgEnJicmJy4BJyYjIgcOAQcGBwEUBw4BBwYjIicuAScmNTQ3PgE3NjMyFx4BFxYVBxQGBwYiLwEHBiInJjQ3ATYyFwEeARWOIhsaJAoJCQokGhsiIygnWC8vMDEvL1coKCIjGhskCQoKCSQbGiMiKChXLy8xMC8vWCcoIwMMIyJ2T1BaWk9PdiMiIiN2T09aWlBPdiIjmgQDCBUI7u0IFQgHBwEACBUIAQADBAL+IigoVy8vMTAvL1gnKCMiGxokCgkJCiQaGyIjKCdYLy8wMS8vVygoIiMaGyQJCgoJJBsaI/6oWk9PdiMiIiN2T09aWlBPdiIjIyJ2T1BaTAUKBAcH7u4HBwgVCAEABwf/AAQKBAAAAAMAAP/AA80DjQA3AFQAawAAJTY3PgE3NjU0Jy4BJyYnJicuAScmIyIHDgEHBgcGBw4BBwYVFBceARcWFxYXHgEXFjMyNz4BNzYBNDc+ATc2MzIXHgEXFhUUBw4BBwYjIicuAScmNTc0Njc2Mh8BNzYyFxYUBwEGIicBLgE1Az4jGhskCQoKCSQbGiMiKChXLy8xMC8vWCcoIyIbGiQKCQkKJBobIiMoJ1gvLzAxLy9XKCj9FyIjdk9PWlpQT3YiIyMidk9QWlpPT3YjIpoEAwgVB+7uCBUHCAj/AAcVCP8ABANOIygnWC8vMDEvL1coKCIjGhskCQoKCSQbGiMiKChXLy8xMC8vWCcoIyIbGiQKCQkKJBobAXpaUE92IiMjInZPUFpaT092IyIiI3ZPT1pNBQoDCAju7ggIBxUI/wAHBwEABAkFAAADAAD/wAPNA40AOABVAGwAABM2Nz4BNzYzMhceARcWFxYXHgEXFhUUBw4BBwYHBgcOAQcGIyInLgEnJicmJy4BJyY1NDc+ATc2NwEyNz4BNzY1NCcuAScmIyIHDgEHBhUUFx4BFxYzNzI2NzY0LwE3NjQnJiIHAQYUFwEeATOOIygnWC8vMDEvL1coKCIjGhskCQoKCSQbGiMiKChXLy8xMC8vWCcoIyIbGiQKCQkKJBobIgFYWlBPdiIjIyJ2T1BaWk9PdiMiIiN2T09aTQUKAwgI7u4ICAcVCP8ABwcBAAQJBQL+IxobJAkKCgkkGxojIigoVy8vMTAvL1coKCMiGxokCgkJCiQaGyIjKCdYLy8wMS8vVygoIvz1IiN2T09aWlBPdiIjIyJ2T1BaWk9PdiMimgQDCBUH7u4IFQcICP8ABxUI/wAEAwAAAAMAAP/AA80DjQA4AFUAbAAAASYnLgEnJiMiBw4BBwYHBgcOAQcGFRQXHgEXFhcWFx4BFxYzMjc+ATc2NzY3PgE3NjU0Jy4BJyYnASInLgEnJjU0Nz4BNzYzMhceARcWFRQHDgEHBiMnIiYnJjQ/AScmNDc2MhcBFhQHAQ4BIwM+IigoVy8vMTAvL1gnKCMiGxokCgkJCiQaGyIjKCdYLy8wMS8vVygoIiMaGyQJCgoJJBsaI/6oWk9PdiMiIiN2T09aWlBPdiIjIyJ2T1BaTAUKBAcH7u4HBwgVCAEABwf/AAQKBAL+IxobJAkKCgkkGxojIigoVy8vMTAvL1coKCMiGxokCgkJCiQaGyIjKCdYLy8wMS8vVygoIvz1IiN2T09aWlBPdiIjIyJ2T1BaWk9PdiMimgQDCBUH7u4IFQcICP8ABxUI/wAEAwAAAgCNAFUDgALzABYAJQAACQEmIgcGFB8BBwYUFx4BMzI2NwE2NCcBISIGFRQWMyEyNjU0JiMByf8ADSINDQ3i4g0NBg4KCQ4HAQAMDAGM/qsTGBgTAVUUFxcUAfMBAA0NDSIN4uINIg0GBgYGAQANIg3+uBgTExgYExMYAAQAAP/AA80DigAjACcAKwAvAAABLgEHBSUmIgcFDgEVERQWFx4BMzI2NyUFFjI3JT4BNRE0JicBBRElMwURJSEFESUDwQYNBv7Y/tgFDAb+zQYIBwUDBwQDBQMBKAEoBQwGATMGCAcF/XL/AAEAMwEA/wACNP8AAQADiQMBA5SUAwOaAwwH/QAHDAMCAgEClJQDA5kEDAcDAAcLBPz6gALHgID9OYCAAseAAAAGAGb/wAOaA40AEwAaAC0ARABWAG0AAAEnLgEjISIGFREUFjMhMjY1ETQmByMiJj0BFwMhIiY1ETQ2MyEVFBY7AREUBiMlIiYvASY0PwE2MhcWFA8BFxYUBw4BIzMqASMuAT8BPgEXHgEPAQ4BIzMiJicmND8BJyY0NzYyHwEWFA8BDgEjA5LmBAkF/hkgLS0gApogLQQ6qQoPwg/9ZgoPDwoBsy0gsw8K/hkFCQRmCAhmCBUHCAhUVAgIAwoFgAEDAQsLAi8DEgoKDAMvAg4JtAUKBAcHVVUHBwgVCGYICGYECgQCn+YEBC0g/M0gLS0gAoAFCQ4PCqnC/WYPCwMzCw+0Hy39swsPZwMEZggVCGYICAcWB1RVBxUIBAMDEgrNCgsCAhILzAkLAwQIFQdVVAcWBwgIZggVCGYEAwAAAAYAKwAAA9UDVQACAAUACQAMAB0AIQAAASchFxEnJRcHEQEhNwEhIgYVERQWMyEyNjURNCYjESERIQIBgQEAq4D+KoCAAav/AIEBf/0AIzIyIwMAIzIyI/0AAwACK4CA/wB/gYF/AQD+gIACKjcn/WgnODgnApgnN/0AAqsAAAAACACAACsDgAMrAAQACQAOABMAGAAdAC0AMQAAASEVITUVIRUhNRUhFSE1AzMVIzUVMxUjNRUzFSM1ASEiBhURFBYzITI2NRE0JgMhESEB1QEA/wABAP8AAQD/AKpVVVVVVVUCL/1MEBYWEAK0DBoaO/2qAlYCgFVVq1VVqlZWAVVVVatVVapWVgIAFxD9TQ0ZGQ0CsxAX/VUCVQAAAgCI/9UDgAOAABgAHwAAASEiBh0BMzUhESE1IxUUFjMhMjY1ETQmIwEnBxcBJwcDK/5VIzJVAav+VVUyIwGrIzIyI/4AbTajATI2/AOAMiOAVf1VVoAkMjIkAwAjMv3sbTajATM2/QACAFX/1QOAA4AAGAAyAAABISIGHQEzNSERITUjFRQWMyEyNjURNCYjASIGBycRISc+ATMyFx4BFxYXNyYnLgEnJiMDK/5VIzJVAav+VVUyIwGrIzIyI/6JQ3UveAEseCNWMiwoKEMYGQ1PESEgVzU0OgOAMiOAVf1VVoAkMjIkAwAjMv60Lih3/tZ4HSENDjEhIicaNCwsPxISAAACAFUAVQOrAwAAEAAWAAABISIGFQMUFjMhMjY1ETQmIxUFJTUFJQNV/VYkMQEyJAKqJDIyJP6r/qsBVQFVAwAyI/4AJDIyJAIAIzKr1dVW1tYAAAAEAIAAKAOAA1UABQAKAB4AKwAALQEHCQEnBQkCByUuASMiBhUUFjMyNjczFTM1MzUjByImNTQ2MzIWFRQGIwIA/sVFAYABgEb+xv6AAYABgEb+0ww8JjBERDAmPAxUTibIYhIZGRIRGRkRlPQ2/tYBKjeJASsBKv7WN2EmMEs1NUswJVVVVVUZEhEZGRESGQADAIAAKAOAA1UABQAKABYAAC0BBwkBJwUJAgcnIzUjFSMVMxUzNTMCAP7FRQGAAYBG/sb+gAGAAYBGj4BWgIBWgJT0Nv7WASo3iQErASr+1jdhgIBVgIAABACrACsDVQMrABIAHgAyAD4AAAEuASMiBhUUFjMyNjczFTM1MzUFIiY1NDYzMhYVFAYTHgEzMjY1NCYjIgYHIzUjFSMVITcyFhUUBiMiJjU0NgIUE189TW1tTT1fE4d8Pv4WGyUlGxomJmcTXz1NbW1NPV8Th3w+AUGpGyUlGxomJgErOEhxT1BwSDiAgICAJRsaJiYaGyUBgDhIcFBPcUg4gICAgCYaGyUlGxomAAADAIAAQAOrAwAADgAcACMAACU3LgEjIgcOAQcGHQEhJzcyNjU0JiMiBhUUFjMxEyc3FzcXAQGAgAwUCyo7O2omJQGAgFVHZGRHRmRkRr+UPFjbPP7p1X4BAQoLKyAgKlaA1mRGR2RkR0Zk/pWVPFjcPP7nAAIAVf/VA6sDVQAGABIAAAE1CQE1IREBIzUjFSMVMxUzNTMCKwGA/oD+gAEAgFaAgFaAAbWg/sD+wKABQAEggIBVgIAACgAA/88D/gOxABIAJQA1AD0ATQB5AZoBsQHIAd8AAAEXBy4BJzU3MTAyMzIWFRQGBzEnPgE1NCYnOQEnDgEVFBYXJzc1Nx4BMzI2NzE1Nw4BBzEXMR8BPwEnIwcXNxQWMzI2NzkBNy4BJyMXMQUDDgEjOAExITgBMSImJzUDLgE1NDY3FRM+ATclPgEzMhYXIwUeARcTFgYHJyImIyYiJy4BJy4BLwE+ATU0JicXLgEnFz4BNzY0Nz4BNz4BNz4BNz4BJy4BBw4BIw4BBw4BBwYiIwcuAScjNS4BJyY2Nz4BNTwBNTQmIyIGHQEcARUUFhceAQcOAQcxFQ4BBzEuAScXIgYnLgEnLgEnLgEnLgEjMTAiMSIGBzEGFh8CHgEXHgEXHgEfAQ4BFRQWFzUHDgEHDgEHKgEHIgYHIzEOARceATc5ATc+ATc+ATc2Fhc3HgEfAQceARUOAQcOAQcOAQcGFhcWNjcxNDY1PgE3PgE3PgE/AR4BMzI2NwcXHgEXHgEXHgEXFBYVHgE3PgEnLgEnLgEnLgEnJjY3LgEnPgE/ATIWMz4BMx4BFx4BFxYyFzkBFjY3NiYnJwcVDgEVFBYXOQEXNDY1NCYnFS4BJxcHLgEjMCI5ASIGBzkBBx4BMzI2NyMnMTcqASMiBgc3DgEVFBYVOQEXPgE3NScxAbMBKx4uDG4CAQgLAQEjBggEA1MQEQEBAWwxAgYDBwsBBiVCGVwgHx8HFSIWCEALCAMGAlsZQCUBBgHQ9gobEP50EBsK9gcIAQFYAxMOAWQHDwgIDwcBAWQPEwNYBAcKjAIDAQYKBQsTCAMFAQkBAgQEAQYVDgEBBQEBAwcPCgUIBQECAQgDBQYSCAEDAQQGBAgNCAMHAwgiWjMCAgQBAQIBAQIMCQkMAgEBAgEBBAI1WyIDBAIBAwYEBw0IBAYEAQMBAwgEAQUIAwUDBwEEBQgFCRAGAwEBBxYZAgEJAgQDCBMLBQoGAQMBAQkLAgIQCgYFCQULEggEBwEKED8qAgQBAQQKBgMFAwEBAQQFCAgRBQIDAgEFBgYCBAMFFjIbGjIXAQQDBgIEBwQBAwICBREICAUEAQEBAgYDBgoDAQIBAQIBK0APAQIGAQIGBAgSCwUJBQEDAgoQAgILCalTAwQIBmwBAwMEDgoBqwMJBQEFCAM2ECQTEyURAjZQAQEBAwQCAQUGASsfLQ1vAVwBZxQ4IgETCwgCBAFbAQoHBAcDSxg7IAYNBgEfAVQCAgsHAW8EIBlBdQ8PIRoaIYQICgIBQRkgBG///s4MDg4LAQEyCRUMBAgEAQF+DxgHqgMEBAOqBxgP/oIPHgxYAQEBAQMCAQcBAwgUChAgDwIbLhUBAQUBAgYEBQsGAgUDAQIBBhIHBwEGAQIECAMIDgQCBiQtBQkCBQQJEwsFCQYBBAEKDg4KAQEDAQYJBQsTCQMGAgkELSQBAwIBAQIFDQgEBwQBAgECAwQDBxIGAQMEBAMFCwYCCAIGIE4rCxQKAgMCBgEDAgIBAQECDwkICQIBAgQCAwYBAQQBAjFPGQEJAwYDCBEKBAgFAQMBCRIEBAcJAgMBBQkFCxUHAgEBCQkKCgkBCAECAwgSCgUKBQEDAQkHBAMSCQEDAgUHBQkQCAUFAwEGAhpOMAIBAQMBBgQCBAEBAQIJCQgQAq9KAQIIBAYKAh8EDAUNGg0CEyIPAeMEBgYEYgYGBgZiNwEBAQMJBQIEAmgUOCIBEwAEAAD/wAPNA40AOABVAIUAmQAAASYnLgEnJiMiBw4BBwYHBgcOAQcGFRQXHgEXFhcWFx4BFxYzMjc+ATc2NzY3PgE3NjU0Jy4BJyYnASInLgEnJjU0Nz4BNzYzMhceARcWFRQHDgEHBiM1IiY9ATQ2MzI2NTQmIyIGFRQGIyImNTQ3PgE3NjMyFx4BFxYVFAcOAQcGBxUUBiMVOAExIiY9ATQ2MzgBMTIWHQEUBgM+IigoVy8vMTAvL1gnKCMiGxokCgkJCiQaGyIjKCdYLy8wMS8vVygoIiMaGyQJCgoJJBsaI/6oWk9PdiMiIiN2T09aWlBPdiIjIyJ2T1BaCg8PCktpaUtKaQ8KCw8SEj8qKi8wKio/EhIQEDclJisPCwoPDwoLDw8C/iMaGyQJCgoJJBsaIyIoKFcvLzEwLy9XKCgjIhsaJAoJCQokGhsiIygnWC8vMDEvL1coKCL89SIjdk9PWlpQT3YiIyMidk9QWlpPT3YjIs0PC2YLD2lKSmlpSgsPDwsvKio/EhISEj8qKi8tJyg9FBMFTgsPmg8LMwsPDwszCw8ABgAA//MEAAONAAsAFwAjAFIAagCJAAATFAYjIiY1NDYzMhYXFAYjIiY1NDYzMhYXFAYjIiY1NDYzMhYlISIGFREUFjMyNjURITI2NTQ2MyEyFhUUFjsBERQGIyEiBhUUFjMhMjY1ETQmIwciJjU0JiMhIgYVFAYjITU0NjMhMhYdAQEjIgYVFBY7AQEGFBceATMyNjcBFRQWMzI2PQE0JiOaDwsLDw8LCw9mDwsKDw8KCw9mDwoLDw8LCg8CTfyaIC0PCwoPAYAgLQ8LAQAKDy0gTQ8L/TMKDw8KAs0gLS0gMwsPLR//ACAtDwv+gA8LA2YLD/2zmgoPDwpc/vkICAMKBQUJBAEHDwsLDw8LAw0LDw8LCg8PCgsPDwsKDw8KCw8PCwoPD3YtIP2aCw8PCwGzLSAKDw8KIC39swsPDwoLDy0gAwAgLc0PCx8tLR8LD4ALDw8LgP7NDwsKD/74BxYHBAQEBAEHWwsPDwuZCw8AAAAACAAD//MDygONADgARwBUAHIAiACeALQAygAAJS4BPQE0Jy4BJyYnNTQmIyIGHQEGBw4BBwYdARQGBw4BFx4BOwEOARUUFjMyNjU0JiczMjY3NiYnATQ2MzIWHQEmIiMqAQc1ExQGIyImNTQ2NzMeASU+ATc+AT0BNDc+ATc2MzIXHgEXFh0BFBYXHgEXIQEiJicuAScuATc+ARceARcWBgcqASM3IiYnLgEnJjY3NhYXHgEXFgYHDgEjBSoBIy4BNz4BNzYWFxYGBw4BBw4BIyciJicuATc+ATc+ARceAQcOAQcOASMDXCwwDxA2JiYsLSAfLS0lJjYQDzAsBwUDAg4I6QECSzU1SwEB6QgNAwMFB/5xDwoLDwYNBwYNBmYtIB8tAgKRAgL+jQkRBxAPEhI/KiovMCoqPxISDw8HEQr9swKzCA4DDjwsCAEHBxUIMUUQAwsLAQMCQAcMBAoYDgcDCQgVBhAbCwUHCgIGA/ynAgMCCgsDEEUxCBUHBwEILDwPAg4IQAMGAwkHBQsbDwcVCAkDBw4YCgQMCLshYDeaMCwrSBkaDSQgLS0gJA0aGUgrLDCaN2AhBRAICAkHDAc1S0s1BwwHCQgIEAUChQsPDwsbAQEb/TMgLS0gBw0GBg1GDBoNHkAimi8qKj8SEhISPyoqL5oiQB4NGgwBmgoJOGImBxUICAIHLG8/CxIDeQcHFSgTCBUGBwMJFCwYCRQFAQF5AxILP28sBwIICBUHJmI4CQp5AQEFFAkYLBQJAwcGFQgTKBUHBwAADAAA/8ADzQPAAA0AGwApADgARwBVAGMAcgCAAI4AnACqAAAXIiY1ETQ2MzIWFREUBgMiJjURNDYzMhYVERQGFyMiJjU0NjsBMhYVFAYnIgYVFBY7ATI2NTQmKwEBIiY9ATQ2MzIWHQEUBiMRIiY1ETQ2MzIWFREUBhcjIiY1NDY7ATIWFRQGJyIGFRQWOwEyNjU0JisBASImNRE0NjMyFhURFAYDIiY9ATQ2MzIWHQEUBhcjIiY1NDY7ATIWFRQGJyIGFRQWOwEyNjU0JiOACw8PCwsPDwsLDw8LCw8PKGYgLS0gZiAtLYYLDw8LZgsPDwtmAZkKDw8KCw8PCwoPDwoLDw8pZyAtLSBnHy0thgoPDwpnCg8PCmcBmgsPDwsKDw8KCw8PCwoPDylmIC0tIGYgLS2GCw8PC2YLDw8LQA8LAZkLDw8L/mcLDwLNDwoBAAsPDwv/AAoPzS0gIC0tICAtZg8KCw8PCwoP/ZoPC8wLDw8LzAsPAgAPCwHMCw8PC/40Cw/NLSAgLS0gIC1nDwsLDw8LCw/+Zg8LAgAKDw8K/gALDwMzDwuZCw8PC5kLD80tICAtLSAgLWcPCwoPDwoLDwASAAD/8wPNA8AADwAgADAAQQBRAGEAcQCCAJIAowCzAMMA0wDkAPQBBQEVASUAABcjIiY9ATQ2OwEyFh0BFAYnIgYdARQWOwEyNj0BNCYrAQUjIiY9ATQ2OwEyFh0BFAYnIgYdARQWOwEyNj0BNCYrAQUjIiY9ATQ2OwEyFh0BFAYnIgYdARQWOwEyNj0BNCYjJSMiJj0BNDY7ATIWHQEUBiciBh0BFBY7ATI2PQE0JisBBSMiJj0BNDY7ATIWHQEUBiciBh0BFBY7ATI2PQE0JisBBSMiJj0BNDY7ATIWHQEUBiciBh0BFBY7ATI2PQE0JiMlIyImPQE0NjsBMhYdARQGJyIGHQEUFjsBMjY9ATQmKwEFIyImPQE0NjsBMhYdARQGJyIGHQEUFjsBMjY9ATQmKwEFIyImPQE0NjsBMhYdARQGJyIGHQEUFjsBMjY9ATQmI7NmIC0tIGYgLS2GCw8PC2YLDw8LZgHNZyAtLSBnHy0thgoPDwpnCg8PCmcBzWYgLS0gZiAtLYYLDw8LZgsPDwv9M2YgLS0gZiAtLYYLDw8LZgsPDwtmAc1nIC0tIGcfLS2GCg8PCmcKDw8KZwHNZiAtLSBmIC0thgsPDwtmCw8PC/0zZiAtLSBmIC0thgsPDwtmCw8PC2YBzWcgLS0gZx8tLYYKDw8KZwoPDwpnAc1mIC0tIGYgLS2GCw8PC2YLDw8LDS0gZiAtLSBmIC3NDwtmCw8PC2YLD80tIGYgLS0gZiAtzQ8LZgsPDwtmCw/NLSBmIC0tIGYgLc0PC2YLDw8LZgsPmi0fZyAtLSBnHy3MDwpnCg8PCmcKD8wtH2cgLS0gZx8tzA8KZwoPDwpnCg/MLR9nIC0tIGcfLcwPCmcKDw8KZwoPmi0gZiAtLSBmIC3NDwtmCw8PC2YLD80tIGYgLS0gZiAtzQ8LZgsPDwtmCw/NLSBmIC0tIGYgLc0PC2YLDw8LZgsPAAAACQAAAFoEAALzAA0AGwApADUAQgBOAFsAZwB0AAAlISImNTQ2MyEyFhUUBgMhIiY1NDYzITIWFRQGAyEiJjU0NjMhMhYVFAYFIiY1NDYzMhYVFAYnIgYVFBYzMjY1NCYjESImNTQ2MzIWFRQGJyIGFRQWMzI2NTQmIxEiJjU0NjMyFhUUBiciBhUUFjMyNjU0JiMD5v0ACg8PCgMACw8PC/0ACg8PCgMACw8PC/0ACg8PCgMACw8P/FwgLS0gIC0tIAsPDwsKDw8KIC0tICAtLSALDw8LCg8PCiAtLSAgLS0gCw8PCwoPDwqNDwoLDw8LCg8BAA8KCw8PCwoPAQAPCgsPDwsKDzMtHyAtLSAfLWYPCwoPDwoLD/6aLR8gLS0gHy1mDwsKDw8KCw/+mi0fIC0tIB8tZg8LCg8PCgsPAAAKAAD/7wO4A8AAIwAvAFQAcQB/AI0AsgC+AOMA7wAAASImNTQmIyImNTQ2MzI2NTQ2MzIWFRQWMzIWFRQGIyIGFRQGJx4BFz4BNy4BJw4BASImNTQmIyImNTQ2MzI2NTQ2MzIWFRQWMzIWFRQGIyIGFRQGIwkBLgEjIgYPAQ4BFRQWFwEeATMyNj8BPgE1NCYnATc+ATMyFh8BBycmNDcBBw4BIyImJwE3ARYUBwEiJjU0JiMiJjU0NjMyNjU0NjMyFhUUFjMyFhUUBiMiBhUUBiMnHgEXPgE3LgEnDgETIiY1NCYjIiY1NDYzMjY1NDYzMhYVFBYzMhYVFAYjIgYVFAYjJx4BFz4BNy4BJw4BAk0LD0s1Cg8PCjVLDwsKD0s1Cw8PCzVLD0gTHwwLHxMTHwsMH/4rCw8PCgsPDwsKDw8LCg8PCwsPDwsLDw8KA1T94gscDxAcCx4KDAwKAh4LHBAPHAseCwwMC/18HgMKBQUJBEpDSQgIAmAeBAkFBQoD/lBCAbAHB/02Cg8tIAsPDwsgLQ8KCw8tIAoPDwogLQ8LGggNBQYNBwcNBgUNEgoPLSALDw8LIC0PCgsPLSAKDw8KIC0PCxoIDQUGDQcHDQYFDQJaDwo1Sw8LCg9LNQsPDws1Sw8KCw9LNQoPswwfExMfDAsfExMf/qgPCwoPDwsKDw8LCw8PCwsPDwoLDw8KCw/+0AIeCwsLCx4LHA8QHAv94gsLCwseCxwQDxwLAdweAwQEA0pCSgcVCP3bHgMEBAMBsUL+UAgVCAJ5DwsfLQ8LCw8tHwsPDwsfLQ8LCw8tHwsPgAUNCAgNBQUNCAgN/XsPCx8tDwsLDy0fCw8PCx8tDwsLDy0fCw+ABQ0ICA0FBQ0ICA0AAwAA//MEAALzAGcAlgDFAAA3KgEnLgEnLgE1NDc+ATc2MzIWFz4BMzIWFRQGBzoBMzIXHgEXFhUUBgcOAQcGJicmNjc+ATU0JiMiBgcGJicmNjc+ATU0JiMiBgcUBgcGJicuASMiBw4BBwYVFBceARcWFx4BBw4BIyUmIg8BNTQnLgEnJiMiBgcOARceATc+ATMyFh0BJyYiBwYUHwEeATMyNj8BNjQnBy4BBw4BIyImPQEXHgEzMjY3NjQvASYiDwEGFBcWMj8BFRQXHgEXFjMyNjc+ASflAQQCL1IeHyAYGFQ4OD8+cSsTSy8/WgQFAwQCKyUlOBAQERAPKxoKFAQFCAkoMFpADRoMCBEFBQIGDQ48Kik7AwoICA8FJG8/NS4vRRUUDg0xIyIoCwoDAg4JAkcIFQcIEBA4JSUrFywVCQcEBRQJECERQFoIBxUIBwczBAoFBAoEMwcHlQQUCg8iET9aBwQJBQUKAwgIMwcWBzMICAcVCAcREDcmJSoXLBUKBwWYAQ04KChfM0A3OFQYGC8sKTJaPw4aDBAQNyYlKh44GRgmDAUHCgkUBRNLLT9aBAUCBQgHEgYOJBQqPDgoCA0CAgUHMzoUFEYuLzUrJydBGBgMAxMKCAohBwcIDyomJTgQEAoKBBQKCgcFBwhaQA8IBwcIFQgzBAMDBDMIFQiQCgcFBwhaQA8HBAQEBAcVCDMHBzMIFQcICAcPKiYlOBAQCgoEFAoAAAMAAAAmA80DlwAXACsAPQAAASUuASMiBgcFDgEVERQWMyEyNjURNCYnBSU+ATMyFhcFHgEXAQYiJwE+ATcBISImNREFHgEzMjY3JREUBiMDlf6KCx4QDx4M/osYIC0gAzMgLSAY/L4BdQYQCAkQBgF1BgsE/nQLIwv+cwULBgMt/M0LDwF7DB0PEB0MAXsPCwKk5AcICAfkDzkc/jMgLS0gAc0cOQ8s5AQEBATkBAwH/vcHBwEJBwwE/eIPCgG3/AgICAj8/kkKDwAAAAQAAP/zA/8DiwAkACgAMAA0AAABLgEHAQ4BFRQWFwURFBYXHgEzMjY/ARceATMyNjM+ATcBNiYnBwEnAQkCOAExBzUBJwEDA/cFDwf8NAgICggBIQoHAgUCBQsEjeYECQUCAwIGCgIBAAIEBr3+DuYC2P4sAeL+kHIBdMsBm9ADhgUDA/5mAw0ICA0DYP7fCA0DAQEFBa7jBAQBAgkHA2YHDgV3/oFMATP+WAFy/juM3/7WyQH6/T0AAAAABAAdACIDzQMmAAsAFwBXAHIAAAEiJjU0NjMyFhUUBiciBhUUFjMyNjU0JjcjIgYHAQ4BFRQWHwEHDgEnLgEnAyY2NyU+AScuAQcFDgEHBhYXEx4BFx4BMzI2PwEXHgEzMjY3AT4BPQE0JiMTFAYHAQ4BIyImLwEuATU0NjcBPgE7ATIWHQEDGiAtLSAfLS0fCw8PCwoPD1yzGzwT/nwLDAwLhTgECgUFCAO4BQUJAZkJBgUGFAn+Zw4SBAQECLgHGA8FCgUKFAlEJgscDxAcCwGEExktIBoSC/57AwkGBQkE0QQDAwQBhAwqELMKDwImLSAgLS0gIC1nDwsKDw8KCw+ZGRL+ewscDw8dCoYgAgICAQYEAT8KFAXsBhQJCgUF7AgYDw8eDf7BDRMEAQIGBScnCgwMCgGFEzwatB8t/wAQKgv+fAQEBATRAwoFBQkEAYQMEQ8KtAACAAcAJgP5A1oANwBsAAABIiYnLgE9ATQnLgEnJiMiBw4BBwYHDgEnLgE3Njc+ATc2MzIXHgEXFhceARc3NjIXFhQPAQ4BIwEiJy4BJyYnLgEnBwYiJyY0PwE+ARceAR0BFBceARcWMzI3PgE3Njc+ARceAQcGBw4BBwYjA4ACBQMHCRwcYUJBSjIvL1IiIhcFFAoJBgUaJyZeNjY5KSgnSiEiHTg9AjsIFQgHB2cECQX+gCkoJ0ohIh04PgE7CBUIBwdnBRAHBwkcHGFCQUoyLy9SIiIXBRQKCQYFGicmXjY2OQFzAQEDDQgzSkFCYRwcDQ0yIyQsCQYFBRQJMygpOA8QCAgfFhYdOY9QOwgIBxUIZgQE/rMICB8WFh05j1A7CAgHFQhmBgMDAw0IM0pBQmEcHA0NMiMkLAkGBQUUCTMoKTgPEAAABABn/8ADZwPBADQAigCqANMAAAEjNTMyNjU0JisBNTQmIyIGHQEjIgYdARQWOwEVIyIGFRQWOwEVFBYzMjY9ATMyNj0BNCYjNy4BJy4BJz4BNzY0Jy4BBz4BNz4BJy4BIyIGBw4BIyImJy4BKwEOAQcOARUeARceARcwFjEmBgcGFBceARcOAQcOAQcOARUUFhceATMyNjc+ATU0JicBPgE7ATIWFx4BMzI2Nz4BMzIWFw4BBw4BIyImJy4BJxMiJy4BJyY1NDc+ATc2Nz4BNx4BMzI2Nx4BFxYXHgEXFhUUBw4BBwYjAk2zswoPDwpNDwsKD00LDw8Ls7MLDw8LTQ8KCw9NCg8PCtkcQRwVJgcMEwgICAYTBwgmIwcEBAExMh8ZBQQEBw8hERUrGAEtRwQEBAEFBB0oCwEIEgYICAgTDAcmFRxBHCAgOTkvhFtahC85OiEg/hsOIRABDiESFCwYHxkFBAQHDhYHNSQDDiYbGiYOAyIypVc/P1ETExARMx4fGxopCRAqGhspEQkoGxseHzMQERMTUT8/WAEmNA8KCw8ZCw8PCxkPC2YLDzMPCwoPGgoPDwoaDwpnCg+TLk4fFi0QCBAICBUIBgIFGT0aBRIJAkAeCwgDDgkKEwE2BQQKBgUKAxY3IQIFAgYIFQgIEAgQLRcfTS43bzpOciIcGxscInJOOm83AboKEA4JChIdCwgDDQgvZxoEBAQEGmMu/IANDjgrLD05MjFVJCQeHTEWBAQEBBYxHR4kJFUxMjk9LCs4Dg0AAAAABgAFAI4D/ALyAGEAgwDdAWcBigGdAAABFBYXHgEXHgEVFAYPAQ4BIzEiJicuAScjLgEnNQ4BIyImJy4BNTQ2Nz4BMzIWFx4BFzU0JicuASMiBgcOAQcOASMHIgYjMSImPQE0Njc+ATcxPgE3PgEzMhYzIzIWFx4BFQcyNjc+ATc+ATc+AT0BLgEnIy4BJzEiBgcOARUUFhceATMFIiYnLgEnAy4BNTE0NjsBMhYXHgEfATc+ATc+ATMyMDMxMzIWFx4BHwE3PgE3PgEzOgE5ATMyFhUcAQcUBgcxAw4BBw4BIzAiOQEjIiYnLgEvAQcOAQcOASMFIiYnLgEnLgEnLgE9ATQ2MzIWMx4BFx4BFx4BMzI2Nz4BNTA0OQEwNDE0JicxLgEvAS4BJy4BNTE0Njc+ATc+ATc+ATM6ARceARceARceARceARcxHgEVMBQ5ARUUBiMiJicxLgEjKgEjMSIGBw4BFRQWFx4BHwEeARceARUUBgcOAQcOAQcOASMXBgcOAQcGIyInLgEnJicmNhcWFx4BFxYzMjc+ATc2NzYWBzcmBgcGJjc2FhcWBgcGJjc+AScBIQIBAgYDAgEEAxUCBQIDBQIEBgIBAgUDFDIeFiIMDQ0QDxApGwgSCgkUCggICBwTCRMJChIJAgYDAQEDAQQEAgECBAMJFgwMGg0BAQEBHywPDg6KCREJChAHBAYBAgIHDwgCBxAJERkICQgGBwYSCwESBQYCAgQBUAECBAQhBQcBAgQBOTYBAwIDBgMBARsFBwICAwE2OwEEAgIGAwEBIAQEAQEBUgIDAgMGAwEeBAcCAgQBNDUBAwICBwUBmA0aDQ0UBgQGAQEBBAQCAwECBAMIEwoKFAsQGQgICgUEBRENMRMbCAgJBAUEDQcIEQsKFQwFDAUGCwYFCQUFBwIDBgIBAgQEBAYDDiARAQEBDhcICAgFBQUTDjATGggICAUEBQwICBMLCxkNQSozMmw4ODRKRUaAOjkyCAoJNjw8gUNERS8wMWIwMS8OEQ4uCl0cCAIIMHwJCRstBwoDCh4LAhQKDwUGDAcCBAICBgIOAgECAgQIBAQKBQEXGA0MDCEUFiMNDg0BAgEEAhkTGwgICAIDAgYDAQMBAQYFEQQGAgIDAgQIAwMEAQ0ODiocogMDAwsIBQsGBg8IDwEDAQEBAQcHBxQMDBIGBwYlAgIBBwUBBwMHBAQEAQICBgXi4gUGAgIBAQICBgXl5QUGAgIBBAQBAwICBAL++QYGAgECAgECBwXc3AUHAQICCQMDAwcEAgUCAgUDEQYFAQECAQMHAgICBgYFEAoBAQcLBQUIBQ8GEQwKGQ4LEwgIDgYGCAMDAwEBAgEBAwECAwIBBAMCBQMBEAYFAgIGBwQFBQ8LBwwFBQkFDwYQCwoYDQsUCQgQBgYJBAMEpSAXGCAICA0NMiQkLQcOBh8ZGSMJCgUFFA8OFAcWCjUNBgMBCwUiBQwLeiYFBAgZWQ4AAAYBAP/AAwADwAAXACIAMgBAAE4AWgAAARE0JiMhIgYVEQ4BFREUFjMhMjY1ETQmASERLgEjISIGBxEBFAYjISImNRE0NjMhMhYVJyImPQE0NjMyFh0BFAYjIiY9ATQ2MzIWHQEUBhMUBiMiJjU0NjMyFgLNHhX+zBUeFxxLNQEANUsc/oIBNAcMB/8ABwwHAWctIP8AIC0tIAEAIC2ACw8PCwoPD6QKDw8KCw8P3A8LCw8PCwsPAnMBGhUeHhX+5hE2H/4zNUtLNQHNHzYBK/79AgEBAgED/LMgLS0gAc0gLS0gsw8LMwoPDwozCw8PCzMKDw8KMwsP/YALDw8LCw8PAAAABQAA/80EAAOaACYAMQA8AEYAVAAAASEiBhURFBYzIQcOAQcOARUUFjMhMjY1NCYnLgEvASEyNjURNCYjBSEyFhURIRE0NjMBHgEXIT4BPwEzFyUhIiY9ASEVFAYlIyImNTQ2OwEyFhUUBgOz/JogLS0gAQokBgsECAsPCwG2Cw8LCAQLBiQBCiAtLSD8mgNmCw/8Zg8LAlIBAgL+uAICAS/gLwEU/JoLDwOaD/5cNAoPDwo0Cg8PA5otIP1mIC1GDRAEAg4JCg8PCgkOAgQQDUYtIAKaIC00Dwr+GQHnCg/8owIFAgIFAl1dkQ8KgIAKDzMPCgsPDwsKDwAAAgBm//MDZgNaAA0ATgAAASImNRE0NjMyFhURFAYDIiYnLgE1NDY3PgE3NhYXFgYHBgcOAQcGFRQXHgEXFjMyNz4BNzY1NCcuAScmJy4BNz4BFx4BFx4BFRQGBw4BIwHmCg8PCgsPDwtNjDY2OygmJWU7ChIEAwsKNCwsPxERGhpaPT1ERT08WxoaERI/Kyw1CgoDAxMKOmYlJic6NjeMTQFaDwoBzQsPDwv+MwoP/pk6NzaMTT92MzBHEQMKCgoTAw8gH1QzMzdFPD1aGhsbGlo9PEU3MzNUHyAPAxMKCgoDEUcwM3Y/TYw2NzoAAAAABAAA/8AEAAPAADMAZgCEAJEAAAEiBw4BBwYVFBYXAQ4BHQEUFjsBMjY/ATMyNj0BMzI2PQE3HgEzMjc+ATc2NTQnLgEnJiMRIiYnDwEOAR0BIyIGHQEjIgYPASM1ATgBMTcuATU0Nz4BNzYzMhceARcWFRQHDgEHBiMTLgEnLgEHDgEHDgEVFBYXHgEXHgE3PgE3PgE1NCYHLgEnPgE3HgEXDgEHAsBCOjtXGRkMC/57CAomGmANEgguSxslQBslTBs6H0I7OlcZGRkZVzo7QiNCHAthCQpAGiZLDRcJLVsBdS8RExQURi4vNTUvLkYUFBQURi4vNbobQSYGDwchLgsBAQMDG0EmBg8HIS4LAQEDYyM+GQkjGiM+GQkjGgPAGRlXOjtCHzob/nsIEg1gGiYKCC4mGkAmGktMCwwZGVc6O0JCOzpXGRn9wBMRC2EJFw1LJRtACgktWwF1LxxCIzUvLkYUFBQURi4vNTUvLkYUFAE4JkEbBQIDDC0hAwUDBAoEJUEbBQIDCy4hAwUCBQlUGT0jGyMJGT4jGiMJAAACAAAAJgPfAyYALgBNAAA3ETQ2MyEyFh0BFAYjIiY9ATQmIyEiBhURFBYzITI2PQE0NjMyFh0BFAYjISImNSU3NjQvASYiBwYUHwEhIgYVFBYzIQcOARUUFhcWMjcALSACACAtDwsLDw8K/gALDw8LAgAKDw8LCw8tIP4AIC0DRZoHB5oHFQgHB279vgsPDwsCQm4EAwMECBUHcwJnHy0tH80LDw8LzQoPDwr9mQoPDwrNCw8PC80gLS0giJkIFQiZCAgHFgduDwsKD24ECQUFCgMICAAAAAAIADP/8wOaA1oAJQBIAFoAaAB2AIgAlgCkAAABIiYnJjQ/AT4BNTQmJyYiDwEGIicmND8BNjIXHgEVFAYPAQ4BIwEiJicmND8BNjIXFhQPAQYUFx4BMzI2PwE2MhcWFA8BDgEjEyImLwEmNDc2Mh8BFhQHDgEjNyImPQE0NjMyFh0BFAYHIyImNTQ2OwEyFhUUBgEiJi8BJjQ3NjIfARYUBw4BIzcjIiY1NDY7ATIWFRQGASImPQE0NjMyFh0BFAYCswUJBAcHnRQUFBQociidCBUHCAidN5w3Gx0dG50DCgX+PSZFGzc3nQgVCAcHnSkpEzIcGzIUnQcWBwgInRtFJSoFCgRmBwcIFQdnBwcECgRmCw8PCwsPD6WZCw8PC5kLDw8CKQUKBGYHBwgVB2cHBwQKBGaaCg8PCpoLDw/+wgsPDwsKDw8BcwQEBxUInRMzGxwyEygonQcHCBUHnTc3GkUmJkUanQQE/oAdGjicN50ICAcWB50ocigUFRUUnQcHCBUInRodAmcDBGYIFQgHB2cHFQgEAzMPCpoLDw8LmgoPmg8LCg8PCgsP/mcDBGYIFQgHB2cHFQgEA8wPCwsPDwsLD/7NDwuZCw8PC5kLDwAAAAADAAD/wAPNA40AOABVALEAAAEmJy4BJyYjIgcOAQcGBwYHDgEHBhUUFx4BFxYXFhceARcWMzI3PgE3Njc2Nz4BNzY1NCcuAScmJwEiJy4BJyY1NDc+ATc2MzIXHgEXFhUUBw4BBwYjAS4BDwEnJgYHBhYfATgBMTAyFTAyMTAyMTAUMTIwMzAWMTgBMzgBMzgBMTIUMTAyMTAyMTAyMTAyMTAyMzAyMTgBMToBMTA0MToBMzgBMTYyNzgBMTIwMSU+AScDPiIoKFcvLzEwLy9YJygjIhsaJAoJCQokGhsiIygnWC8vMDEvL1coKCIjGhskCQoKCSQbGiP+qFpPT3YjIiIjdk9PWlpQT3YiIyMidk9QWgEhBhQJ/MUIFQYGAwnSAQEBAQEBAQEBAQEBAQEBAgECAQEBAQEBAQEKCQYFAv4jGhskCQoKCSQbGiMiKChXLy8xMC8vVygoIyIbGiQKCQkKJBobIiMoJ1gvLzAxLy9XKCgi/PUiI3ZPT1paUE92IiMjInZPUFpaT092IyICWgkFBZGJBgMJCRUGkwEBAQEBAQGaBRUJAAAAAAUAM//AA5oDwAAdACMAOwBBAFMAAAEjNTQmIyEiBg8BDgEVERQWOwEVFBYzITI2NRE0JiUVFAYrARMiJjURMzI2PQEhMhYdASMiBg8BDgEVERMVFAYrAQEUBiMhIiY1ETMyNj0BITIWFQNNgC0g/oAFCgOzBAQtIIAtIAIAIC0t/ZMPC3UPCw+AIC0BTQsPzQUKA7QDBM0PC3UCKA8K/gALD4AgLQFNCg8C84AgLQQDtAMKBf3nIC2AIC0tIAKZIC2PdQsP/c0PCwHmLSCADwuABAOzBAkG/poB9XULD/3nCw8PCwHmLSCADwsAAwAAACYEAAMmABsAOABYAAAlISImNRE0Nj8BPgEzITIWHwEeATMhMhYVERQGASIGDwEOARURFBYzITI2NRE0JiMhIiYvAS4BIyEBIzU0JiMiBh0BIyIGFRQWOwEVFBYzMjY9ATMyNjU0JgOz/JogLQgGHAgjEQFnEiIIHAIJAwGAIC0t/JMDCQIcAwYPCwNmCw8PC/6AEiIIHAIJA/6ZAhqADwsKD4ALDw8LgA8KCw+ACw8PJi0gAhoNIww4EBUVEDgDBi0g/gAgLQLNBgM4BxcH/eYKDw8KAgALDxUQOAMG/pqACg8PCoAPCwoPgAsPDwuADwoLDwAGAAAAJgQAAyYAGwA4AFYAdACBAI0AACUhIiY1ETQ2PwE+ATMhMhYfAR4BMyEyFhURFAYBIgYPAQ4BFREUFjMhMjY1ETQmIyEiJi8BLgEjIQEiJicuATc+ARceATMyNjU0NjsBMhYVFAYrAQ4BIycjIiY1NDY7AT4BMzIWFx4BBw4BJy4BIyIGFRQGIxciJjU0NjMyFhUUBiM1IgYVFBYzMjY1NCYDs/yaIC0IBhwIIxEBZxIiCBwCCQMBgCAtLfyTAwkCHAMGDwsDZgsPDwv+gBIiCBwCCQP+mQGAIT0ZCAEHBxUIEiwXNUsPC2YLDw8LTgpkRJlnCg8PCk8JZUMiPRkIAQcHFQgSLBg1Sw8KmR8tLR8gLS0gCg8PCgsPDyYtIAIaDSMMOBAVFRA4AwYtIP4AIC0CzQYDOAcXB/3mCg8PCgIACw8VEDgDBv3NGBYHFQgIAQcQEUs1Cw8PCwoPQliaDwoLD0FYFxYHFQgIAQcPEUs1Cg80LSAgLS0gIC1nDwsKDw8KCw8AAAABAAD/wAQAA4oARAAABSInLgEnJicmJy4BJyY1NDY3PgE3Fw4BBw4BFRQXHgEXFjMyNz4BNzY1NCYnLgEnNx4BFx4BFRQHDgEHBgcGBw4BBwYjAgAzMjFcKiokJBwcJgoKKCclaD8rM1UeHyEhIHFMTFZWTExxICEhHx5VMys/aCUnKAoKJhwcJCQqKlwxMjNACgomHBwkJCoqXDEyM0mLPTtfH1YZTTExcTtWTExxICEhIHFMTFY7cTExTRlWH187PYtJMzIxXCoqJCQcHCYKCgAAAAYAAAAABAADgAAXABsAMwA3AE8AUwAAATU0JisBIgYdASMVMxUUFjsBMjY9ASE1BTUzFQU0JisBIgYdASEVIRUUFjsBMjY9ATM1Iwc1MxUFNCYrASIGHQEjFTMVFBY7ATI2PQEhNSEHNTMVAcAcFKAUHMDAHBSgFBwCQP0AgAHAHBSgFBz9wAJAHBSgFBzAwMCA/sAcFKAUHMDAHBSgFBwCQP3AwIADQBAUHBwUEIAQFBwcFBCAgICAsBQcHBQQgBAUHBwUEICAgICwFBwcFBCAEBQcHBQQgICAgAADAAD/wAQAA8AADwA7AEcAAAEhIgYVERQWMyEyNjURNCYBIicuAScmNTQ3PgE3NjMyFhcHLgEjIgYVFBYzMjY3IzUzHgEVFAcOAQcGIwEjFSM1IzUzNTMVMwOg/MAoODgoA0AoODj9uDUvLkYUFBQURi4vNTRWIkYOMyVCXV1CTEEEkfIBAxIRQS0uNwIAQEBAQEBAA8A4KPzAKDg4KANAKDj9ABQURi4vNTUvLkYUFCQfQw4aX0NDX1McWAoUDTcuLkISEwEAQEBAQEAAAAAAAQAA/8AEAAPAACMAAAEhIgYVERQWMyERIzUzNTQ2OwEVIyIGHQEzByMRITI2NRE0JgOg/MAoODgoAaCAgHFPgIAaJsAgoAEgKDg4A8A4KPzAKDgBwIBAT3GAJhpAgP5AOCgDQCg4AAACAAAAWAQAAygAQwBHAAABMCYnLgEnJicuASMiOQEwIyIGBwYHDgEHDgExMAYdARQWMTAWFx4BFxYXHgEXMjEwMzI2NzY3PgE3PgExMDY9ATQmMQERDQED9hIXHTsPNT8/ayQkJCRrPz81DzsdFxIKChIXHUMRHzo6cysrJCRrPz82DzodFxIKCv2gARX+6wKNThcfCwIEAgICAgICBAILHxdOaD5OPmdPFx8KAwMCAgIBAwICBAELHxdPZz5OPmj+rgEgkJAAAAQAAP/ABAADwAAPABMAHwAzAAABISIGFREUFjMhMjY1ETQmASMRMyciJjU0NjMyFhUUBgEjETQmIyIGFREjETMVPgEzMhYVA6D8wCg4OCgDQCg4OP24gIBAGyUlGxslJQHlgCUbGyWAgBQ6IjxUA8A4KPzAKDg4KANAKDj8wAHAQCUbGyUlGxsl/gABABslJRv/AAHATxs0XkIAAAQAAABJA7cDbgAQACEAMQBBAAABFRQGIyEiJj0BNDYzITIWFREVFAYjISImPQE0NjMhMhYVARUUBiMhIiY9ATQ2MyEyFhEVFAYjISImPQE0NjMhMhYBtyse/tseKyseASUeKyse/tseKyseASUeKwIAKx7+2x4rKx4BJR4rKx7+2x4rKx4BJR4rAW7cHisrHtweKyseAbfcHisrHtweKyse/kncHisrHtweKysBmdweKyse3B4rKwAJAAAASQQAA24ADwAfAC8APwBPAF8AbwB/AI8AACUVFAYrASImPQE0NjsBMhYRFRQGKwEiJj0BNDY7ATIWARUUBisBIiY9ATQ2OwEyFgEVFAYrASImPQE0NjsBMhYBFRQGKwEiJj0BNDY7ATIWARUUBisBIiY9ATQ2OwEyFgEVFAYrASImPQE0NjsBMhYBFRQGKwEiJj0BNDY7ATIWERUUBisBIiY9ATQ2OwEyFgElIRa3FyAgF7cWISEWtxcgIBe3FiEBbSAXthcgIBe2FyD+kyEWtxcgIBe3FiEBbSAXthcgIBe2FyABbiAXtxYhIRa3FyD+kiAXthcgIBe2FyABbiAXtxYhIRa3FyAgF7cWISEWtxcg7m4XICAXbhYhIQEObRcgIBdtFyAg/sVuFyAgF24WISECM24XICAXbhcgIP7EbRcgIBdtFyAg/sVuFyAgF24WISECM24XICAXbhcgIP7EbRcgIBdtFyAgAQ5uFyAgF24XICAABgAAAEkEAANuAA8AHwAvAD8ATwBfAAAlFRQGKwEiJj0BNDY7ATIWERUUBisBIiY9ATQ2OwEyFgEVFAYjISImPQE0NjMhMhYBFRQGKwEiJj0BNDY7ATIWARUUBiMhIiY9ATQ2MyEyFhEVFAYjISImPQE0NjMhMhYBJSEWtxcgIBe3FiEhFrcXICAXtxYhAtsgF/3cFyAgFwIkFyD9JSEWtxcgIBe3FiEC2yAX/dwXICAXAiQXICAX/dwXICAXAiQXIO5uFyAgF24WISEBDm0XICAXbRcgIP7FbhcgIBduFiEhAjNuFyAgF24XICD+xG0XICAXbRcgIAEObhcgIBduFyAgAAABAAAAAAQAA5IAOwAAARQGBwEOASMiJj0BIyIHDgEHBhUUFhceARUUBiMiJicuAScuATU0Njc2Nz4BNzY7ATU0NjMyFhcBHgEVBAAGBf7cBg0HDxaAXEtMah4dAgEBAgoIBgcDBwoEGTAMEh44N4pLTEaAFg8HDQYBJAUGAkkHDQb+3AUGFg+SDAtFPz9mEiMRBw8HCAwFBQkYCjePPDBhLUotLjEICJMPFQUG/twFDgcAAAABABkASQOeAyUARQAAAQ4BBxYUFRQHDgEHBiMiJiceATMyNjcuASceATMyNjcuAT0BHgEXLgE1NDY3FhceARcWFy4BNTQ2MzIWFz4BNw4BBz4BNwOeEy8bASMihWJif0+QPQsWDEB1MD1eEgkRCQ0YDEBUEioXJS0NDCIqKmE2NjoDAmxNJ0YZIDsbCyodHDYZAs4cMBQGDAZbXl2XMDAsJwEBKSYBSDcCAQMDDWVDAgoMARlRMBkvFSoiIzIODwMKFQtMbSAbBhcQIDURAw8LAAAAAAEANgAAAiQDtwAZAAABFSMiBh0BMwcjESMRIzUzNTQ3PgE3NjMyFgIkWjQfpxaRr5KSEBA5KCgxLkgDsJcuJGyp/k4Bsql8NykqOQ4PBQAACAAAABYDbgNuAFsAZwBzAH8AiwCYAKUAsgAAATIXHgEXFhUUBw4BBwYHBiY1NDY1NCYnPgE1NCYnPgEnJgYxLgEjIgYHMCYHBhYXDgEVFBYXDgEHDgEnLgExIhYxHgExFjYxHAEVFAYnJicuAScmNTQ3PgE3NjMBNiYnJgYHBhYXFjYXNiYnLgEHBhYXHgEXNjQnLgEHBhQXHgEXNiYnLgEHBhYXHgEXNiYnJgYHFBYzFjY3FzQmByIGFRQWNzI2NTcuASMOARcUFjc+ATUBt1tQUHciIxcWUDc3QREOARIMSn8YFQMKEhtdGzccHDgaXRsSCgMVGH9JCg8DE1AdEjEgHRYbE4ENEUE3N1AXFiIjd1BQW/7vAQIDAgQBAQIDAgQTAgECAgYBAgECAgUTAgICBQMCAgMFGgICAgMHAgICAwMGIwEFBAMHAQQEAwcBJAYEBAUFBQMGIQEGAwQFAQYEBAQDbiMid1BQW0lCQm0oKRYDEAgLQiwfKAoIUn8kOhcJPy0JNgcICAc2CS0/CRc6JH5TCAgeFQgGMx8OGwo2OwcbLgkIEAMWKShtQkJJW1BQdyIj/YkCBAEBAQECAwIBARIBBgICAgIBBgICAhgCBgMDAgECBgMDAhcCBwIDAQICBgMDAQwDBQEBAgMCBgICAwMDBAEDAwMEAQQCBgIDAQUDAgMBAQQDAAAFAAAAAARJA24ADwAaACUAKQAuAAABMhYVERQGIyEiJjURNDYzFSIGHQEhNTQmIyEBMjY1ESERFBYzISU1MxUzNTMVIwPuJTY2JfxtJTY2JQcLA7cLB/xtA5MHC/xJCwcDk/ykk0nb2wNuNib9SSU2NiUCtyY2SQsIgIAIC/0kCwcBXP6kBwtJSUlJSQAAAAACAAAAFAUlA1oANwBDAAABFAcOAQcGIyInLgEnJjU0Nz4BNzYzMhYXBy4BIyIHDgEHBhUUFx4BFxYzMjc+ATc2NyM1IR4BFSUVIxUjNSM1MzUzFQM1HR1pSkpbV0xNcSEhISFxTUxXVY02cRdTPTYvL0cUFRUURy8vNj4sKzgPDgTuAYsDBAHweHh3d3gBrVpLS2wfHiEhcU1MV1dMTHIhITszbRYqFBVIMDA3NzAwSBUVFBQ4Hx8XkBAhFUZ4eHh4d3cAAQAAAQACSQJJABUAAAEUBgcBDgEjIiYnAS4BNTQ2MyEyFhUCSQYF/wAFDQcIDQX/AAUGFg8CAA8VAiUIDQX/AAUGBgUBAAUNCA8VFQ8AAAABAAAA2wJJAiUAFAAAARQGIyEiJjU0NjcBPgEzMhYXAR4BAkkVD/4ADxYGBQEABQ0IBw0FAQAFBgEADxYWDwcOBQEABQYGBf8ABQ4AAQAlAJIBbgLbABUAAAERFAYjIiYnAS4BNTQ2NwE+ATMyFhUBbhYPBw0G/wAFBQUFAQAGDQcPFgK3/gAPFgYFAQAFDgcHDQYBAAUFFQ8AAAABAAAAkgFJAtsAFQAAARQGBwEOASMiJjURNDYzMhYXAR4BFQFJBgX/AAUNBw8WFg8HDQUBAAUGAbcHDgX/AAUGFg8CAA8VBQX/AAYNBwAAAAIAAAAlAkkDSQAVACsAAAEUBgcBDgEjIiYnAS4BNTQ2MyEyFhU1FAYjISImNTQ2NwE+ATMyFhcBHgEVAkkGBf8ABQ0HCA0F/wAFBhYPAgAPFRUP/gAPFgYFAQAFDQgHDQUBAAUGAUkHDQb/AAUFBQUBAAYNBw8WFg/cDxYWDwcNBQEABQYGBf8ABQ0HAAAAAAIADQBJA7cCqgAVACUAAAkBBiIvASY0PwEnJjQ/ATYyFwEWFAcBFRQGIyEiJj0BNDYzITIWAU7+9gYPBR0FBeHhBQUdBQ8GAQoGBgJpCwf92wgKCggCJQcLAYX+9gYGHAYPBuDhBRAFHQUF/vUFDwb++yUHCwsHJQgKCgAFAAD/5gMiA4gACQAWAC0ASgB7AAABFgYnJjQ3NhYVNy4BBw4BFx4BNz4BJxMuAScmJyYiBwYHDgEHHgEXFjI3PgE3Ew4BBwYHDgEnJicuAScuASc/ARYXFjI3NjcWBgcTBgcOAQcGBw4BBwYHDgEjJicuAScuAScmJy4BJyYnPgE3PgE3Njc2FhcWFx4BFxYGAdIEQh8iIR1BPwhxOCQrAgJUNTRGB4kTOxwoKShRKSgoGzYRG0kjQIE/JEkbIAwJLSYqKlcsLCosXRkKDwcDCz9LSppKS0AUDQFoCAcIEAgJCAQtFigrK1ktLSw7dTEXCQQHCAgPBwcFBUYgK1stMTEwYjAwLyFDFgsCAcwkLBMPUw8SJSEMPUEZEEUnNUkFBVc0ATYZDwUGBAMEAwcFDxgaDwQJCAQPG/2wKmEZFQwMCQICBwkjKilUKgkFKhUVFRUqBicPAiUvLi9eLi8vGyILFQwMCwEEByMmETcZLCwsWCwsLCcnDBAQBQQCAQYICA4KHx0NIAAAAAACAAAAAAMcA7cAPABVAAABDgEHDgEjIiYnLgEjIgYHDgEjIiYnLgE1NDY3PgEzMhYXHgEzMjY3PgEzMhYXHgEXDgEHDgEVFBYXHgEXAxQGBw4BBw4BBw4BBz4BNz4BNx4BFxwBFQMcCyIZJUokDycaGSwREigYFyYOLFYqKiogISBRMRUyHh4nCgwpHRwxFSM9Gg8eDxcgCxITFBQTLhnXCAgJGxIPHw8KHhQBFhYVSDIBAQEBASJIJTg4CQkJCQkKCQpKSkqPRkJrKSkpCAkICQoKCQoTEgodEhMiDxo7ISNAHB0kBwKeEicVFSgSDxUFAwUCK0kfHyoMBAYDAwUDAAAAAAQAAP+3A7cDbgADAAcACwAPAAABESURAREhEQERJREBESERAYb+egGG/noDt/36Agb9+gF4/ow2AT4Bqf6HAUP+jf4/RwF6Afb+OgF+AAAACQAG/7oDUQO3AAYADQAaANwA7QD7AQgBGwGqAAABMQYUIwY2FwYmBzE2FgcmBgcOARcxMjY3PgEFNCYnNiYnLgEnHgEXHgEHDgEjBjYnLgEnLgEnJjYnLgEjJjY3NhYHBhY3NiY3LgEnBhYnJgY1NCYjIgYHBhY3PgEjIiYnJjYXMhYHDgEHDgEHDgEXHgEXFjY3PgE3PgEXFgYHDgEHDgEHBiYXHgE3PgEXFgYHDgEnLgEXFAYXDgEHBhYHBiY3NiYHBhYXHgEXHgEXFgYHMR4BBzYmJy4BNz4BFx4BNz4BNz4BFx4BFQ4BBwYWMz4BNzYmNz4BMz4BFwE2JicmFDcxMhYHFBYzMDI1FyYiJy4BBzEGFhcWNicnNiYjBhYXMTIWFxQ2NzYmJy4BIwYWBzEOARcWNjc2MgEWBgcOAQcOAScuASciJiMOAQcOAScuAScuAScmNjc2Jjc2Fjc+ATUWBgcOAScmBgcGFhceAQcOARceARceARceATc2JicxLgEHBiY1PgE3PgE3PgE3LgEnJjY3PgEzMhYXHgEHBhYXHgEXHgEXFgYHDgEnLgEnJgYHBhYXFgYHBhY3PgE3NiYnLgE3HgEXAXsJBQQEQAUECAwJzQQBBAMJBgIJAwICAeYZBwwGCAYqFAYRChEZCwQSBx4KDQ4ZBBEiBQUXJgscBgcBGBgMBAcLDAkEAgYbDzsNBggkFA8RDwECDgYECQgECQEBCw4RBQIFCwEGEQUHAwYTCBsSHAwKLgYDBgIFAQsPHg0ODgwdHxMHDxAkQwQBEwohMhUUIAEzFA0uBAIDBQYmCQICAwsICQQRBw9XCw0KGw4XAREGBwQKAgENBQ4zHR45DwYKAwMDAQkDBAENAwsCAhIVBg4JAU0S/pkBBwIFAgIDAQEEAu8CCgcIBgMJGgkFBgFmAQ0CBQECBAYBBR8BCQQDBwMJAgECBwQEBwgDDgFFNVofGDgMCTwVGAQlEyUTECEQOSYlGUQ2JUAIBxQCARMNCygQEA8GCw4IGwwKDAMDAgQFCQEBEwIBCgoROh4iQhZBIAo3TR0HAwEXCBAfGRIvBQQEAQEaMgweER48FSImAgIJCgskHSIxCAYNCQ4eKxsPCAwXBAMDBAcCBQlMIiEjKkATIh8ICwIsDALMAQoBDQkBCQIGCvYBDAYFCAEIBggIzAgNAyYuJBw/CwQYEyBYJxAIBEY1PBwEThodGigHAhEBOgECKQsMCAQDIwQkFAMFVgYJBgUiJSQODScCAQwQCwsTAS0CBAsBCQgECA8DCxUBAQYEAw0LBQEBAg0CBQ4FBQYCBQ0TBgcBATQUBAoEES0LCzsVIT8lBGAgEyoMEzotBwQEFTUVCQsHEUQLDCwDGxosCSAMCAkCAggGEAgEAxcXDAgCAg8NDhsMDREYLxgcVRkHAyMDDgHYCw4BAQkBBQQFBgFwCAQGDAMKHwIBCwZ6CgoBBAELBgEChwIFAwMGAQ4EBQgDAwoDAf0GIDQQDSwMCAUKDR8BAQEBAQExAgEeCwgLEBEkERUzCwoECQkUFBUfCQUEAQEDBAUQCwwSDQ4eDAQIAwQLBwgXAwlmEVZhFgYcCBwfFilWGBhDFC1bKixLGwYGEBAYXCUePSAlOR4keS0qMgECOgIBGw4WChcLHw0bNSA7GRwcFA8VJQwKTAo4IAgAAAIAAAAABAADtwAhACwAAAERByYnLgEnJjU0Nz4BNzY3FQYHDgEHBhUUFx4BFxYXMREBFyU3LgEnNR4BFwJtnGJVVX4jJCEidVBRXT00NEwVFRgXUzk5QgIaFf7UVCFSLU+MOAO3/JJJCR0dWTk5Pz03N1geHgtiCxYWPSUmKSwnJz4VFggDCf7/30IvFBwJYgouIgAHAAAAAAUlA24ACwAVAB8AIwBLAFoAawAAASMwNjcwNjcXHgExJScuASsBBx4BFzcHJy4BJxMzEyMTMxMjBS4BIyIGFQYWFx4BFRQGIyImLwEHHgEzFjY3NCYnLgE1NDYzNhYfASUjIgYHAzM+ATEzMBYXMxMRFAYjISImNRE0NjMhMhYVBGlPDxYKAwcNCfzGIQMYEJkBT3odZ10KD0MpTWSVZE9fO14Bew4sG0ZaATkbHBUlFBwmFwwOETkgS1kBJykZHBsbGCINCQEASREaB41kDAh5BQZYSiwe+24eKyseBJIeLAGBKjwZCh9CKCWpEQ4IFFtRyPszKEQR/twBb/6RAW8JBQpENSguDg0UDBMRCAsGUggLAUU5HzETDRQNDBMBCAYFWQ0S/rAiFRcgAib9JB4rKx4C3B4rKx4AABgAAAAABSUDbgAbACkARQBNAFoAXwBzAH8AhwCTAJ8AzwDzAQUBLgFGAVwBbgGJAZsBrQG/Ae8CAAAAAS4BIyIHDgEHBhUUFx4BFxYzMjY3JicmNDc2NxcGBw4BFxYXNjc2NCcmJxYXHgEHBgceATMyNz4BNzY1NCcuAScmIyIGBwEzNSMVMxUzOwE1IwcnIxUzNRczNwMVIzUzFTMnMjQzMDQxPAExIiYrARUzNTElNDYzMhYVFAYjIiYlMhYXIz4BMxc0NjMyFhUUBiMiJjc0NjMyFhUUBiMiJhcqATEiJjUiNDE0JjUwNDc8ATM0MjM0MjMwMhU6ARUyFBccATEcARUiFCMUBiMwIiUzNTQmJyIGBy4BIyIGBzUjFTM1NDYzMhYdATM1NDYzMhYdATsBNSMVLgEjIgYVFBYzMjY3FTc0Ji8BIiY1NDYzMhYXNy4BIyIGFRQWHwEeARUUBiMiJicHHgEzMjY1FycOASMiJj0BMzUjNSMVIxUzFRQWMzI2NyIGFRQWMzI2NycOASMiJiczNTQmIzMiBgc1IxUzNTQ2MzIWFzcuARcUFjMyNjcnDgEjIiY1NDYzMhYXNy4BIyIGFRczNSMVLgEjIgYVFBYzMjY3FTciBgc1IxUzNTQ2MzIWFzcuARczNSMVLgEjIgYVFBYzMjY3FTciBiMiBhUiBjEUBjEUFhUUFhcwFjMWMjM6ATcyNjM0NjU2NDUwNCcwJjEuASMiJhMRFAYjISImNRE0NjMhMhYVAn8jUis8NTVPFxcXF081NTwrUiM5HRwdHDkTNxwbARwcNzgbHBwbJTkdHAEdHDokUis8NTVPFxcXF081NTwrUiQBqAQKBAIQAgIEAwMCAwIDBAMDAQIBAQEBAQMC/TENCwoNDQoLDQEPCAoCKAEKCcsMCwsMDAsLDJwMCwoNDQoLDFoBAQEBAQEBAQEBAQECAQEBAQEBAQEB/P4REA4IDgUEDQkGDAQREQoJCAkQCwgJCF8REQQMCBEWFhEIDARmDwwIBgcHBwgNBAcGEAoOEg4NBwgGCQkIDQQIBxEJERNKBAQIAwcEGxsREBAMDwULNRAWFhEJEAcIBQwFCQ0COhQRWwcKAxERCAkCBQMFAwYOFxIJDQYIBQoFCg4OCgUKBQgGDQkSF4wREQQMCBAXFxAIDARMBwoDEBAJCAIGAgUCB00REQQMCBAXFxAIDAQtAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAc0sHvtuHisrHgSSHiwC9BgZFxdPNTU8PDU1TxcXGRgvQECGQEAvDis9PIA9PCsrPD2APD05L0BAh0A/LxgZFxdPNTU8PDU1TxcXGRj+YwICCQsHBwsIBwf+/AECBgMBAQEBAQgDJAoPDwoLDg8jCQkIChkKDw8KCw4PCgoPDwoLDg8fAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAjENEQEGCAYIBQcJTSsKCwsKKysKCwsKK00JBQcXEhIXBgYKGAoLAQIEBAMFBAIOAwUODAkLAgEBBAMFBQUDDQUFDgwUDgICBwYjDxgYDyMNEAROFxISFwUGDQQFCQoHEhcHBQlNLAkLAQIQAgEpEhcEBg0DBA4LCw4EAw0FBRcSJ00JBQcXEhIXBgYKUAcFCU0sCQsBAhACAVBtKQUHFxISFwYGCgwBAQECAQIBAQEBAQEBAQEBAQEBAQEBAgECAQEBAsz9JB4rKx4C3B4rKx4ADAAAAAAFJQNuAA8AGQAlACoAVABvAHwAiQCRAJ4ArAC8AAATFAYHDgErATUzMhYXHgEVJRQGKwE1MzIWFQU0JisBFTMyNjc+ARczNSMVNzQmJy4BNTQ2MzIWFzcuASMiBhUUFhceARceARUUBiMiJicHHgEzMjY1FzUOASMiJjU0NjMyFhc1LgEjIgYVFBYzMjY3AREGBw4BBwYHITI2NQE0JiMiBhUUFjMyNjUXNyMHJyMXMzczNSM1MzUjNTM1IxU7ASc+ATU0JisBFTM1MxMRFAYjISImNRE0NjMhMhazCwoIGRIJCRIYCQoLA/cTEgsMERP8LzktNjYVIQ4QEhElJbcXIBAMDwwJDgcUDB0PGSMVGgsMAwYFEA0NFQYYDR8VHiSfCxUNHCQlGg0VDAwWDCo7OisMFgwCwCJNTeydncMDgA8W/ho9Kys8PCsrPVdSKTMzKVIUYmpEQUFEauAuPBUWIyA4JQWmLR/7ch8sLB8Ejh8tAfsOGQkIB34HCQgZDiUPDzoODiUqNb4KDA0nSr6+OhYaCwYKCAkMBwgZCwofFxQXCgQEAwMKBgwPDQwXEhIjHDQsCwolHRsnCwssBgU6KSo6BQb+pwEtFSoqYTEyJBUPAbErPDwrKz09K2PDgIDDBSAzICsgvlAEHBYbHb5MATn9LCAtLSAC1CAtLQAAEgAAAAAFJQNuAAIADAAPABkAIwAtADAARQBWAGIA3gDzAQcBEwEXATABSgFqAAATMycBNycjFTMVIxUzNxc1FzQmKwEVMzI2NTc0JisBFTMyNjUDNCYrARUzMjY1BTMnJRUjNQcjJxUjJyMHIzczFzUzFzczARQGIxUjJwcjNTMXNzMyFhUnFSM1MxUjFTMVIxUBFRQGIyEiJjURMzczFzM1FzM3FSE1MzIWHQEzNRY2MzczFzM1FzM1IxUnIxUnIyIGBzUjFS4BIyEHJyMVJyMHNTQ2MyEyFhURIyIGBzUjIgYHNSMVLgErARUuASsBBycjFTM3FzM1MzI2NxUzNTMyFh0BITI2NxUzMjY3JRQGBx4BHQEjNTQmKwEVIzUzMhYVAxQGBx4BHQEjNCYrARUjNRcyFhUBFSM1MxUjFTMVIxUDFSM1ARQGKwE1MzI2NTQGNTQ2OwEVIyIGFRQ2FTcVDgErATUzMjY1NAY1NDY7ARUjIgYVFDYXAxUjJxUjJyMHIyImNTQ2OwEVIgYVFBY7ATczFzUzFzVEMxoBSiooXVFRW1o5bA4JMC8KDqUQCC8uCg+fDwkvLgoPAQYzGf3DJTYhNUwOTQ4oQjc/PDEsPQE+TiBILi+TlS4vdhokpnx8V1VVA1UtH/tyHyw/Dx8OfQtADAE1BgQBoBxGHQ4gDoITaGYPaQ6OECAOYgkWC/6ZGRhxDWAtLB8Ejh8tRQwYCmULGgi1ChsMeAkfDIUfHcfEHx54DA0aDWMFBAMBLgwcCmAOHA3+Tg0NEAklDxMnJVgWJp4ODBAIJQIfKCRXFicBLnt7VlVVnSYBsiEZSEgHDF8fFUtECA1giQkcDkdHBwxfHxZKRAgMRhJfNEZLD00OKyYkJSckHS0OFhE0OD44QgIxPv6WLS0cIB4sP3wiCgkoCgsCCwYjBwsBCwoGIgYMKD4bm3l5eXkiIpuTk2lp/sIvBTQzM5szMxYdwyCbIRwfH/7AgiAtLSABgyMjGhobGzkFAzENDgEjIyEh2BkZGRkFCA0NCAU3NxkZZt8fLi4f/n0GBw0FCA0NBwYNCQQhIdghITMCBTo4AgUxBgcNAwaGDRcFBhQPHxoTDDmbDhwBCw0YBQUUEB4ZHzibAQ4b/qQgmyAcIB4BhZub/osbFiEFCRkTOBcXIQUJGRY4HToMCCEGCBkTOBcXIQUJFQ4XAVeadHQiIiclJygiBCgUGXqSkmtrAAAACwAAAAAFJQNuAAwAGQAmAD0AXAB9AJQAswDFANIA4wAAARQGIyImNTQ2MzIWFSUUBisBNz4BOwEyFhUXFAYjIiY1NDYzMhYVJTQmKwEiBg8BFBY7ATI2PwE2FjMyNjUXNzYmKwEiBhUuASMiBhUUFjMyNjcOARUUFjsBMjY3NzQmKwEiBg8BJy4BKwEiBhUUFhcOARUUFjsBMjY/ATY0NzQmKwEiBg8BFBY7ATI2PwE2FjMyNjUXNzYmKwEiBhUuASMiBhUUFjMyNjcOARUUFjsBMjY3NzU0JisBIgYPARUUFjsBMjY1JQ4BKwE3NDY7ATIWBwERFAYjISImNRE0NjMhMhYVAaoeFQ8VHRUPFgHAHBYSCQEEAwoPGskdFRAVHRUQFfzyMB9cBAcBJQQEKwUHAQoCHwgxOLEXAQUDLAYDChwRKjkoIQ8jCwECBAQnBQcB/wQDLAMGAjwZAgcEKwMELQMEKgQDLAMGAZIB2S8gWwUHASUEBC8DBQEKAh8IMTixFwEFAywGAwocESo4JyEQIgsBAgQEJwUHAXwEAyoDBAElBAQlBQf8KgMbExMKBQILExkEBEUsHvtuHisrHgSSHiwBsRUcEhAVHhMRVRkQPQMDBxNVFRwSEBUeExFiJBwGBekEBQYFPg0CODGylQMGDgUPCD8pISgNDAMHAgQFBgWWAwUDA1lWBAUFAwKFCQc5BQMEAwPSAQIdJBwGBekEBQQDQg0CODGylQMGDgUPCD8pISgNDAMHAgQFBgXpAQMFBALuAQMFBgWdFgs9AwMLFwEn/SQeKyseAtweKyseAAAACgAAAAAFJQNuABAAFwBFAGEAdAB5AJEAnQC+AM8AAAEUBgcOASMiJic1PgEzMhYVNyM+ATMyFgU0JicxLgE1NDYzMhYXNy4BIyIGBw4BFRQWFx4BFRQGIyImJwceATMyNjc+ATU/ASM1DwMzFRQWFx4BMzI2NzUOASMiJj0BMxc1LgEjIgYHJyMRMzU+ATM6ARcXMxEjESU0JicuASMiBgcnIxE3NR4BMzI2Nz4BNSU0JiMiBhUUFjMyNgU0JicuASMiBhUUFhceATMyNjcnDgEjIiYnLgEnMzY0NRMRFAYjISImNRE0NjMhMhYVA5EGBgYPCQcLBgwSAxAR+j8CDw8PD/yGKSQSFAsKFCUOCgosHxYjDQ4NKCMWEg4NES8SCg80HRcmDQ4PqQo2SgobCSMNDAsfFhAVCAQPBg0LLLQECAQSGwYFS1UJFw8EBwQVVlYBZA0NDB8UEyEPBUtVChQJECsSERL+9BoTExoaExMaAgENDg4qGjdAEhIQLh4cMBAJECUUDREGBwgBjQFKLB77bh4rKx4Ekh4sAbMUHgsJCwMCgAwGJCIUHRsbaiQlDAcNCAgHDAdABg0LCwsgEyMlDAgOCQgJDgpACQ8LCgwhFntATQxBBTt9GCILCAkFAkMBAw4PcA5PAQESESD+8q8KCAHAAQ7+8o8iNBAPDxAQG/6PDlcDBA0TEzonxxIbGxITGxu5IDISEhNMQSQ2ERAQDAs7CQkGBQYTDQMWBQF0/SQeKyseAtweKyseAAAABAAAAAAFJQNuAAoADwATAB4AADcRIREUBiMhIiY1JRUzNSMjFTM1ATIWHQEhNTQ2MyEABSU2JvuSJTYBbtvb3JMDpCY2+ts2JQRuWwFc/qQlNjYlgElJSUkCkzYmgIAmNgAAAAEAAAABAAAL8g83Xw889QALBAAAAAAA3vGbjQAAAADe8ZuNAAD/twUlA8EAAAAIAAIAAAAAAAAAAQAAA8D/wAAABSUAAAAABSUAAQAAAAAAAAAAAAAAAAAAALcEAAAAAAAAAAAAAAACAAAABAAAAAQAACoEAABWBAAAVgQAACoEAACABAAAgAQAANYEAACABAAA1gQAAIAEAAAqBAAAgAQAAFYEAACqBAABKgQAASoEAACqBAAAkgQAANYEAACqBAABqgQAAFYEAACqBAAAKgQAAFYEAADWBAAAVgQAAFYEAACABAAAqgQAACoEAAAqBAAAKgQAAFYEAAAHBAAAAAQAAAIEAAAABAAAAAQAAAAEAAAABAAAmgQAABoEAAAABAAAEAQAAGYEAAAABAAAMwQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAIcEAABmBAAAAAQAAJwEAAAABAAAAAQAAAAEAAAABAAADwQAAAAEAAAhBAAAMwQAALsEAAAHBAAAAAQAAAAEAADNBAAAAAQAAAAEAAAABAAAAAQAAAAEAAABBAAAzQQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAHkEAAAzBAAAAAQAAAAEAADuBAAA7gQAAKEEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAjQQAAAAEAABmBAAAKwQAAIAEAACIBAAAVQQAAFUEAACABAAAgAQAAKsEAACABAAAVQQAAAAEAAAABAAAAAQAAAMEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAHQQAAAcEAABnBAAABQQAAQAEAAAABAAAZgQAAAAEAAAABAAAMwQAAAAEAAAzBAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAADtwAABAAAAAQAAAAEAAAAA7cAGQJaADYDbgAABEkAAAUlAAACSQAAAkkAAAGSACUBSQAAAkkAAAO9AA0DKQAAAxwAAAO3AAADkwAGBAAAAAUlAAAFJQAABSUAAAUlAAAFJQAABSUAAAUlAAAAAAAAAAoAFAAeACgAQgBoAIwA1AEOAaQBvgH4AhICYgKsAtwDGAMwAz4DTANkA3gDkgPIA/4EaASYBNYE9gUQBUwFsAXcBgwGaAbWBxIHUAfICJII8AmGCtAMIAzaDTIN7A5ID6IQPBEWEh4TGBN6E+QUJhT6FZwWbheQGB4ZHBmAGewaRBsYG54cZB0GHeoeVh68H5gf3iCCIWAh1iJMIswjMiOiI/YkgCVOJeAmRCbiJ7YoHCiMKToqAisMKzgrZCuQK7wsDi2wLhQuuC9yMCIw0jGqMlgzCDOuNFI0+DWeNdw2MjbSNxI3YDeUN+I4DDhUOIA42DkSOTQ7wDyUPU4+dD9WQMZBZkKyQ8hELkSMRThF3EcCSTJJtEoySqpLekvmTNBNpk4cTphPXk/IUDZQnlDSUTZRhFHgUpxTHlN4U+JUClUQVVhVulXiVghWMFZYVqBW3lekWCZYTlrGWxBbsF48Xz5hDGI+Y15jkAABAAAAtwIBABsAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEABwAAAAEAAAAAAAIABwBgAAEAAAAAAAMABwA2AAEAAAAAAAQABwB1AAEAAAAAAAUACwAVAAEAAAAAAAYABwBLAAEAAAAAAAoAGgCKAAMAAQQJAAEADgAHAAMAAQQJAAIADgBnAAMAAQQJAAMADgA9AAMAAQQJAAQADgB8AAMAAQQJAAUAFgAgAAMAAQQJAAYADgBSAAMAAQQJAAoANACkaWNvbW9vbgBpAGMAbwBtAG8AbwBuVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwaWNvbW9vbgBpAGMAbwBtAG8AbwBuaWNvbW9vbgBpAGMAbwBtAG8AbwBuUmVndWxhcgBSAGUAZwB1AGwAYQByaWNvbW9vbgBpAGMAbwBtAG8AbwBuRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==") format('truetype'); + src: url("data:application/x-font-ttf;charset=utf-8;base64,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") format('truetype'); font-weight: normal; font-style: normal; font-display: block; diff --git a/packages/teleport/src/DesktopSession/ActionMenu.tsx b/packages/teleport/src/DesktopSession/ActionMenu.tsx index 8b1f0e718..138d5a6f9 100644 --- a/packages/teleport/src/DesktopSession/ActionMenu.tsx +++ b/packages/teleport/src/DesktopSession/ActionMenu.tsx @@ -20,6 +20,8 @@ import * as Icons from 'design/Icon'; import { Flex } from 'design'; export default function ActionMenu(props: Props) { + const { showShareDirectory, onShareDirectory, onDisconnect } = props; + return ( - + {showShareDirectory && ( + + + Share Directory + + )} + Disconnect @@ -41,6 +49,8 @@ export default function ActionMenu(props: Props) { } type Props = { + showShareDirectory: boolean; + onShareDirectory: VoidFunction; onDisconnect: VoidFunction; }; diff --git a/packages/teleport/src/DesktopSession/DesktopSession.story.tsx b/packages/teleport/src/DesktopSession/DesktopSession.story.tsx index 2f65a91ab..779daab61 100644 --- a/packages/teleport/src/DesktopSession/DesktopSession.story.tsx +++ b/packages/teleport/src/DesktopSession/DesktopSession.story.tsx @@ -53,7 +53,12 @@ const props: State = { onWsClose: () => {}, wsConnection: 'closed', disconnected: false, - setDisconnected: () => null, + setDisconnected: () => {}, + setClipboardState: () => {}, + setIsRecording: () => {}, + canShareDirectory: true, + isSharingDirectory: false, + setIsSharingDirectory: () => {}, onPngFrame: () => {}, onTdpError: () => {}, onKeyDown: () => {}, @@ -136,6 +141,7 @@ export const ConnectedSettingsTrue = () => { errorText: '', }} isRecording={true} + isSharingDirectory={true} onPngFrame={(ctx: CanvasRenderingContext2D) => { fillGray(ctx.canvas); }} diff --git a/packages/teleport/src/DesktopSession/DesktopSession.tsx b/packages/teleport/src/DesktopSession/DesktopSession.tsx index 01e42edc5..f759e16c3 100644 --- a/packages/teleport/src/DesktopSession/DesktopSession.tsx +++ b/packages/teleport/src/DesktopSession/DesktopSession.tsx @@ -107,7 +107,12 @@ function Session(props: PropsWithChildren) { username, hostname, clipboardState, + setClipboardState, isRecording, + setIsRecording, + canShareDirectory, + isSharingDirectory, + setIsSharingDirectory, onPngFrame, onClipboardData, onTdpError, @@ -144,11 +149,22 @@ function Session(props: PropsWithChildren) { { setDisconnected(true); + setClipboardState(prevState => ({ + ...prevState, + enabled: false, + })); + setIsRecording(false); + setIsSharingDirectory(false); tdpClient.nuke(); }} userHost={`${username}@${hostname}`} - clipboard={clipboardSharingActive} - recording={isRecording} + clipboardSharingEnabled={clipboardSharingActive} + isRecording={isRecording} + canShareDirectory={canShareDirectory} + isSharingDirectory={isSharingDirectory} + onShareDirectory={() => { + setIsSharingDirectory(true); + }} /> {props.children} diff --git a/packages/teleport/src/DesktopSession/TopBar.tsx b/packages/teleport/src/DesktopSession/TopBar.tsx index 98d06915c..3d485a1bb 100644 --- a/packages/teleport/src/DesktopSession/TopBar.tsx +++ b/packages/teleport/src/DesktopSession/TopBar.tsx @@ -16,12 +16,20 @@ limitations under the License. import React from 'react'; import styled, { useTheme } from 'styled-components'; import { Text, TopNav, Flex } from 'design'; -import { Clipboard } from 'design/Icon'; +import { Clipboard, FolderShared } from 'design/Icon'; import { colors } from 'teleport/Console/colors'; import ActionMenu from './ActionMenu'; export default function TopBar(props: Props) { - const { userHost, clipboard, recording, onDisconnect } = props; + const { + userHost, + clipboardSharingEnabled, + isRecording, + onDisconnect, + canShareDirectory, + isSharingDirectory, + onShareDirectory, + } = props; const theme = useTheme(); const primaryOnTrue = (b: boolean): any => { @@ -42,30 +50,45 @@ export default function TopBar(props: Props) { {userHost} - - - Clipboard Sharing {clipboard ? 'Enabled' : 'Disabled'} - - - - - {recording ? '' : 'Not '}Recording - + + + + Recording + - + ); @@ -79,6 +102,12 @@ const StyledClipboard = styled(Clipboard)` align-self: 'center'; `; +const StyledFolderShared = styled(FolderShared)` + font-weight: ${({ theme }) => theme.fontWeights.bold}; + font-size: ${({ theme }) => theme.fontSizes[6] + 'px'}; + align-self: 'center'; +`; + const StyledRecordingIndicator = styled.div` width: 10px; height: 10px; @@ -89,7 +118,10 @@ const StyledRecordingIndicator = styled.div` type Props = { userHost: string; - clipboard: boolean; - recording: boolean; + clipboardSharingEnabled: boolean; + isRecording: boolean; + canShareDirectory: boolean; + isSharingDirectory: boolean; onDisconnect: VoidFunction; + onShareDirectory: VoidFunction; }; diff --git a/packages/teleport/src/DesktopSession/__snapshots__/DesktopSession.story.test.tsx.snap b/packages/teleport/src/DesktopSession/__snapshots__/DesktopSession.story.test.tsx.snap index 0ed77a051..778b304bd 100644 --- a/packages/teleport/src/DesktopSession/__snapshots__/DesktopSession.story.test.tsx.snap +++ b/packages/teleport/src/DesktopSession/__snapshots__/DesktopSession.story.test.tsx.snap @@ -1,20 +1,20 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`clipboard error 1`] = ` -.c5 { +.c6 { display: inline-block; transition: color .3s; - padding-right: 8px; + padding-right: 16px; color: #FFFFFF; } -.c11 { +.c12 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c10 { +.c11 { align-items: center; border: none; cursor: pointer; @@ -36,20 +36,20 @@ exports[`clipboard error 1`] = ` color: rgba(255,255,255,0.56); } -.c10 .c4 { +.c11 .c5 { color: inherit; } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:hover, -.c10:focus { +.c11:hover, +.c11:focus { background: rgba(255,255,255,0.1); } @@ -61,7 +61,7 @@ exports[`clipboard error 1`] = ` padding-right: 16px; } -.c3 { +.c10 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -83,25 +83,31 @@ exports[`clipboard error 1`] = ` flex-direction: row; } -.c7 { +.c3 { box-sizing: border-box; padding-left: 16px; padding-right: 16px; display: flex; } -.c8 { +.c4 { box-sizing: border-box; display: flex; align-items: center; } -.c6 { +.c8 { font-weight: 600; font-size: 18px; align-self: 'center'; } +.c7 { + font-weight: 600; + font-size: 22px; + align-self: 'center'; +} + .c9 { width: 10px; height: 10px; @@ -110,7 +116,7 @@ exports[`clipboard error 1`] = ` vertical-align: text-bottom; } -.c12 { +.c13 { display: flex; align-items: center; justify-content: center; @@ -133,7 +139,7 @@ exports[`clipboard error 1`] = ` min-width: 450px; } -.c12 a { +.c13 a { color: #FFFFFF; } @@ -154,45 +160,49 @@ exports[`clipboard error 1`] = `

- - Clipboard Sharing - Disabled -
-
-
-
+
- Not - Recording +
+
+ Recording +
@@ -200,7 +210,7 @@ exports[`clipboard error 1`] = `
clipboard error @@ -213,20 +223,20 @@ exports[`clipboard error 1`] = ` `; exports[`connected settings false 1`] = ` -.c5 { +.c6 { display: inline-block; transition: color .3s; - padding-right: 8px; + padding-right: 16px; color: #FFFFFF; } -.c11 { +.c12 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c10 { +.c11 { align-items: center; border: none; cursor: pointer; @@ -248,20 +258,20 @@ exports[`connected settings false 1`] = ` color: rgba(255,255,255,0.56); } -.c10 .c4 { +.c11 .c5 { color: inherit; } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:hover, -.c10:focus { +.c11:hover, +.c11:focus { background: rgba(255,255,255,0.1); } @@ -273,7 +283,7 @@ exports[`connected settings false 1`] = ` padding-right: 16px; } -.c3 { +.c10 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -295,25 +305,31 @@ exports[`connected settings false 1`] = ` flex-direction: row; } -.c7 { +.c3 { box-sizing: border-box; padding-left: 16px; padding-right: 16px; display: flex; } -.c8 { +.c4 { box-sizing: border-box; display: flex; align-items: center; } -.c6 { +.c8 { font-weight: 600; font-size: 18px; align-self: 'center'; } +.c7 { + font-weight: 600; + font-size: 22px; + align-self: 'center'; +} + .c9 { width: 10px; height: 10px; @@ -339,45 +355,49 @@ exports[`connected settings false 1`] = `
- - Clipboard Sharing - Disabled -
-
-
-
+
- Not - Recording +
+
+ Recording +
@@ -392,20 +412,20 @@ exports[`connected settings false 1`] = ` `; exports[`connected settings true 1`] = ` -.c5 { +.c6 { display: inline-block; transition: color .3s; - padding-right: 8px; + padding-right: 16px; color: #FFFFFF; } -.c11 { +.c12 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c10 { +.c11 { align-items: center; border: none; cursor: pointer; @@ -427,20 +447,20 @@ exports[`connected settings true 1`] = ` color: rgba(255,255,255,0.56); } -.c10 .c4 { +.c11 .c5 { color: inherit; } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:hover, -.c10:focus { +.c11:hover, +.c11:focus { background: rgba(255,255,255,0.1); } @@ -452,7 +472,7 @@ exports[`connected settings true 1`] = ` padding-right: 16px; } -.c3 { +.c10 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -474,25 +494,31 @@ exports[`connected settings true 1`] = ` flex-direction: row; } -.c7 { +.c3 { box-sizing: border-box; padding-left: 16px; padding-right: 16px; display: flex; } -.c8 { +.c4 { box-sizing: border-box; display: flex; align-items: center; } -.c6 { +.c8 { font-weight: 600; font-size: 18px; align-self: 'center'; } +.c7 { + font-weight: 600; + font-size: 22px; + align-self: 'center'; +} + .c9 { width: 10px; height: 10px; @@ -518,45 +544,49 @@ exports[`connected settings true 1`] = `
- - Clipboard Sharing - Enabled -
-
-
-
+
- - Recording +
+
+ Recording +
@@ -571,20 +601,20 @@ exports[`connected settings true 1`] = ` `; exports[`connection error 1`] = ` -.c5 { +.c6 { display: inline-block; transition: color .3s; - padding-right: 8px; + padding-right: 16px; color: #FFFFFF; } -.c11 { +.c12 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c10 { +.c11 { align-items: center; border: none; cursor: pointer; @@ -606,20 +636,20 @@ exports[`connection error 1`] = ` color: rgba(255,255,255,0.56); } -.c10 .c4 { +.c11 .c5 { color: inherit; } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:hover, -.c10:focus { +.c11:hover, +.c11:focus { background: rgba(255,255,255,0.1); } @@ -631,7 +661,7 @@ exports[`connection error 1`] = ` padding-right: 16px; } -.c3 { +.c10 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -653,25 +683,31 @@ exports[`connection error 1`] = ` flex-direction: row; } -.c7 { +.c3 { box-sizing: border-box; padding-left: 16px; padding-right: 16px; display: flex; } -.c8 { +.c4 { box-sizing: border-box; display: flex; align-items: center; } -.c6 { +.c8 { font-weight: 600; font-size: 18px; align-self: 'center'; } +.c7 { + font-weight: 600; + font-size: 22px; + align-self: 'center'; +} + .c9 { width: 10px; height: 10px; @@ -680,7 +716,7 @@ exports[`connection error 1`] = ` vertical-align: text-bottom; } -.c12 { +.c13 { display: flex; align-items: center; justify-content: center; @@ -703,7 +739,7 @@ exports[`connection error 1`] = ` min-width: 450px; } -.c12 a { +.c13 a { color: #FFFFFF; } @@ -724,45 +760,49 @@ exports[`connection error 1`] = `
- - Clipboard Sharing - Disabled -
-
-
-
+
- Not - Recording +
+
+ Recording +
@@ -770,7 +810,7 @@ exports[`connection error 1`] = `
some connection error @@ -783,26 +823,26 @@ exports[`connection error 1`] = ` `; exports[`disconnected 1`] = ` -.c12 { +.c13 { box-sizing: border-box; margin: 72px; text-align: center; } -.c5 { +.c6 { display: inline-block; transition: color .3s; - padding-right: 8px; + padding-right: 16px; color: #FFFFFF; } -.c11 { +.c12 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c10 { +.c11 { align-items: center; border: none; cursor: pointer; @@ -824,20 +864,20 @@ exports[`disconnected 1`] = ` color: rgba(255,255,255,0.56); } -.c10 .c4 { +.c11 .c5 { color: inherit; } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:hover, -.c10:focus { +.c11:hover, +.c11:focus { background: rgba(255,255,255,0.1); } @@ -849,7 +889,7 @@ exports[`disconnected 1`] = ` padding-right: 16px; } -.c3 { +.c10 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -871,25 +911,31 @@ exports[`disconnected 1`] = ` flex-direction: row; } -.c7 { +.c3 { box-sizing: border-box; padding-left: 16px; padding-right: 16px; display: flex; } -.c8 { +.c4 { box-sizing: border-box; display: flex; align-items: center; } -.c6 { +.c8 { font-weight: 600; font-size: 18px; align-self: 'center'; } +.c7 { + font-weight: 600; + font-size: 22px; + align-self: 'center'; +} + .c9 { width: 10px; height: 10px; @@ -915,45 +961,49 @@ exports[`disconnected 1`] = `
- - Clipboard Sharing - Disabled -
-
-
-
+
- Not - Recording +
+
+ Recording +
@@ -961,10 +1011,10 @@ exports[`disconnected 1`] = `
Session successfully disconnected
@@ -977,20 +1027,20 @@ exports[`disconnected 1`] = ` `; exports[`fetch error 1`] = ` -.c5 { +.c6 { display: inline-block; transition: color .3s; - padding-right: 8px; + padding-right: 16px; color: #FFFFFF; } -.c11 { +.c12 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c10 { +.c11 { align-items: center; border: none; cursor: pointer; @@ -1012,20 +1062,20 @@ exports[`fetch error 1`] = ` color: rgba(255,255,255,0.56); } -.c10 .c4 { +.c11 .c5 { color: inherit; } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:hover, -.c10:focus { +.c11:hover, +.c11:focus { background: rgba(255,255,255,0.1); } @@ -1037,7 +1087,7 @@ exports[`fetch error 1`] = ` padding-right: 16px; } -.c3 { +.c10 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -1059,25 +1109,31 @@ exports[`fetch error 1`] = ` flex-direction: row; } -.c7 { +.c3 { box-sizing: border-box; padding-left: 16px; padding-right: 16px; display: flex; } -.c8 { +.c4 { box-sizing: border-box; display: flex; align-items: center; } -.c6 { +.c8 { font-weight: 600; font-size: 18px; align-self: 'center'; } +.c7 { + font-weight: 600; + font-size: 22px; + align-self: 'center'; +} + .c9 { width: 10px; height: 10px; @@ -1086,7 +1142,7 @@ exports[`fetch error 1`] = ` vertical-align: text-bottom; } -.c12 { +.c13 { display: flex; align-items: center; justify-content: center; @@ -1109,7 +1165,7 @@ exports[`fetch error 1`] = ` min-width: 450px; } -.c12 a { +.c13 a { color: #FFFFFF; } @@ -1130,45 +1186,49 @@ exports[`fetch error 1`] = `
- - Clipboard Sharing - Disabled -
-
-
-
+
- Not - Recording +
+
+ Recording +
@@ -1176,7 +1236,7 @@ exports[`fetch error 1`] = `
some fetch error @@ -1189,20 +1249,20 @@ exports[`fetch error 1`] = ` `; exports[`unintended disconnect 1`] = ` -.c5 { +.c6 { display: inline-block; transition: color .3s; - padding-right: 8px; + padding-right: 16px; color: #FFFFFF; } -.c11 { +.c12 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c10 { +.c11 { align-items: center; border: none; cursor: pointer; @@ -1224,20 +1284,20 @@ exports[`unintended disconnect 1`] = ` color: rgba(255,255,255,0.56); } -.c10 .c4 { +.c11 .c5 { color: inherit; } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:hover, -.c10:focus { +.c11:hover, +.c11:focus { background: rgba(255,255,255,0.1); } @@ -1249,7 +1309,7 @@ exports[`unintended disconnect 1`] = ` padding-right: 16px; } -.c3 { +.c10 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -1271,25 +1331,31 @@ exports[`unintended disconnect 1`] = ` flex-direction: row; } -.c7 { +.c3 { box-sizing: border-box; padding-left: 16px; padding-right: 16px; display: flex; } -.c8 { +.c4 { box-sizing: border-box; display: flex; align-items: center; } -.c6 { +.c8 { font-weight: 600; font-size: 18px; align-self: 'center'; } +.c7 { + font-weight: 600; + font-size: 22px; + align-self: 'center'; +} + .c9 { width: 10px; height: 10px; @@ -1298,7 +1364,7 @@ exports[`unintended disconnect 1`] = ` vertical-align: text-bottom; } -.c12 { +.c13 { display: flex; align-items: center; justify-content: center; @@ -1321,7 +1387,7 @@ exports[`unintended disconnect 1`] = ` min-width: 450px; } -.c12 a { +.c13 a { color: #FFFFFF; } @@ -1342,45 +1408,49 @@ exports[`unintended disconnect 1`] = `
- - Clipboard Sharing - Disabled -
-
-
-
+
- Not - Recording +
+
+ Recording +
@@ -1388,7 +1458,7 @@ exports[`unintended disconnect 1`] = `
Session disconnected for an unknown reason @@ -1401,26 +1471,26 @@ exports[`unintended disconnect 1`] = ` `; exports[`webauthn prompt 1`] = ` -.c12 { +.c13 { box-sizing: border-box; margin: 72px; text-align: center; } -.c5 { +.c6 { display: inline-block; transition: color .3s; - padding-right: 8px; + padding-right: 16px; color: #FFFFFF; } -.c11 { +.c12 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c10 { +.c11 { align-items: center; border: none; cursor: pointer; @@ -1442,20 +1512,20 @@ exports[`webauthn prompt 1`] = ` color: rgba(255,255,255,0.56); } -.c10 .c4 { +.c11 .c5 { color: inherit; } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:hover, -.c10:focus { +.c11:hover, +.c11:focus { background: rgba(255,255,255,0.1); } @@ -1467,7 +1537,7 @@ exports[`webauthn prompt 1`] = ` padding-right: 16px; } -.c3 { +.c10 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -1489,25 +1559,31 @@ exports[`webauthn prompt 1`] = ` flex-direction: row; } -.c7 { +.c3 { box-sizing: border-box; padding-left: 16px; padding-right: 16px; display: flex; } -.c8 { +.c4 { box-sizing: border-box; display: flex; align-items: center; } -.c6 { +.c8 { font-weight: 600; font-size: 18px; align-self: 'center'; } +.c7 { + font-weight: 600; + font-size: 22px; + align-self: 'center'; +} + .c9 { width: 10px; height: 10px; @@ -1533,45 +1609,49 @@ exports[`webauthn prompt 1`] = `
- - Clipboard Sharing - Disabled -
-
-
-
+
- Not - Recording +
+
+ Recording +
@@ -1579,7 +1659,7 @@ exports[`webauthn prompt 1`] = `
(); const [hostname, setHostname] = useState(''); @@ -125,6 +128,7 @@ export default function useDesktopSession() { userService.fetchUserContext().then(user => { setHasClipboardSharingEnabled(user.acl.clipboardSharingEnabled); setIsRecording(user.acl.desktopSessionRecordingEnabled); + setCanShareDirectory(user.acl.directorySharingEnabled); }), ]) ); @@ -148,7 +152,12 @@ export default function useDesktopSession() { hostname, username, clipboardState, + setClipboardState, isRecording, + setIsRecording, + canShareDirectory, + isSharingDirectory, + setIsSharingDirectory, fetchAttempt, tdpConnection, wsConnection, diff --git a/packages/teleport/src/lib/tdp/client.ts b/packages/teleport/src/lib/tdp/client.ts index 0f211e4fb..b7596baa6 100644 --- a/packages/teleport/src/lib/tdp/client.ts +++ b/packages/teleport/src/lib/tdp/client.ts @@ -39,11 +39,10 @@ export enum TdpClientEvent { // calling Client.nuke() (typically after Client emits a TdpClientEvent.DISCONNECT or TdpClientEvent.ERROR event) in order to clean // up its websocket listeners. export default class Client extends EventEmitterWebAuthnSender { - codec: Codec; - socket: WebSocket; - socketAddr: string; - username: string; - logger = Logger.create('TDPClient'); + protected codec: Codec; + protected socket: WebSocket | undefined; + private socketAddr: string; + private logger = Logger.create('TDPClient'); constructor(socketAddr: string) { super(); @@ -179,30 +178,41 @@ export default class Client extends EventEmitterWebAuthnSender { } } + protected send( + data: string | ArrayBufferLike | Blob | ArrayBufferView + ): void { + if (this.socket && this.socket.readyState === 1) { + this.socket.send(data); + return; + } + + this.handleError(new Error('websocket unavailable')); + } + sendUsername(username: string) { - this.socket?.send(this.codec.encodeUsername(username)); + this.send(this.codec.encodeUsername(username)); } sendMouseMove(x: number, y: number) { - this.socket.send(this.codec.encodeMouseMove(x, y)); + this.send(this.codec.encodeMouseMove(x, y)); } sendMouseButton(button: MouseButton, state: ButtonState) { - this.socket.send(this.codec.encodeMouseButton(button, state)); + this.send(this.codec.encodeMouseButton(button, state)); } sendMouseWheelScroll(axis: ScrollAxis, delta: number) { - this.socket.send(this.codec.encodeMouseWheelScroll(axis, delta)); + this.send(this.codec.encodeMouseWheelScroll(axis, delta)); } sendKeyboardInput(code: string, state: ButtonState) { // Only send message if key is recognized, otherwise do nothing. const msg = this.codec.encodeKeyboardInput(code, state); - if (msg) this.socket.send(msg); + if (msg) this.send(msg); } sendClipboardData(clipboardData: ClipboardData) { - this.socket.send(this.codec.encodeClipboardData(clipboardData)); + this.send(this.codec.encodeClipboardData(clipboardData)); } sendWebAuthn(data: WebauthnAssertionResponse) { @@ -210,16 +220,16 @@ export default class Client extends EventEmitterWebAuthnSender { mfaType: 'n', jsonString: JSON.stringify(data), }); - this.socket.send(msg); + this.send(msg); } resize(spec: ClientScreenSpec) { - this.socket?.send(this.codec.encodeClientScreenSpec(spec)); + this.send(this.codec.encodeClientScreenSpec(spec)); } // Emits an TdpClientEvent.ERROR event. Sets this.errored to true to alert the socket.onclose handler that // it needn't emit a generic unknown error event. - handleError(err: Error) { + private handleError(err: Error) { this.logger.error(err); this.emit(TdpClientEvent.TDP_ERROR, err); this.socket?.close(); diff --git a/packages/teleport/src/lib/tdp/playerClient.ts b/packages/teleport/src/lib/tdp/playerClient.ts index 2cd1c344d..5786c9d13 100644 --- a/packages/teleport/src/lib/tdp/playerClient.ts +++ b/packages/teleport/src/lib/tdp/playerClient.ts @@ -36,7 +36,7 @@ export class PlayerClient extends Client { // togglePlayPause toggles the playback system between "playing" and "paused" states. togglePlayPause() { - this.socket?.send(JSON.stringify({ action: Action.TOGGLE_PLAY_PAUSE })); + this.send(JSON.stringify({ action: Action.TOGGLE_PLAY_PAUSE })); this.emit(PlayerClientEvent.TOGGLE_PLAY_PAUSE); } diff --git a/tsconfig.json b/tsconfig.json index 308e46828..648f92e8e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -28,7 +28,9 @@ // Import non-ES modules as default imports. "esModuleInterop": true, // Skip type checking of libraries' declaration files. - "skipLibCheck": true + "skipLibCheck": true, + // TODO: https://github.com/gravitational/webapps/issues/957 + "strictNullChecks": false, }, "exclude": [ "node_modules", From 0c27ee56a53b3ef5ae5ad107c492b06c29297943 Mon Sep 17 00:00:00 2001 From: Isaiah Becker-Mayer Date: Mon, 18 Jul 2022 13:25:37 -0400 Subject: [PATCH 3/5] `SharedDirectoryAnnounce` (#960) --- packages/teleport/package.json | 1 + .../DesktopSession/DesktopSession.story.tsx | 4 - .../src/DesktopSession/DesktopSession.tsx | 21 +- .../teleport/src/DesktopSession/TopBar.tsx | 23 - .../DesktopSession.story.test.tsx.snap | 406 ++++-------------- .../src/DesktopSession/useClipboard.ts | 2 +- .../src/DesktopSession/useDesktopSession.tsx | 8 +- .../src/DesktopSession/useTdpClientCanvas.tsx | 22 +- packages/teleport/src/lib/tdp/client.ts | 28 ++ packages/teleport/src/lib/tdp/codec.ts | 33 ++ yarn.lock | 227 ++-------- 11 files changed, 213 insertions(+), 562 deletions(-) diff --git a/packages/teleport/package.json b/packages/teleport/package.json index 859ac922b..c1c931f35 100644 --- a/packages/teleport/package.json +++ b/packages/teleport/package.json @@ -24,6 +24,7 @@ }, "devDependencies": { "@gravitational/build": "^1.0.0", + "@types/wicg-native-file-system": "^2020.6.0", "jest-canvas-mock": "^2.3.1" } } diff --git a/packages/teleport/src/DesktopSession/DesktopSession.story.tsx b/packages/teleport/src/DesktopSession/DesktopSession.story.tsx index 779daab61..2dbd461f6 100644 --- a/packages/teleport/src/DesktopSession/DesktopSession.story.tsx +++ b/packages/teleport/src/DesktopSession/DesktopSession.story.tsx @@ -46,7 +46,6 @@ const props: State = { permission: { state: '' }, errorText: '', }, - isRecording: false, tdpClient: fakeClient(), username: 'user', onWsOpen: () => {}, @@ -55,7 +54,6 @@ const props: State = { disconnected: false, setDisconnected: () => {}, setClipboardState: () => {}, - setIsRecording: () => {}, canShareDirectory: true, isSharingDirectory: false, setIsSharingDirectory: () => {}, @@ -113,7 +111,6 @@ export const ConnectedSettingsFalse = () => { permission: { state: '' }, errorText: '', }} - isRecording={false} onPngFrame={(ctx: CanvasRenderingContext2D) => { fillGray(ctx.canvas); }} @@ -140,7 +137,6 @@ export const ConnectedSettingsTrue = () => { permission: { state: 'granted' }, errorText: '', }} - isRecording={true} isSharingDirectory={true} onPngFrame={(ctx: CanvasRenderingContext2D) => { fillGray(ctx.canvas); diff --git a/packages/teleport/src/DesktopSession/DesktopSession.tsx b/packages/teleport/src/DesktopSession/DesktopSession.tsx index f759e16c3..14bd4c747 100644 --- a/packages/teleport/src/DesktopSession/DesktopSession.tsx +++ b/packages/teleport/src/DesktopSession/DesktopSession.tsx @@ -108,8 +108,6 @@ function Session(props: PropsWithChildren) { hostname, clipboardState, setClipboardState, - isRecording, - setIsRecording, canShareDirectory, isSharingDirectory, setIsSharingDirectory, @@ -144,6 +142,19 @@ function Session(props: PropsWithChildren) { !disconnected && clipboardSuccess; + const onShareDirectory = () => { + window + .showDirectoryPicker() + .then(sharedDirHandle => { + setIsSharingDirectory(true); + tdpClient.sharedDirectory = sharedDirHandle; + tdpClient.sendSharedDirectoryAnnounce(); + }) + .catch(() => { + setIsSharingDirectory(false); + }); + }; + return ( ) { ...prevState, enabled: false, })); - setIsRecording(false); setIsSharingDirectory(false); tdpClient.nuke(); }} userHost={`${username}@${hostname}`} clipboardSharingEnabled={clipboardSharingActive} - isRecording={isRecording} canShareDirectory={canShareDirectory} isSharingDirectory={isSharingDirectory} - onShareDirectory={() => { - setIsSharingDirectory(true); - }} + onShareDirectory={onShareDirectory} /> {props.children} diff --git a/packages/teleport/src/DesktopSession/TopBar.tsx b/packages/teleport/src/DesktopSession/TopBar.tsx index 3d485a1bb..6d5ac2aa7 100644 --- a/packages/teleport/src/DesktopSession/TopBar.tsx +++ b/packages/teleport/src/DesktopSession/TopBar.tsx @@ -24,7 +24,6 @@ export default function TopBar(props: Props) { const { userHost, clipboardSharingEnabled, - isRecording, onDisconnect, canShareDirectory, isSharingDirectory, @@ -70,19 +69,6 @@ export default function TopBar(props: Props) { : 'Clipboard Sharing Disabled' } /> - - - Recording - -
-
-
- Recording -
-
@@ -210,7 +181,7 @@ exports[`clipboard error 1`] = `
clipboard error @@ -230,13 +201,13 @@ exports[`connected settings false 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -258,20 +229,20 @@ exports[`connected settings false 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -283,12 +254,6 @@ exports[`connected settings false 1`] = ` padding-right: 16px; } -.c10 { - overflow: hidden; - text-overflow: ellipsis; - margin: 0px; -} - .c0 { box-sizing: border-box; display: flex; @@ -330,14 +295,6 @@ exports[`connected settings false 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} -
-
-
-
- Recording -
-
@@ -419,13 +361,13 @@ exports[`connected settings true 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -447,20 +389,20 @@ exports[`connected settings true 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -472,12 +414,6 @@ exports[`connected settings true 1`] = ` padding-right: 16px; } -.c10 { - overflow: hidden; - text-overflow: ellipsis; - margin: 0px; -} - .c0 { box-sizing: border-box; display: flex; @@ -519,14 +455,6 @@ exports[`connected settings true 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} -
-
-
-
- Recording -
-
@@ -608,13 +521,13 @@ exports[`connection error 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -636,20 +549,20 @@ exports[`connection error 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -661,12 +574,6 @@ exports[`connection error 1`] = ` padding-right: 16px; } -.c10 { - overflow: hidden; - text-overflow: ellipsis; - margin: 0px; -} - .c0 { box-sizing: border-box; display: flex; @@ -708,15 +615,7 @@ exports[`connection error 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} - -.c13 { +.c11 { display: flex; align-items: center; justify-content: center; @@ -739,7 +638,7 @@ exports[`connection error 1`] = ` min-width: 450px; } -.c13 a { +.c11 a { color: #FFFFFF; } @@ -776,33 +675,18 @@ exports[`connection error 1`] = ` style="color: rgba(255, 255, 255, 0.56);" title="Clipboard Sharing Disabled" /> -
-
-
- Recording -
-
@@ -810,7 +694,7 @@ exports[`connection error 1`] = `
some connection error @@ -823,7 +707,7 @@ exports[`connection error 1`] = ` `; exports[`disconnected 1`] = ` -.c13 { +.c11 { box-sizing: border-box; margin: 72px; text-align: center; @@ -836,13 +720,13 @@ exports[`disconnected 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -864,20 +748,20 @@ exports[`disconnected 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -889,7 +773,7 @@ exports[`disconnected 1`] = ` padding-right: 16px; } -.c10 { +.c12 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -936,14 +820,6 @@ exports[`disconnected 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} -
-
-
-
- Recording -
-
@@ -1011,10 +872,10 @@ exports[`disconnected 1`] = `
Session successfully disconnected
@@ -1034,13 +895,13 @@ exports[`fetch error 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -1062,20 +923,20 @@ exports[`fetch error 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -1087,12 +948,6 @@ exports[`fetch error 1`] = ` padding-right: 16px; } -.c10 { - overflow: hidden; - text-overflow: ellipsis; - margin: 0px; -} - .c0 { box-sizing: border-box; display: flex; @@ -1134,15 +989,7 @@ exports[`fetch error 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} - -.c13 { +.c11 { display: flex; align-items: center; justify-content: center; @@ -1165,7 +1012,7 @@ exports[`fetch error 1`] = ` min-width: 450px; } -.c13 a { +.c11 a { color: #FFFFFF; } @@ -1202,33 +1049,18 @@ exports[`fetch error 1`] = ` style="color: rgba(255, 255, 255, 0.56);" title="Clipboard Sharing Disabled" /> -
-
-
- Recording -
-
@@ -1236,7 +1068,7 @@ exports[`fetch error 1`] = `
some fetch error @@ -1256,13 +1088,13 @@ exports[`unintended disconnect 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -1284,20 +1116,20 @@ exports[`unintended disconnect 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -1309,12 +1141,6 @@ exports[`unintended disconnect 1`] = ` padding-right: 16px; } -.c10 { - overflow: hidden; - text-overflow: ellipsis; - margin: 0px; -} - .c0 { box-sizing: border-box; display: flex; @@ -1356,15 +1182,7 @@ exports[`unintended disconnect 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} - -.c13 { +.c11 { display: flex; align-items: center; justify-content: center; @@ -1387,7 +1205,7 @@ exports[`unintended disconnect 1`] = ` min-width: 450px; } -.c13 a { +.c11 a { color: #FFFFFF; } @@ -1424,33 +1242,18 @@ exports[`unintended disconnect 1`] = ` style="color: rgba(255, 255, 255, 0.56);" title="Clipboard Sharing Disabled" /> -
-
-
- Recording -
-
@@ -1458,7 +1261,7 @@ exports[`unintended disconnect 1`] = `
Session disconnected for an unknown reason @@ -1471,7 +1274,7 @@ exports[`unintended disconnect 1`] = ` `; exports[`webauthn prompt 1`] = ` -.c13 { +.c11 { box-sizing: border-box; margin: 72px; text-align: center; @@ -1484,13 +1287,13 @@ exports[`webauthn prompt 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -1512,20 +1315,20 @@ exports[`webauthn prompt 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -1537,12 +1340,6 @@ exports[`webauthn prompt 1`] = ` padding-right: 16px; } -.c10 { - overflow: hidden; - text-overflow: ellipsis; - margin: 0px; -} - .c0 { box-sizing: border-box; display: flex; @@ -1584,14 +1381,6 @@ exports[`webauthn prompt 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} -
-
-
-
- Recording -
-
@@ -1659,7 +1433,7 @@ exports[`webauthn prompt 1`] = `
setHostname(desktop.name)), userService.fetchUserContext().then(user => { setHasClipboardSharingEnabled(user.acl.clipboardSharingEnabled); - setIsRecording(user.acl.desktopSessionRecordingEnabled); setCanShareDirectory(user.acl.directorySharingEnabled); }), ]) @@ -140,6 +136,8 @@ export default function useDesktopSession() { clusterId, setTdpConnection, setWsConnection, + setClipboardState, + setIsSharingDirectory, enableClipboardSharing: clipboardState.enabled && clipboardState.permission.state === 'granted' && @@ -153,8 +151,6 @@ export default function useDesktopSession() { username, clipboardState, setClipboardState, - isRecording, - setIsRecording, canShareDirectory, isSharingDirectory, setIsSharingDirectory, diff --git a/packages/teleport/src/DesktopSession/useTdpClientCanvas.tsx b/packages/teleport/src/DesktopSession/useTdpClientCanvas.tsx index f9b143347..975110a9e 100644 --- a/packages/teleport/src/DesktopSession/useTdpClientCanvas.tsx +++ b/packages/teleport/src/DesktopSession/useTdpClientCanvas.tsx @@ -15,12 +15,13 @@ limitations under the License. */ import { useState, useEffect, useRef, Dispatch, SetStateAction } from 'react'; +import { Attempt } from 'shared/hooks/useAttemptNext'; import { TdpClient, ButtonState, ScrollAxis } from 'teleport/lib/tdp'; import { ClipboardData, PngFrame } from 'teleport/lib/tdp/codec'; -import { TopBarHeight } from './TopBar'; -import cfg from 'teleport/config'; import { getAccessToken, getHostName } from 'teleport/services/api'; -import { Attempt } from 'shared/hooks/useAttemptNext'; +import cfg from 'teleport/config'; +import { TopBarHeight } from './TopBar'; +import { ClipboardPermissionStatus } from './useClipboard'; export default function useTdpClientCanvas(props: Props) { const { @@ -29,6 +30,8 @@ export default function useTdpClientCanvas(props: Props) { clusterId, setTdpConnection, setWsConnection, + setClipboardState, + setIsSharingDirectory, enableClipboardSharing, } = props; const [tdpClient, setTdpClient] = useState(null); @@ -76,6 +79,11 @@ export default function useTdpClientCanvas(props: Props) { // Default TdpClientEvent.TDP_ERROR handler const onTdpError = (err: Error) => { + setIsSharingDirectory(false); + setClipboardState(prevState => ({ + ...prevState, + enabled: false, + })); setTdpConnection({ status: 'failed', statusText: err.message }); }; @@ -200,5 +208,13 @@ type Props = { clusterId: string; setTdpConnection: Dispatch>; setWsConnection: Dispatch>; + setClipboardState: Dispatch< + SetStateAction<{ + enabled: boolean; + permission: ClipboardPermissionStatus; + errorText: string; + }> + >; + setIsSharingDirectory: Dispatch>; enableClipboardSharing: boolean; }; diff --git a/packages/teleport/src/lib/tdp/client.ts b/packages/teleport/src/lib/tdp/client.ts index b7596baa6..12deae320 100644 --- a/packages/teleport/src/lib/tdp/client.ts +++ b/packages/teleport/src/lib/tdp/client.ts @@ -42,6 +42,8 @@ export default class Client extends EventEmitterWebAuthnSender { protected codec: Codec; protected socket: WebSocket | undefined; private socketAddr: string; + sharedDirectory: FileSystemDirectoryHandle | undefined; + private logger = Logger.create('TDPClient'); constructor(socketAddr: string) { @@ -223,6 +225,32 @@ export default class Client extends EventEmitterWebAuthnSender { this.send(msg); } + private sharedDirectoryReady() { + if (!this.sharedDirectory) { + this.handleError( + new Error( + 'attempted to use a shared directory before one was initialized' + ) + ); + return false; + } + + return true; + } + + sendSharedDirectoryAnnounce() { + if (!this.sharedDirectoryReady()) return; + this.socket.send( + this.codec.encodeSharedDirectoryAnnounce({ + completionId: 0, // This is always the first request. + // Hardcode directoryId for now since we only support sharing 1 directory. + // We're using 2 because the smartcard device is hardcoded to 1 in the backend. + directoryId: 2, + name: this.sharedDirectory.name, + }) + ); + } + resize(spec: ClientScreenSpec) { this.send(this.codec.encodeClientScreenSpec(spec)); } diff --git a/packages/teleport/src/lib/tdp/codec.ts b/packages/teleport/src/lib/tdp/codec.ts index da94af558..8217f12ed 100644 --- a/packages/teleport/src/lib/tdp/codec.ts +++ b/packages/teleport/src/lib/tdp/codec.ts @@ -37,6 +37,7 @@ export enum MessageType { MOUSE_WHEEL_SCROLL = 8, ERROR = 9, MFA_JSON = 10, + SHARED_DIRECTORY_ANNOUNCE = 11, } // 0 is left button, 1 is middle button, 2 is right button @@ -84,6 +85,13 @@ export type MfaJson = { jsonString: string; }; +// | message type (11) | completion_id uint32 | directory_id uint32 | name_length uint32 | name []byte | +export type SharedDirectoryAnnounce = { + completionId: number; + directoryId: number; + name: string; +}; + // TdaCodec provides an api for encoding and decoding teleport desktop access protocol messages [1] // Buffers in TdaCodec are manipulated as DataView's [2] in order to give us low level control // of endianness (defaults to big endian, which is what we want), as opposed to using *Array @@ -389,6 +397,31 @@ export default class Codec { return buffer; } + // | message type (11) | completion_id uint32 | directory_id uint32 | name_length uint32 | name []byte | + encodeSharedDirectoryAnnounce( + sharedDirAnnounce: SharedDirectoryAnnounce + ): Message { + const dataUtf8array = this.encoder.encode(sharedDirAnnounce.name); + + const bufLen = byteLength + 3 * uint32Length + dataUtf8array.length; + const buffer = new ArrayBuffer(bufLen); + const view = new DataView(buffer); + let offset = 0; + + view.setUint8(offset++, MessageType.SHARED_DIRECTORY_ANNOUNCE); + view.setUint32(offset, sharedDirAnnounce.completionId); + offset += uint32Length; + view.setUint32(offset, sharedDirAnnounce.directoryId); + offset += uint32Length; + view.setUint32(offset, dataUtf8array.length); + offset += uint32Length; + dataUtf8array.forEach(byte => { + view.setUint8(offset++, byte); + }); + + return buffer; + } + // decodeClipboardData decodes clipboard data decodeClipboardData(buffer: ArrayBuffer): ClipboardData { return { diff --git a/yarn.lock b/yarn.lock index 9f4d01106..f6cdca28a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3029,6 +3029,11 @@ tapable "^2.2.0" webpack "^5" +"@types/wicg-native-file-system@^2020.6.0": + version "2020.6.0" + resolved "https://registry.yarnpkg.com/@types/wicg-native-file-system/-/wicg-native-file-system-2020.6.0.tgz#63cbb7bac47bdb9eae4b0d66e63134b33e47e05d" + integrity sha512-M7n6jvHfUzUXDtf6UGpL6rVIddV7UzEYrvwZPORApeHvDGQnZJ79fXorLlDj8xJKyUemnEBohRd8yx09k9NBUw== + "@types/yargs-parser@*": version "20.2.1" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" @@ -3416,11 +3421,6 @@ abab@^2.0.3, abab@^2.0.5: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -3482,22 +3482,13 @@ address@1.1.2, address@^1.0.1: resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== -agent-base@6, agent-base@^6.0.2: +agent-base@6: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" -agentkeepalive@^4.1.3: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" - integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== - dependencies: - debug "^4.1.0" - depd "^1.1.2" - humanize-ms "^1.2.1" - aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -3723,14 +3714,6 @@ are-we-there-yet@^2.0.0: delegates "^1.0.0" readable-stream "^3.6.0" -are-we-there-yet@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d" - integrity sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -4564,7 +4547,7 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" -cacache@^15.0.5, cacache@^15.2.0: +cacache@^15.0.5: version "15.3.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== @@ -4943,7 +4926,7 @@ color-string@^1.6.0: color-name "^1.0.0" simple-swizzle "^0.2.2" -color-support@^1.1.2, color-support@^1.1.3: +color-support@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== @@ -5543,13 +5526,6 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: dependencies: ms "2.1.2" -debug@^4.3.3: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - decimal.js@^10.2.1: version "10.3.1" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" @@ -5687,7 +5663,7 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= -depd@^1.1.2, depd@~1.1.2: +depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== @@ -6145,13 +6121,6 @@ encodeurl@^1.0.2, encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -encoding@^0.1.12: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -6216,11 +6185,6 @@ envinfo@^7.7.3: resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== -err-code@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - errno@^0.1.3, errno@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -7246,20 +7210,6 @@ gauge@^3.0.0: strip-ansi "^3.0.1 || ^4.0.0" wide-align "^1.1.2" -gauge@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" - integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.3" - console-control-strings "^1.1.0" - has-unicode "^2.0.1" - signal-exit "^3.0.7" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.5" - gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -7877,7 +7827,7 @@ htmlparser2@^6.1.0: domutils "^2.5.2" entities "^2.0.0" -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: +http-cache-semantics@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== @@ -7980,13 +7930,6 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" - iconv-corefoundation@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.6.tgz#27c135470237f6f8d13462fa1f5eaf250523c29a" @@ -8389,11 +8332,6 @@ is-installed-globally@^0.4.0: global-dirs "^3.0.0" is-path-inside "^3.0.2" -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== - is-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" @@ -9629,28 +9567,6 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: dependencies: semver "^6.0.0" -make-fetch-happen@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" - integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== - dependencies: - agentkeepalive "^4.1.3" - cacache "^15.2.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.2" - promise-retry "^2.0.1" - socks-proxy-agent "^6.0.0" - ssri "^8.0.0" - makeerror@1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" @@ -9928,11 +9844,16 @@ minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.5, minimist@~0.0.1: +minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw== + minipass-collect@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" @@ -9940,17 +9861,6 @@ minipass-collect@^1.0.2: dependencies: minipass "^3.0.0" -minipass-fetch@^1.3.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" - integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== - dependencies: - minipass "^3.1.0" - minipass-sized "^1.0.3" - minizlib "^2.0.0" - optionalDependencies: - encoding "^0.1.12" - minipass-flush@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" @@ -9958,20 +9868,13 @@ minipass-flush@^1.0.5: dependencies: minipass "^3.0.0" -minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: +minipass-pipeline@^1.2.2: version "1.2.4" resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: minipass "^3.0.0" -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== - dependencies: - minipass "^3.0.0" - minipass@^3.0.0, minipass@^3.1.1: version "3.1.5" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.5.tgz#71f6251b0a33a49c01b3cf97ff77eda030dff732" @@ -9979,14 +9882,7 @@ minipass@^3.0.0, minipass@^3.1.1: dependencies: yallist "^4.0.0" -minipass@^3.1.0, minipass@^3.1.3: - version "3.1.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" - integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== - dependencies: - yallist "^4.0.0" - -minizlib@^2.0.0, minizlib@^2.1.1: +minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -10064,7 +9960,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.0.0, ms@^2.1.1: +ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -10119,11 +10015,6 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -negotiator@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" @@ -10171,22 +10062,6 @@ node-forge@^0.10.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== -node-gyp@8.4.1: - version "8.4.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" - integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.6" - make-fetch-happen "^9.1.0" - nopt "^5.0.0" - npmlog "^6.0.0" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.2" - which "^2.0.2" - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -10243,13 +10118,6 @@ node-releases@^2.0.1: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -10307,16 +10175,6 @@ npmlog@^5.0.1: gauge "^3.0.0" set-blocking "^2.0.0" -npmlog@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" - integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== - dependencies: - are-we-there-yet "^3.0.0" - console-control-strings "^1.1.0" - gauge "^4.0.3" - set-blocking "^2.0.0" - nth-check@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" @@ -11193,14 +11051,6 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= -promise-retry@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" - integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== - dependencies: - err-code "^2.0.2" - retry "^0.12.0" - promise.allsettled@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.5.tgz#2443f3d4b2aa8dfa560f6ac2aa6c4ea999d75f53" @@ -12088,11 +11938,6 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - retry@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" @@ -12489,11 +12334,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== -signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -12532,7 +12372,7 @@ slice-ansi@^1.0.0: dependencies: is-fullwidth-code-point "^2.0.0" -smart-buffer@^4.0.2, smart-buffer@^4.2.0: +smart-buffer@^4.0.2: version "4.2.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== @@ -12576,23 +12416,6 @@ sockjs@^0.3.21: uuid "^3.4.0" websocket-driver "^0.7.4" -socks-proxy-agent@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz#f6b5229cc0cbd6f2f202d9695f09d871e951c85e" - integrity sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - -socks@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a" - integrity sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA== - dependencies: - ip "^1.1.5" - smart-buffer "^4.2.0" - source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -12733,7 +12556,7 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" -ssri@^8.0.0, ssri@^8.0.1: +ssri@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== @@ -12838,7 +12661,7 @@ string-length@^4.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -13107,7 +12930,7 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tar@^6.0.2, tar@^6.1.2: +tar@^6.0.2: version "6.1.11" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== @@ -14253,14 +14076,14 @@ which@^1.2.9, which@^1.3.1: dependencies: isexe "^2.0.0" -which@^2.0.1, which@^2.0.2: +which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -wide-align@^1.1.2, wide-align@^1.1.5: +wide-align@^1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== From 529bb476841d5d3c8466cc76de43b2e0d5b60981 Mon Sep 17 00:00:00 2001 From: Isaiah Becker-Mayer Date: Mon, 18 Jul 2022 18:48:04 -0400 Subject: [PATCH 4/5] `SharedDirectoryAcknowledge` (#965) --- packages/teleport/src/lib/tdp/client.ts | 30 ++++++++++-- packages/teleport/src/lib/tdp/codec.test.ts | 8 +++- packages/teleport/src/lib/tdp/codec.ts | 52 +++++++++++++++++++-- 3 files changed, 80 insertions(+), 10 deletions(-) diff --git a/packages/teleport/src/lib/tdp/client.ts b/packages/teleport/src/lib/tdp/client.ts index 12deae320..55e04b555 100644 --- a/packages/teleport/src/lib/tdp/client.ts +++ b/packages/teleport/src/lib/tdp/client.ts @@ -23,6 +23,7 @@ import Codec, { ClientScreenSpec, PngFrame, ClipboardData, + SharedDirectoryErrCode, } from './codec'; export enum TdpClientEvent { @@ -108,6 +109,9 @@ export default class Client extends EventEmitterWebAuthnSender { case MessageType.MFA_JSON: this.handleMfaChallenge(buffer); break; + case MessageType.SHARED_DIRECTORY_ACKNOWLEDGE: + this.handleSharedDirectoryAcknowledge(buffer); + break; default: this.logger.warn(`received unsupported message type ${messageType}`); } @@ -165,8 +169,7 @@ export default class Client extends EventEmitterWebAuthnSender { this.emit(TermEventEnum.WEBAUTHN_CHALLENGE, mfaJson.jsonString); } else { // mfaJson.mfaType === 'u', or else decodeMfaJson would have thrown an error. - this.emit( - TdpClientEvent.TDP_ERROR, + this.handleError( new Error( 'Multifactor authentication is required for accessing this desktop, \ however the U2F API for hardware keys is not supported for desktop sessions. \ @@ -176,10 +179,31 @@ export default class Client extends EventEmitterWebAuthnSender { ); } } catch (err) { - this.emit(TdpClientEvent.TDP_ERROR, err); + this.handleError(err); } } + private wasSuccessful(errCode: SharedDirectoryErrCode) { + if (errCode === SharedDirectoryErrCode.Nil) { + return true; + } + + this.handleError( + new Error(`Encountered shared directory error: ${errCode}`) + ); + return false; + } + + handleSharedDirectoryAcknowledge(buffer: ArrayBuffer) { + const ack = this.codec.decodeSharedDirectoryAcknowledge(buffer); + + if (!this.wasSuccessful(ack.errCode)) { + return; + } + + this.logger.info('Started sharing directory: ' + this.sharedDirectory.name); + } + protected send( data: string | ArrayBufferLike | Blob | ArrayBufferView ): void { diff --git a/packages/teleport/src/lib/tdp/codec.test.ts b/packages/teleport/src/lib/tdp/codec.test.ts index ae0085464..7b9a53d4f 100644 --- a/packages/teleport/src/lib/tdp/codec.test.ts +++ b/packages/teleport/src/lib/tdp/codec.test.ts @@ -104,7 +104,9 @@ test('decodes message types', () => { const { buffer: pngFrameBuf } = makeBuf(MessageType.PNG_FRAME); const { buffer: clipboardBuf } = makeBuf(MessageType.CLIPBOARD_DATA); const { buffer: errorBuf } = makeBuf(MessageType.ERROR); - const { buffer: invalidBuf } = makeBuf(MessageType.MFA_JSON + 1); + const { buffer: invalidBuf } = makeBuf( + MessageType.SHARED_DIRECTORY_ACKNOWLEDGE + 1 + ); expect(codec.decodeMessageType(pngFrameBuf)).toEqual(MessageType.PNG_FRAME); expect(codec.decodeMessageType(clipboardBuf)).toEqual( @@ -113,7 +115,9 @@ test('decodes message types', () => { expect(codec.decodeMessageType(errorBuf)).toEqual(MessageType.ERROR); expect(() => { codec.decodeMessageType(invalidBuf); - }).toThrow(`invalid message type: ${MessageType.MFA_JSON + 1}`); + }).toThrow( + `invalid message type: ${MessageType.SHARED_DIRECTORY_ACKNOWLEDGE + 1}` + ); }); test('decodes errors', () => { diff --git a/packages/teleport/src/lib/tdp/codec.ts b/packages/teleport/src/lib/tdp/codec.ts index 8217f12ed..29c347905 100644 --- a/packages/teleport/src/lib/tdp/codec.ts +++ b/packages/teleport/src/lib/tdp/codec.ts @@ -38,6 +38,7 @@ export enum MessageType { ERROR = 9, MFA_JSON = 10, SHARED_DIRECTORY_ANNOUNCE = 11, + SHARED_DIRECTORY_ACKNOWLEDGE = 12, } // 0 is left button, 1 is middle button, 2 is right button @@ -92,6 +93,31 @@ export type SharedDirectoryAnnounce = { name: string; }; +// | message type (12) | errCode error | directory_id uint32 | +export type SharedDirectoryAcknowledge = { + errCode: SharedDirectoryErrCode; + directoryId: number; +}; + +export enum SharedDirectoryErrCode { + // nil (no error, operation succeeded) + Nil = 0, + // operation failed + Failed = 1, + // resource does not exist + DoesNotExist = 2, + // resource already exists + AlreadyExists = 3, +} + +function toSharedDirectoryErrCode(errCode: number): SharedDirectoryErrCode { + if (!(errCode in SharedDirectoryErrCode)) { + throw new Error(`attempted to convert invalid error code ${errCode}`); + } + + return errCode as SharedDirectoryErrCode; +} + // TdaCodec provides an api for encoding and decoding teleport desktop access protocol messages [1] // Buffers in TdaCodec are manipulated as DataView's [2] in order to give us low level control // of endianness (defaults to big endian, which is what we want), as opposed to using *Array @@ -434,8 +460,7 @@ export default class Codec { // Throws an error on an invalid or unexpected MessageType value. decodeMessageType(buffer: ArrayBuffer): MessageType { const messageType = new DataView(buffer).getUint8(0); - // TODO(isaiah): this is fragile, instead switch all possibilities here. - if (messageType > MessageType.MFA_JSON) { + if (!(messageType in MessageType)) { throw new Error(`invalid message type: ${messageType}`); } return messageType; @@ -480,13 +505,30 @@ export default class Codec { data: image, }; pngFrame.data.onload = onload(pngFrame); - pngFrame.data.src = this._asBase64Url(buffer); + pngFrame.data.src = this.asBase64Url(buffer); return pngFrame; } - // _asBase64Url creates a data:image uri from the png data part of a PNG_FRAME tdp message. - _asBase64Url(buffer: ArrayBuffer): string { + // | message type (12) | errCode error | directory_id uint32 | + decodeSharedDirectoryAcknowledge( + buffer: ArrayBuffer + ): SharedDirectoryAcknowledge { + const dv = new DataView(buffer); + let offset = 0; + offset += byteLength; // eat message type + const errCode = toSharedDirectoryErrCode(dv.getUint32(offset)); + offset += uint32Length; // eat errCode + const directoryId = dv.getUint32(5); + + return { + errCode, + directoryId, + }; + } + + // asBase64Url creates a data:image uri from the png data part of a PNG_FRAME tdp message. + private asBase64Url(buffer: ArrayBuffer): string { return `data:image/png;base64,${arrayBufferToBase64(buffer.slice(17))}`; } } From 3907923c56920d52faeea8b61033c9a24192e8a6 Mon Sep 17 00:00:00 2001 From: Isaiah Becker-Mayer Date: Tue, 19 Jul 2022 01:01:07 -0400 Subject: [PATCH 5/5] `SharedDirectoryInfoRequest` (#966) --- packages/shared/libs/logger.js | 4 + packages/teleport/src/lib/tdp/client.ts | 12 +++ packages/teleport/src/lib/tdp/codec.test.ts | 9 +-- packages/teleport/src/lib/tdp/codec.ts | 84 ++++++++++++++++----- 4 files changed, 83 insertions(+), 26 deletions(-) diff --git a/packages/shared/libs/logger.js b/packages/shared/libs/logger.js index 972c97d54..8a10659c2 100644 --- a/packages/shared/libs/logger.js +++ b/packages/shared/libs/logger.js @@ -35,6 +35,10 @@ export class Logger { this.log('info', ...args); } + debug(...args) { + this.log('debug', ...args); + } + error(...args) { this.log('error', ...args); } diff --git a/packages/teleport/src/lib/tdp/client.ts b/packages/teleport/src/lib/tdp/client.ts index 55e04b555..077ee6234 100644 --- a/packages/teleport/src/lib/tdp/client.ts +++ b/packages/teleport/src/lib/tdp/client.ts @@ -112,6 +112,9 @@ export default class Client extends EventEmitterWebAuthnSender { case MessageType.SHARED_DIRECTORY_ACKNOWLEDGE: this.handleSharedDirectoryAcknowledge(buffer); break; + case MessageType.SHARED_DIRECTORY_INFO_REQUEST: + this.handleSharedDirectoryInfoRequest(buffer); + break; default: this.logger.warn(`received unsupported message type ${messageType}`); } @@ -204,6 +207,15 @@ export default class Client extends EventEmitterWebAuthnSender { this.logger.info('Started sharing directory: ' + this.sharedDirectory.name); } + handleSharedDirectoryInfoRequest(buffer: ArrayBuffer) { + const req = this.codec.decodeSharedDirectoryInfoRequest(buffer); + // TODO(isaiah): remove debug once message is handled. + this.logger.debug( + 'Received SharedDirectoryInfoRequest: ' + JSON.stringify(req) + ); + // TODO(isaiah): here's where we'll respond with SharedDirectoryInfoResponse + } + protected send( data: string | ArrayBufferLike | Blob | ArrayBufferView ): void { diff --git a/packages/teleport/src/lib/tdp/codec.test.ts b/packages/teleport/src/lib/tdp/codec.test.ts index 7b9a53d4f..d0ac2ce56 100644 --- a/packages/teleport/src/lib/tdp/codec.test.ts +++ b/packages/teleport/src/lib/tdp/codec.test.ts @@ -104,9 +104,8 @@ test('decodes message types', () => { const { buffer: pngFrameBuf } = makeBuf(MessageType.PNG_FRAME); const { buffer: clipboardBuf } = makeBuf(MessageType.CLIPBOARD_DATA); const { buffer: errorBuf } = makeBuf(MessageType.ERROR); - const { buffer: invalidBuf } = makeBuf( - MessageType.SHARED_DIRECTORY_ACKNOWLEDGE + 1 - ); + let invalid = MessageType.__LAST; + const { buffer: invalidBuf } = makeBuf(invalid); expect(codec.decodeMessageType(pngFrameBuf)).toEqual(MessageType.PNG_FRAME); expect(codec.decodeMessageType(clipboardBuf)).toEqual( @@ -115,9 +114,7 @@ test('decodes message types', () => { expect(codec.decodeMessageType(errorBuf)).toEqual(MessageType.ERROR); expect(() => { codec.decodeMessageType(invalidBuf); - }).toThrow( - `invalid message type: ${MessageType.SHARED_DIRECTORY_ACKNOWLEDGE + 1}` - ); + }).toThrow(`invalid message type: ${invalid}`); }); test('decodes errors', () => { diff --git a/packages/teleport/src/lib/tdp/codec.ts b/packages/teleport/src/lib/tdp/codec.ts index 29c347905..ccc1e848d 100644 --- a/packages/teleport/src/lib/tdp/codec.ts +++ b/packages/teleport/src/lib/tdp/codec.ts @@ -39,6 +39,8 @@ export enum MessageType { MFA_JSON = 10, SHARED_DIRECTORY_ANNOUNCE = 11, SHARED_DIRECTORY_ACKNOWLEDGE = 12, + SHARED_DIRECTORY_INFO_REQUEST = 13, + __LAST, // utility value } // 0 is left button, 1 is middle button, 2 is right button @@ -99,6 +101,13 @@ export type SharedDirectoryAcknowledge = { directoryId: number; }; +// | message type (13) | completion_id uint32 | directory_id uint32 | path_length uint32 | path []byte | +export type SharedDirectoryInfoRequest = { + completionId: number; + directoryId: number; + path: string; +}; + export enum SharedDirectoryErrCode { // nil (no error, operation succeeded) Nil = 0, @@ -451,7 +460,7 @@ export default class Codec { // decodeClipboardData decodes clipboard data decodeClipboardData(buffer: ArrayBuffer): ClipboardData { return { - data: this._decodeStringMessage(buffer), + data: this.decodeStringMessage(buffer), }; } @@ -460,7 +469,7 @@ export default class Codec { // Throws an error on an invalid or unexpected MessageType value. decodeMessageType(buffer: ArrayBuffer): MessageType { const messageType = new DataView(buffer).getUint8(0); - if (!(messageType in MessageType)) { + if (!(messageType in MessageType) || messageType === MessageType.__LAST) { throw new Error(`invalid message type: ${messageType}`); } return messageType; @@ -469,43 +478,57 @@ export default class Codec { // decodeError decodes a raw tdp ERROR message and returns it as a string // | message type (9) | message_length uint32 | message []byte decodeErrorMessage(buffer: ArrayBuffer): string { - return this._decodeStringMessage(buffer); + return this.decodeStringMessage(buffer); } // decodeMfaChallenge decodes a raw tdp MFA challenge message and returns it as a string (of a json). // | message type (10) | mfa_type byte | message_length uint32 | json []byte decodeMfaJson(buffer: ArrayBuffer): MfaJson { let dv = new DataView(buffer); - const mfaType = String.fromCharCode(dv.getUint8(1)); + let offset = 0; + offset += byteLength; // eat message type + const mfaType = String.fromCharCode(dv.getUint8(offset)); + offset += byteLength; // eat mfa_type if (mfaType !== 'n' && mfaType !== 'u') { throw new Error(`invalid mfa type ${mfaType}, should be "n" or "u"`); } - const jsonString = this.decoder.decode(new Uint8Array(buffer.slice(6))); + offset += uint32Length; // eat message_length + const jsonString = this.decoder.decode( + new Uint8Array(buffer.slice(offset)) + ); return { mfaType, jsonString }; } - // _decodeStringMessage decodes a tdp message of the form + // decodeStringMessage decodes a tdp message of the form // | message type (N) | message_length uint32 | message []byte - _decodeStringMessage(buffer: ArrayBuffer): string { + private decodeStringMessage(buffer: ArrayBuffer): string { // slice(5) ensures we skip the message type and message_length - return this.decoder.decode(new Uint8Array(buffer.slice(5))); + const offset = 0 + byteLength + uint32Length; // eat message type and message_length + return this.decoder.decode(new Uint8Array(buffer.slice(offset))); } // decodePngFrame decodes a raw tdp PNG frame message and returns it as a PngFrame // | message type (2) | left uint32 | top uint32 | right uint32 | bottom uint32 | data []byte | // https://github.com/gravitational/teleport/blob/master/rfd/0037-desktop-access-protocol.md#2---png-frame - decodePngFrame(buffer: ArrayBuffer, onload: (PngFrame) => any): PngFrame { - let dv = new DataView(buffer); + decodePngFrame( + buffer: ArrayBuffer, + onload: (pngFrame: PngFrame) => any + ): PngFrame { + const dv = new DataView(buffer); const image = new Image(); - const pngFrame = { - left: dv.getUint32(1), - top: dv.getUint32(5), - right: dv.getUint32(9), - bottom: dv.getUint32(13), - data: image, - }; + let offset = 0; + offset += byteLength; // eat message type + const left = dv.getUint32(offset); + offset += uint32Length; // eat left + const top = dv.getUint32(offset); + offset += uint32Length; // eat top + const right = dv.getUint32(offset); + offset += uint32Length; // eat right + const bottom = dv.getUint32(offset); + offset += uint32Length; // eat bottom + const pngFrame = { left, top, right, bottom, data: image }; pngFrame.data.onload = onload(pngFrame); - pngFrame.data.src = this.asBase64Url(buffer); + pngFrame.data.src = this.asBase64Url(buffer, offset); return pngFrame; } @@ -527,9 +550,30 @@ export default class Codec { }; } + // | message type (13) | completion_id uint32 | directory_id uint32 | path_length uint32 | path []byte | + decodeSharedDirectoryInfoRequest( + buffer: ArrayBuffer + ): SharedDirectoryInfoRequest { + const dv = new DataView(buffer); + let offset = 0; + offset += byteLength; // eat message type + const completionId = dv.getUint32(offset); + offset += uint32Length; // eat completion_id + const directoryId = dv.getUint32(offset); + offset += uint32Length; // eat directory_id + offset += uint32Length; // eat path_length + const path = this.decoder.decode(new Uint8Array(buffer.slice(offset))); + + return { + completionId, + directoryId, + path, + }; + } + // asBase64Url creates a data:image uri from the png data part of a PNG_FRAME tdp message. - private asBase64Url(buffer: ArrayBuffer): string { - return `data:image/png;base64,${arrayBufferToBase64(buffer.slice(17))}`; + private asBase64Url(buffer: ArrayBuffer, offset: number): string { + return `data:image/png;base64,${arrayBufferToBase64(buffer.slice(offset))}`; } }