From 5715545c57c81a8bfe2c2bac414b2c4bddafa7e5 Mon Sep 17 00:00:00 2001 From: Melanie Date: Mon, 4 Oct 2010 04:25:10 +0100 Subject: [PATCH 1/5] Revert "Replaced OpenMetaverse dlls with ones compiled in Windows." This reverts commit eb0cde7959a03ccbf3551b725cd6b559071857fb. --- bin/OpenMetaverse.StructuredData.XML | 496 +- bin/OpenMetaverse.StructuredData.dll | Bin 102400 -> 95232 bytes bin/OpenMetaverse.XML | 44562 +++++++++++++------------ bin/OpenMetaverse.dll | Bin 1712128 -> 1768960 bytes bin/OpenMetaverse.dll.config | 14 +- bin/OpenMetaverseTypes.XML | 3311 +- bin/OpenMetaverseTypes.dll | Bin 114688 -> 105984 bytes 7 files changed, 24628 insertions(+), 23755 deletions(-) diff --git a/bin/OpenMetaverse.StructuredData.XML b/bin/OpenMetaverse.StructuredData.XML index a8e314f634..927e960280 100644 --- a/bin/OpenMetaverse.StructuredData.XML +++ b/bin/OpenMetaverse.StructuredData.XML @@ -1,263 +1,63 @@ - OpenMetaverse.StructuredData + /home/root/libopenmetaverse/bin/OpenMetaverse.StructuredData - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - - @@ -281,53 +81,283 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bin/OpenMetaverse.StructuredData.dll b/bin/OpenMetaverse.StructuredData.dll index 45a72ecc9929c2d34643ca55ed39cda44596fc12..27ccfbcdd9994fa9b5b428c4bbb991d0e2570232 100644 GIT binary patch literal 95232 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 RRfA_k#s2^Q{jZb2{{!N=oT2~# literal 102400 zcmeFad0pTTT6es4%(2apNN9i-eeif8rb>@E zHU5*Sc5ZJ7qhDACgjgVjs8iIfT{_$iUx+BvOO@V4ApQC8LBxYje;zURYzB%LdthTbwZ#7&R+m{l7ob3UU}>(D}k>&QkQE%UT>QXNftC` zbJ?RoVBMf2m*E8XuD`KpuIB8q%PlanuF#qJh~M=GzWrVB`{4IA@O=$@UjyIQ!1p!q zeGPnH1K-!c_cic+4SZh%-`BwZLp9J%`)d5r-qa92G3!<#{_(63g*!)P`A$x(#Sn3D zB7M}zrGyBD%oO(3X4tg$2J)w|F9*+oTAE>j5NZl%k>G^fAHaB;kqW~zvKA<*2!c(O zM)qO{gtK?{WKChGZKg%6MRMNAE^4H3B4CD0D+BSaykjk1F%Ws<%p+RYjX2N5jSD;7gPNQ`={w?T}VQFA=BM1|o91Xo{NLvYbnor?AgT+id$ zfU6uy{kYm|;26n%Rx_lh4UhF9B*hb)S=vZ0Wx7qSw#nH7a;;5XRX|Rb+VmXLmF$pt z!O~O|nS>30TnRMHIEXg$Q7-19fM$*uL7O=c2hnCerXWX0k>xHKF>lnXrNn$j)Mv|y zdgBzKC3#jRQ4c8-ilG)())Md&$bR57tmuPwnvTjt1xJnKT%E}sQkYz#5DKD7}JO1pFU zpNkbmi;~9-od|dE(7tf{HFv^onLQrK#hJKH!qt8oj1}a$qb^Z_qh^msMT@&|p;p9X zT5b$-38cz~POl~A9G{nI~ z>Qgj9sC{3M<2pPTVWT>QUS_6B;1mT?pD|Mg`=U=zB-s1jX=uBiTWBT7#>oW8!1>Y z0^w|5!)|7bTFSeXso znpfj4BiU(-8tSpjNouej7*nYuM-8_6`cQmurTJX4uK7c_!R9~14K@D(Zlw7&qheXY z8UywQU52`Xv>`J-$cU%S=R9pjBAsWBr>VR-@S=BN9vBM=iP@;TM3G_b2Y@l5$>X|T;n%}&FbVXxCJ?DccX&Cfa6AWG!9vZ6VXUjLWbX(MZlU3*Rg-#PMLd#; z8iAm-1H&X+W-u`;5)4?hOlo~sTZ8HkhImU(8*HF6sPfrx>F3Yp{gQ>-cc@-nOtRZb@i_p=c2t$c9 zFk-B|h?Y3247X!#QI0a$gTfM|OEibGlTk@}D`71KEo9cmf+Hq?`>R;j$53VDC6JH| z=Z-^UeU|!KJhhy|)VC5kO#P=)hpCTL=`h)MwGNXF_t9bMA2m8mw%AvP$$o2fn9L~| z)PNc@8Dj8NteX_m`bC3fp%jLS(1?v5lrQ9LHDGdr79DTmT81Ix5nMGGHs<5PO;m9( zuETM)&xT`IDfcjHLIvLMPj0S=a5C&FuL z2xL!${@jdBkwCV?28~5(6&G%Q4O%Hd;r3k!YlZT8dXCzVAm4MAS( zh1)M;QN$l^Uz-;d*Xr(t`rtoa0oo#`IbWp)K}(B zt)%?1Jft;cxIKzY9dVlWC2C)nsZ1-7s0eB04y@)u4*l7iwHnKF}T38i^8e3g}$KBLvMDCM42Q03*R0qg*e?5d)hPcX< zS`7*d55Kk^Z5#_^A3^$P!0M!keA+HYi*ROw>K^3xb;D|444p0_LCRQ|>h-%xm#Rap39obs@KwBgA-VWuC? zphJ=F4XRpdn?KU69BIak%I#g;{HhK`o1fEb$+6HM>&qz5jZN*@m!NAXg;HV7fY~p^ zM`7XI83=aM^yzm`oT)QyGS=;0frW{vgskkMK3KdA0k^dV4C@btttfbw4L#P`2&UG; z3GFernmm`QIX86}3*W{D9D(i;; zjc88{0A||E{us(BVpENo-H}JdX7)h`QGzl`pw{5LgQl%5ZBRY1d#tMXPaXH^Orn~Z zDo$l*6l7-POJU-kZVja7MZg($O*l zz=v~63~_u$N@tlt@M7G-`etuLhImhJpK)R!0=Vef5>6gJ4} zEK{A4s`ROENbliuRN_&4BOVgN)R}RRMq+rs(}oolmWa>;4F&z;gVc&5ZSIPdMaz;i zTBgAr*ir|#pE_RJ2DL_ckOuToeGq7WULk$_^cCVSz=ik;quO9;2+SCDA1Liunh{#s zG8FFIQRgX$V<{hE&jV{0D9yOYe_Y8}I;tNc+D}lt%SXM0CPZp|EQL7|8!jR0iCN{< zF^aTn9|K1(j%Z0`FKEUgY;+ArhfJi}QRJdPVsJ%(2^TEI27E@1-O6@~GEM>B!W2aK zh7@l=A$!sEJieRa5Mys^DMn43v(&-s_S0tsA&aBM`V6v!&LAJmD_g?rp>Sq-K7FdrE{c=BG+J5~<+UZMcZ(ArjjDBJ zrrAg}lGSADjZ_l{YOB(3>TxJ}K!baY** zbp2)Ty3&rs)^!$i?MJ%O0d6?cj3JsP3qHWjkIUg~ZGXE_kyT@}33pyIMsBPwOsZoh zv^~Tx%|Xc8<+rLCGrT*o~GULUeH;c#f1v* z)?wNc`{KeugE$1&{kY!1g{fFnAt700JIx$)x9&2uMcQM%gCaKujpRy2Fp`Vxz)}v_ zCrO)#-AHD8Bd+R=IM7W*m&aIbS|kPipQ9k{D8-X)9DvQ0itF!ARzL&)F)A|otxU^% zW5TfLQb47ryL9N6MrsgLb8gwS5XiPdBYR;(^*#nw7(u<$Jv*v74;TUC9l-MM68mQanh zhu!tg)Whzy0=?T^_Bz-X57b^|g00E~-E=HL4cagiSR<|bv4T*xXu*=`s8{tIWtd)< zVb1g_yW}>*jiPt~4mO*HmXOa@$?|AMUKaPXBHYQj-cG2qwym4i&mOVcw(mmyI;}pFbI)^ADcnohiNLC1?Lrih2vt zxWKc4UW7HMbA%O$bFCqq`Jxi@Maq$y3HDez&=gprXX!?o3-@k&jVG2Ho$<|?oOvM; z&K_8Ak9_vMP~6QG*pWqXJM|K1Sk!(Ol<|+a0&YBP?urDHi&`p!$%Sewgk`qCzDa=E zJThYilPj7>2We|U`x&gJ#1C){*Z%(SGY1Cxss&JHexO!|W(JZ)Iyfbe4C&yQKr*6( zLjuX54(=UDhIOzuU@x6AF_iX*Hg6)F2|7eo`BW*0^^9$&X?B;V&Ge6KQZsI!>@6t1 zN3HIbG!(4v0{WI1kB1mz>3N%|=Ypk)*(d?PXNadN@f(j0K61mIahmGu7#Bj8Q+796k9eG6%Kx49@Zjja4ia&8zE=>_hT(?ueo)rxgDOZ5GdwOdS|jhl7VdQL7(ip^NvJ>cAe`yE zjfAm~zDY6!Wa>Ze>Y^&MFY0hN;aY;LeGr%po?vrtLoF2OUC7G4tHSS5_#GAg3x)rz z!XF}xJt08YUujiCC)8HVZw5AUN-GXZ16LKEv}*mMKh3<6pyD-n8jE@3wBJNs;VvMp zh;)fLZPb^TMRtH{;v0FdpqeN<+BhdTLxUfhiut2{bw4tk85a%b7ecXsr!iU<;Ps6X z91CWOH6ev|;azWIY19Ob7D~~e^#(G43~rY@aYr(&7CzW|V&PMyEIVqZ%T+C)X)y?+ zpmO@*vI2F<^Vx4upBT98HYtgg@Qo|XW85Z{V532ABCh$`r|@~W`he$o`20wbYLk%J zWR#~(chiLZMDn{^s3?F{zWQrJT)^F8cp!-F9Q2^wdhb)|v7A%4Tdqdo8xdXR{VI-? zrsR>!W~GLvcHq+s67IBuZuXczQyIm5+^FB(^ij-})HG2an*R;dnM#JofC?-i7>|WA zeWQVB5N8Br0=f$*69_>DY#I&2Ch&4Jpv8ov;Q|{#11TFQ&9p>IT{aLYi>L)Iw>J&| z(B5ItxV?*2dzY&Aegf@Xs@gjmjiSAyy1m2cavHBxTc0HNy;HR{RrgAq9Iq0`iWwN8 zW{UA*kyt2}#(Y*h3sB}VRQ$Ka6*w}c}wMJ?i#HEikvg>&| z!R%zDt^+Bxo#;pHLHDM9tRtSM1nNk`m12>R?HQqy^vBr6LK_T^CM`2MMnjFJ@Xk8Q z_Xd)zNNI3)QXEw57(+f0H~_*}o4^4`*>6uNMB+poKq54~B5(kN18f2ZJS|c{0sd1p ze<0#j2#XILn&yP2JE21nN*>cajtDP=tc@nr4WYLQ1?L;x|u=;Q>YokMK`81 zZ|WAJ!7#kJTPZZb31Kww=58a}BquZ(Av(J;Q#m+k8v7rB#!VP!x+qt}x*Z7`Wx7m! zRpCROmSIf)DM%^gkEe(S48)fC4q^$E;UE{PU^Raya3qfD>Oc&^Tkx#H4iK`3ftBwy zH8uOKyFj65Hxq6B0`V=@-GDn$Y{^a57AX^c>mJbPktj@P=&l%4g6Q$Lc2OnP$9(FM z3Rcmy?gi^^Ps8re?f?!F7X!U&Ki{xT6#rCs7DBWkwu#u?>a}4i=M0GhZ7L_#q+$IG zsdPC_l+(yAC@k6xXi_F}_mNhIImL{bag0-47^nP&1zkkqTHFOa)F~+JMHh68Q&2RW znQ1BWd{yD4TK4!mM?o$4To0XC2YJgxY9_c;bp|aQtAw1<5R>5;+Bz84&q0m_;+T^r z)9|+?<}LGSp_ucOR9~WV9}-BD;4i@M77r3N7iLb*0MES8A#N0H)p}bOS!;bPq$;25 z&9r_AZoBeBy7JYtCGE0!g4A{2E@KDMOXq4X+X;UV)jip+VZr36?sE^q$A*LKC+3UC z%*?(R{>?orwkcU==rS3)qKr5f2@fMbgw&YIXVHYtv&8+nQvC5)Ak&DcBd{fcDM?kd zH>j$_tEz-nPb>gSj2I@Bs2}Bix{LZIo^ny;W}QvzVdP_%TR&BkR^{FyiXXOZZik3H zVcVQfpk$(j%1r}6eUXw!ecG@dfw-p9E(Wc`Jx!%GOzSuB z@$?fD(_J*knbtEzYt`Uc0KIXz3(Zpdh)MM9GT+S{qJo zSkF-|5gd?^imBfMrSTY-1=*2cV@)p$~N8U>=+6Clf7&4^)^N+b0m(yTN| z2@_O|uqFnzlH5xq3gbEQz>_dhzbAD9MWJ}yoXth(U;(QNu??9wwYbLp@Pr+PFg%Zq zo)%2KLP4y@X*K3u3EP)Q6tbcq!}}e3=xV$gYkjS~4pkAw60$vkfXXK^HjJ=APi&cb zto}U-4J*B=DqKcZHR?6T9C(uyD=G`~xQV6Qt4KHE48-S2;10#Gn(Lqev9Uh_H14iE ziWKz%?F*#JZS4kY<|3P8K2;YMe%9+CH`YXpd$5;VZy=(5J_h9iF%9igi4;y@x-*+% z*;}bua0}{9aI4luJq0LxQhYj?boS*Wt`upbUVe^&7WJ)r^s#0P57av7Vd!oAAcd(( zkziu>_z+6J9v98>bS=~VVE9;Y&>eB!P8<%u9g`ihXZz#2q#~K^*X60(7eP^~RyDN2DXcRS!}ZSiPyY z9r`fPhmwx_+6k9Z!gmT}q5fp*-2&2aMEYX^3H?*1{zRnxNft?lIZK65aUP7B_n|%M zuWJI-*vV?&fD~O=czBzlc%bEMls|`dF}sPxbnDN=!3nrfoB)dim0+!tfJj~BxDwQp zPMiSC8I|B1CjpUYWHb2iK69j&rbb=C}czFIR;ZyZ}^1BWGU+X2zutU zjn*&o?8-p5=ZBchZXz)~#4~1oIiI&>lOFptyN@{y^qyuePp(Me3CE^_ur>{z2tywFa3k&~E6UF7VM*s)BV7!!)>G8a3EiPS~T z9*L=C*ywcPqwU0(IEjhWMa~|H$r#*;kFgV9>Leyo7dd+*W_zLjp>sagPJEe@m`GjZ z=)_Kvoz4KE6C*~Id6ScvNL}RU#B7a}-_D+8MvO|l*-1>KE^>6@{q2(OB*S%=d5N9) zM^0iQb&<12Vlr=6;`BvWsyzdhnu-ih?w<%)pTYt0S$JNb^%=Z0?PGjmvWH(x#VOV} zNFE%|2KL5m&dX3f!cY^s(G>8MtGUKl6~$VnaiF&mD_J}pWg07qV7&=F`7Tyk5j@sg zprnmeRK~`LNA*ct230u`)$}`>rW9ip4LwYxfST-#RVc6`Qo!0raZ;r-Ck3pribzYd z#%UgF94kf0`WFg{g;JX zN~~ERmXKwTSRCqNK}KS++RlqD%8M;hV(}af#726E4UpL7csYx;C1fQ?Y%$L1iq$#Y zU=WMwPTc2+P|KHz;0EE}Ah_}@&Y#m2t30t3N1i2io_KYWj<26avPjoNG<4AV0^!Dl z244cu0R>D16B>356WlxsFb|G9Z60HlkBTrgnEHxRW3RfCT7&JdxdzDT56#6u&M4SM z%}z+I9RTvp9ZaF`o4ltET3?e`Y-Fg0aFQ(~U@1;2N-asjKv_U7d0RXPje^3w?YFp! z6oD7PhGl>~Ut5`dH2X>nxRQ-Q8B4I1SZ9#eCrM($)bBTvFIc6U*<6t!Gh zP|H~V$RX$u;#E=ig?jha5N)#VP<1wH;8DbVpRmI>7#9rl6d?)vqF0Q7j}a)^g$nW3 zht*#95GvRxGLkL|CgN z1_PrL??8n7UzvEhFvQE<5O*_|4r;Y!3qI252!T}zwy;+Wtxu^kd&Nk|ZYSAz=7?qE zjX;uJ43A#DLQ_meHRfgSq=DT%88ma|RtXZMo0-`vrLdiQ-tWjl5+4wA0O!Fuo4^4O zu=?Ti=hfQpAitWjLnYGl+893gPt}=`=p<3_NB~Z_P9m?a8!Wjfl;}K7#h$8SNjlE7 zPa%))rJ9`>sl7%AyPX&sXy0h?^Y0;rgP9@YTfo`-z_f0~E2fOq6!G6;O93x|MrxNsQwE*CBWzT1T( z!1uUtG4Q=ETmt+v7cK?9&xL6ZdA|#n0sq{EW5B;~;d0<#x^M;X11?PU`k)I_#XjW1 zRI?AeFjeg%E=+a%s0&l&K9e*j}MI;d}ToJ{K0jrx5LO0c!e%@7$) z`+PTLaO+Sv9MRICA@}aQZ2Mu{s!mM*Uc9=Vk3#83w(LixuR!TXosA*@jKV;wz5!t- z8`Xm^%MpXYM>HZPhU;499NE0My+07uP=7NyS5?R)#E}H@5i<%ik7)llgB7EG#Qw@r zn72ijd`lY@_Vv-K_LV*Et;?lT(@1YujIO(ETgXU; zTxQJe_Mg+OqIBV&>1eV2E$vO?VA~$UscwV+oaaKyGtx89|D0|)r7QmL)8!~#NzZiu zXUoX-8ts|qcPwLB&vgG;*X7^X9@v6$TV{@S*)&?Pf3u%fp|yCGi)YP(xhz?(RiNdP z#p{s@o1*5}-aC%VK$|wGb;y6#z5h4r{^S2>hwc?NmevECC(~3ts2NM^BbxWkEOS=a zSXwW_m^qtP*!8@^_Ck0Ou2I_O@n(dPjDKrEQ$IoHQ_oZzMh8`mtFh=Egg-)D1naJN zsE)p46joId@5Fk-+m5|Wk8!EQ)hfvmgZFX6{aOoRCk!rF;4Eyl+{}ww7ARQXL0P$? zQrAOe|D0K@0-i#_Gxw!)!)A4xz20)QB_-v3M(;&bQq@v(NPd3!CL0_0tv2SYrLori zpV`EuLidDRl3{jYqk7$)`Ik{FN4o!zFkh5N;Igs2p?ffI!n2vz21+ff1Igw z)qFD47Id<3)m_u?6X_c>Rc_8S4N~?x#LfCU%)zwg*&k)3zl_~#yoygZ+pA=TgWUP$ z6;vIZrj4eDAr5nchtJcvtVZeyMAV0P-(glX(>Kr(opf^Jtl0-3UsW$Bf!tVXbdVp? z$3HlT?w}JMeySh!=oP;P|480@&_Pd}cUoPvcQ!icU??$r3qH2Vhd}hejfuM&yu8Xy z1UOBdNj370h>~~EKCN*ndK=j(ACY!;Af#|yld*LSS>LO^S?O0EKOG$$BF7M zUCmFr!h^&RJd8C+Q;rZSj0kZOQr(3|OUT2gSIEN~iR4u)4-ZuU@kfhr#FyI#$4=yr z|1bSBH2;~}U!(nl$?tD0&v5{P=jw>1+CM@2r)j^Ne6=oVL@}{fQtzUM%o5RoFP?@{ zIG$JUqY|ZWA%*+d=snWa7IGn7at}&fAw}!3r>uU&hdT;+9kA8xLD{R2qGcVthh75; z^MqdYdr%topbRXeaGCd%ohsyl?7jD(r1zj?3MtcBf+M#I=O7k8RydU9Cm8Nm$ zN$iE_FaO?(x`S6_Y+r(7FlCSWRv&0|G^T9RScQ%&8$lyK$M$EeTBd2_+kD4q8u>PD zsiu){)5dEW`8I8lrjf5q*jR-_0NhM8wv(^zTHm!SQa3G?jT@^luCapT=h)tjRrQ)i zevWP5Sk<6tE6LAsKQLA`;Zz=lTSO=%kWDcoov8rF-Pmi!d%C=d;%$~5v*xV1pEjHZ#F!hHpzp>HxD`6=9Ez-tL3 z$)$M?FTBvQCu+EE;^D!@w=w+Iw#Dpk38z|M4(bsR55Fk0OaUW*Bd{&iBNbkf8ceCE z$?;(2yO5~D#!hNozKwzVg&eUPyi7(2;I3eqf5kE0knF&*j{+)(@r zvPl~|$sQGVk$Qc5Jy8%rhTw>K56s7@=TnTGWHwF`icycL82Lv<+8~RIL6!|!WGhaJ z_bCNY5Wx+1gAk#%230AT{iEtVYU^*rM+|8m>Q&I7J3Cs|o=HBYB*c*B`9KAYo!rFV zkjpaq=HpWMuehx2;XR&kZ(XEQ`ZsSrvJ=z}i?!;nNHEXIBeWB?GxDC&@tW&th z$1fOhPiw-r=J-+fye&7!Y!Zzs%F0Uc$g}Sl8bfeLZxgM8upME)Rrz!-ok(Xj2<2BnI`q+)^dUOZ%wCG8Qquel!91}GNBG`! z*JdSKH6^cAF&6W9l~A8?GULg?SD4+zrzrS_YqI4Ee>bNORl4-tLb8S#9puNqlK4+r zGu8I{E4&P5#1T$lIX+^$npji#E>Q@8qfOf@a?zhFiCXuP1SEP83(wd08)nwQKOL)VO{OGoJT%0tgWs*msbR=(DaH%; zUg4YMz5#h3?l+7+66}_V2Zwmo&H9tP?1=$ z{j`h%g_o(l&E)SQ|Dywj`MDx`|@z`$X6(m4?g;jbH{JF{OmB>!%Q@z>E74J)%&ib_L^gKke`3qvkBYTI6hFln#itqKFLHl1^PJoseKD< zp~fY6D+y-32SX<;Jfg;GqNPS7Nqlf1`x7*EC}U<{Az#Pgqfw!7nKV;lNiGbIQ|z|~ zz}V!(te}y~g^*{E-Up-aR@-@!+`2pb_(WME9*-w-`va#AfD=LujU%9qng!)+s;{d+ zS5bl9H9E*IPhlg8XQdRfCJ?}OoT99W0I+fn&!L7kJ zXz-r5lfx(zJr_a!zKF`Erj=@Yc=seLkEs(_q#pU)6=uSdEX|`zPi-Dlc^s|+xj!tF zTbq~Lel(|8Hcts|aluMYGUb9*o@AX1RzoKj>;t7-u*OsCLVZ2?OunmLs!+>xfm>XV z^m0Mc%LPd<7bLx05PG?gtrumY^nzVdd!!~&OQT&0r0-CEd}FfmC>2a>OqL!sONA>p z*4n|UjkDACaBMBH8YwT#;^@#sJ^Fx=s8nsfMnoM<6jAt*VXmiaS2udf`MqWHgrWZ!JsSd4RGGQ*mm14Bf zK{V?J;E#W0VDXVijiI$Bn#75qvn3lJMA_S58Ub~VSBZMZxQ#i5l6lI6g@YU(C)Iv$ zq>k`f((!+h2ugz}Mx5?rPtOC-NE4sRHGy~R;ZI=rLmPDhzJYRx2or|KvNEkxy0 zojVLsr}ce-@-{)h<6~*UBTb0Qgmi-eZ@Wli$T_SlEuI7!zTgQ z9PmDc=ZxOtdH?b)@x0$byoaA5odEfKR2VW+^m%~FHhf|gpU~Jr%k}qQHOF<*!5e4^ zH;sIaO`@^psQEiyS(N17D?EHXX(}vZp}yB$8d}mOY|Sb|;<7 z6{^_Te-Fu>bTX&v)*}`|F6M|R?|`+=)olkC$~~@=4(SR7AJ<98bf6XJOb2zKRk_PS zM|Dm)C_j`X%G>8}&M(zVetY+lA06KH%rDb3zXK^hI^+H3{2G;_c04~)Fl5d@vcd4-Wj7DUc3Knn8?2?*EHI9dGyLUk*51uxR=1zT1P(zN?o-(^&c3gj_4JWz@mG`Cv^xSe*~{$p;hpU=@Pc zL_dViikeV4_-Hw015<-C${R~Nj$sfW0A2N7aVl&Dj{$uvYXVwo$0LP*F}&z4t-x)D_U`Ft=|IQcAtkZ;cCILc@F zf13|#<6)`|_>XA+QSCpb{l~Tcg!Z2#9~Bm(ItuGLVt@rCnI>0@$BGc5adU5!=OC2B z!|$s!g|nVCKHqgbR6Wh`rph4(@6Yf%7-s4X5)OVk8?AvqEnj|B!yan|RRfmTRA82m zwh%bex9iD~$t|MzaqssAG>>i$)3T7ZjD8Y?S_hA~!`0#g)`=t+rJy2t_+4ZuMCG9Q zoywu28k~GQX6h|c`w(pqDldUjwHoTP((E3OQ8wP@=wF+1(;^pER<()SohRb5`1Kg@^ zshc(E4%QYiI<~PsCz0;DN(yUS)y2^$*CAYb-u zoEP?d*4nP3~(%P9Tmr>*4WhTZfdnn{jrKTw(rQ^6abpC|Y%Z_k*i(OWmOEKU^;oGWfst+&$zpL>dwf|@GSExqri;uuw zN+M4|OPpqOa4qV%njUdnC>=*1oBfL`9T!T+_307Eh0<|Vh}$=l&yNd*<4dv|kJrMY z%w9haM+@M5E9!JCHISGV4j@8h(jFr6oz<_bTpKpNjmsl-1-O;nS*N0iw%wygQ?$pz zZBjmJsw1Dqnc2v9hSN7a7W#Qe&3~#Z(SU;k1l1F{Wz?KkZ1=U(z>q1^^B<+LxHmpv zXKl|e2IZ)$g__}Fs+Nx4o8cW-T+e10+L%w*vl-5C#r154-?-wq8Rj?!&bDpqJIAqY zHtRguHfy%%JlVErHs(CJz)Wp2dUGE%19n-S6n|8X0&${X=f<-Lj>z1NriNkct6YOJ zW`+>;e2(*4eO)Oq2&)vey%Ccx;!)0U%}qu#cdkDvLSsFh^~{7#c)7hphL7i|uwnXn ziYlW(-Vi+jYc-PVd146C7R*~T#21c)YMiq=kqBcikAoIjQTj!DB*s8aBdJ;+C}IK+ zOz z#z7oL{gS?SV$wUQ^hpp?zvoIX+$!P=L{x9D(nnhq@kJtzrsg!PT{iJ0BJ!6W_`@rT z^A#eFRh-Wd=Q#bIE5D11S5X7{1y@!PPn&>MujSs^9S!hHq4-vd8MNP3R4=z$za?3V z^;@Xw1ypZlFm55W!U(rx-7CW$j4Gc4v5~2_DdFcUTENouI9{gh?UzYC7Qcat zwxRC}8KO%hujJRS5dO6o9aQf_+UqG^zj*YbOAVZ=!JxQ&#C+3~vbQutIpMfJ4d_PH+4T*P1y7pM#VC1W%Up9&lR zA2W!^%r<)MOquue?0c$CvoCxZ1!+x zvUQ}IoW(lc2uWzJ4)W9X&ncp};uD#1s}Vkam6uEwA3mCcCgeq+=7tQi3k;t$2jY87 z8SsTXI+?O`kI6#pd`|*zzHUPJBKUYeNbR_&V(2)h4p$?ta$IBtnFF#_&A7#Atfrbz ztKqm37UVm7#%gZ6bBUfE&Z)S?)7irbU?NRIMcOoC(?sKR9Wvmtw&NBE=Uo@= z4QQ3Aw+Oi(k}&%17Ec24BX0vC z`>~TwN8L^G@NlD}z=(5*Z{Q$XzMBsZ-#UCvM`h>r%7mSb!_>HM_UxWaq)Zd;y)YAJ z?@oal`wTfwfJXJv zrGmGG)vY_}0RYOkF=o`eY;YE*ZfoYuxN51X7K>mQ0a-_~jz1`_m$+oX z_>D`BQD1iFL-XNeV~|I6gL#JkJdG*0NSq&W1+x_mMh&xY^+N<&*=jex%@MM{XHNEs z!zF={II8Xlr-mY1El7O~-(!tMq44X#?KmzK`e%WQ0=4RG<+GsI2wWw&F2j|@H2_xt z&*4uF;92!??PP08V)l<{b^i25`?GoC2M!U1u{l3>h?s0NF?j^*t!qmCJ~30;&v1CM z|FRQiV8~P-*{>bSJgt4Qt~F@~yIRWk6qsq#(MAW^U#iWil&r7C{^1Iit{CVG_aQbE zbIkAXGMkc^)W0UsyWz}MhO^33)p+|@39r6^QdGOBN_d^D&=A(o2^TLE86pz~No~{Ng zYco<}3qymK^&^B6{Mo3GxefBO*Y@CKaJ5eO7R$7<*pOE zZF$^YpvF8sblwYzgZ1>SB07oWidEFvdyen3>8IrWqHQ??t$Fav*yFJN0T&*`6RMkG zDfAMA(}(A2y}eLKszmZtKtV8J&sY40k zTh4J6qH(6vZdYEKc`!#0hQfMP6YqQ(axetFqP*Xcm%E%S@i_{1kXskU0>!!lM2-Cp z_T;cCH9M(j5JI}bBUQ0p`aOBx&R5~ld`I(i)+@vjn3Hl>LRdF8oZh-3$VwdswKa4?ZZ#8i5kzk_Q!|Ny!itqb$^KQ$iUoXKF>(15btUXqCg*MS=aVGoDn|S~ zykZP!#sDz}T#WM)ED@i5MMTgQ(V-;J!;)GCKB%m6i+V{49z}FitfMb==mhv$k)6P2 zC-89spDO`#9hl zqij?<3MCtLk@5Yjc(QS8G?LI7MJlyMk$gHw7y2o>x-!nCSVdEoN-TvOb?9re$^KiT zC5bxvmr5tL9;h z@;K|4xF>n6UcZDr_EM&~7LTr|=ON3D+D;ml4fQa7ClAeZXoW>{h;M;#te=0i(T+7z z*CI#6_El*E>lb4msA6%j%qilo6uid3=_~&k9nT}bS|F%I!2Tc-^t^W+O%q%( zN<}t{widick|ABl_j5Jh$&Vz>^*bqp?2mGZOCki0rf<)PIu zr9*Au5CFR}QORx-yTjR?#qJ5lJR>A7HBJK04G5cJ2fGil`!w_X&3F;?ui1@wC|tvC zn%!0p$sgmPv@_YAUYR?w6t1nVIF$kT@0LGI2(Ray*~uzsQiZJ2|iC2NLIpOpi2DxD0Mc zv^EZGEEZ=pQvIxB_a?Z|xhdFGEK*HGAIa_!O;n$&*nNO0Ps24udoyXWxtU~s#BRkP z3fHr{g57%tktQz>BF;ZD<>(eF-Kp%J)k6F?v}_n)ir=+Roqxsd{)34=V=z%}XZL=l zJU^J~?GY}Qr8AEW4+&`$KlW8cwnIj3DqgOMI8}ckSBf*x?K3zZqy-xNE5-8| z3-G(;qtI^xh+6^_0XmS;sf&T8Bi3d4i^&LYMVxLIqnXP=5yQw8Xe8( z8I2YrcOhN_@<9sq>{9V3M$5&Oq_p^$(FtO!@PPGSphR(>>Q^kqlnd}F&o1$dxCZnR zAR*2HB3)|aP{f@h{=jGeql*b4hi0HAu}Py*Kt7iHTeE0abC#iT5&Ck zP%1W~L_XB&Lnu$FxQ5X!qLwCU@e3~dtpcZFh|W09t?d5NOS$Y~_f2*`VK?L>dWG*_a8vB=%kClUE@k(0b}wc37Iq(D_eFO9 z%M{aoM zY2+m%DlRIX2+2E&S9y?2@o8{hVfUlrvk>-`kXuu7iD$6Ll-vPLrj%?&_)rcnEV&Kg z6FI!L$&C%gBt`%88oVfR;X?Nkq!$9#u%|0>2V zho58jPNuxX;aAyxlihdNeV^T1z+=n#sJtKK{Da+h;7ajj{7xe(JPER~Vz@-1a(x*; z&m@;h@n!sc4*!VV?d&Sfhd4anFGX?Hjc}`~sID5SC~a#M$r)93C+Op=?uI+PilohB z_o%8TQA>-f9t8aldunFDygLo89=Qzhuu@zJ$C@L z+T8>iYX-niQbo8Wl?Dkj~sXh^uH!r8?TF4#M za!e#9r?IA`h0M_eY_{ga^iN(W8DFQ7fG(R}}5(jz|7sM|kJ zdc}Z#NQPf^-r_$-`o!k`3f<*jF8xCN4CF@fjDMvJiYNC{aqsx2$*_38UZF35io`w* z3Pl6cWJEm5=rS=Nuv!+Y2P&XhTi{GtA{qx0=VfA_zz<>nH)}L8utCPe%NorHY{tVa zUubk}V5^La_LNF@YT!DV5HmD-J1|LBip36^Cac6s2i+yB#T5>^U-l7iYxHU0Fg#TA znMRS|!?LfKw71HkHTa~g75~U6G$puG)`@#*yMtPq7rbBg7iSGt=)~a5axZaKt3qc4 zUzYjm`v`C?*}CI4>*O-!0~~aP zu~5uoL{hdHM~g)cy1_U`oS;ykJ93|~NUYOnL*xOVOEkJV@|dw$T%pm;k*9#RYjiK- zmWW$4dIWJx#N8T^%%x(NMkI5o_?<>Z@ngm^@s>uh;-`TAqS1ijH;m)N#~QU2zXwEr z9zkXJ+Mu%wLXXQi#Xipp2dyrScusK8xy4nUl^UsZtDLww#YxY}4q9ED@|@}*N=K&_ z`TTH1!ie%4>gjgS>f(`}GaPho@d2K*G*bDU?ZnL~p6oftL92@o_MGdWbBpJA))k~% z@5Ie1Ug){NL92@wxzM@AD?A&-7hFpl*5>QO>vI zH;R7(T`Y>|kOgsp(&s#vh<|8QR{E;vGBIn0iYqI9$Fmv7)e6;=zAv|kr)MeD%IGd^ z5J}3U(hogb#H$+3F7;z2zhpkeT_%nxje4&Y4>~CB-6o#X=(y5a?{?u`pg4~!9q9eB znCPGu@AcwD2Mzb$AkKBrSnp574hK#4-Y8zv=yYg(llYT^4))$6>J|$8T_%25I?H>T zSgp~d(xbh%i-$GZf)f2yJfqRAjDE+6T62x@Q*ruClCn_*TjSoJiiJV;@28gw8gzY6T3B<1$4jon?{!d{X%$kUGD~ZKqNHkKP2vbNc{D1mHUPv z*^)>2!9UXF1)xVonQoQpq1lqh!~l)v13fN=X>=XX6JnA^e+GI|%+aWMShnOTv0S4Z z(60pj^cLlCFVL^W293T1dRkno(f-4;CBG3nG&%?98S!gwTi8T@j1PDA%Z_ zY@K(PsL`mQ>_VUcj8tFQB^p&6+V*0^ZBTJySlJfubK-=fm7ZhD-j}}>M;xor^s=kG zzZK7Gw4m%d@AKmA#VT$w&i zp4R9Apf_>utzsQ5v;We2BQ?H5y)VA<#;V7FM)^ zlRg}Y63G)Q+JVm0Xm!PCptChPvtk_3dW|lwm<)8WM%yc<0d3Lf-inz(*J$+Xin%~H zX!J(KLZI6;`bWiLpt}_kU$SPuV00O7rX7#C$22O7=WulU8wZ{0lkx=zo$fQ_YYsZw z=aKI?Xr0e1KXA}SpHF_GQEmKGpDDl8C==i0^Gn}JR1=qpA@M7H0U6O~bbOl+uLd~i zC%%xZ)o5b;E*X{$8XXe9%~vFwHJTg0#}|>qG&&~!fUj7N)@XTrk}Q#vG&(u{gs)U~ zYqTc*tS>5`*670cOTIE$d9u>%iumikm|UsR4e>wv%H>Xt?umcstB{SSD9(rDpZelb zoTkumrC<6I^6wpt0>44+R>{vDl=D?f1GmFacEp|P>mx%BI^93f9;^X%pvl(4%*usDqnTb!*ZB>+d+fO z;qrY44L956KO8j193j7O&|z|<^zvey+HaycN)|b2nz@fGchKSHzOu$a^Ucw6fP)sB zV`QU)EOV?JqL6qcezLird|IRT;+^LHaxgFV)tYad9Kq=E0F7YdYDDANc)36$8l}d|PK{`k8ZR%>h{m4r@_LPEoER@}XQb9B$wj&mO`-)2Ob zZ9;w@>vWX+1SwA^n|NGM?h|BCBN|O7$f!m%nof|_8qsJvLGGmy={Z3*YD9WYkRvoA zJtxQs8j+q8ShI<;hLM_&Cd!eTlQf$oPtk}pnolVI zXp($XBPzor`Lse@hDq{SMpTB2%t>;$=A<%AmY--uxlfjXHA*weZ?Y`ah;*4O`)Wiv zOqTTuaSoGZiV@|o)toHbH7CiOB3EfdwKPSZsS(xE6nUXWR7+Fjl^RhkO_4WiM7d9q z?`lM4pCbRN5$Q5T{!<~=Ws3Y4BhuwYbBYY`milo)x*RC?*NE!uKsiMt%HcqHghnLu zKzWQpEb~CQm=VeRsd=D0*FpD~Q{@{D^80=uPvK2FasJ#qNJiGG`lQ^a$!d)#ziG0+ zMpP5i{TWeyYm8}frh_&CEp^bZ&4cAR zDjknD)8!_OsI=4N)r{T^4os{Ax<#YGiN}oT@^+2JCSEe9%U@_TIq^Es(;Cf4{0ZnI zjpil(Y91oLR!A;Nd}7X!5k9bZS7s46Q`R`>bMtUHT%(h~IZKY$s59a7&z3VZ`e9;? zF;_0s=)y$AKUc2OXmg^{e}r7E(MgCqQf^?hR$P^+_s^HtGI~?qpGX63*JyI(0YLXK zQX}+ydA~}>^*LWY%5ycMwcs|5!OoqgyLC z8H?p2jk1Zg{v~pyM$}?U<}ekC&e@ zdQ(yxt&pMfsqAmcdn&g8)i7EcAZuMA_tuE^RV(BWjc8xBLXOdh_Ejt76pd(KwL;F+ zi1t-0+eWy&23^QGQ(-T~S4G>oj_^>KSOZS)=M|ircQyY(_gY zI;Z+MD#Ha_qTp?e&eG@==3KAQ=Zr4VsBa&Vd4)z}7+t5)k&JHEsEg4Kjjm?&bB!Km z^pr+_Vf3O#v6`Wt74mJ3M%BFJw`9$QO3$NfUh|(Q$7!^+<}H6#UZK$|h+8Rd*681e zTP1fgS{uN~;6GXZNuzm*5B;aeQ#O!Hiu=@mn!Hz|d5N$59dh7Cj^qB|DWg-4 zchDE!E;-jhn~c-ti4OAny5+eJG6QGG!57&ww;5;3iHvAH7!ItF(;QS5I7=SxpsK*x za=wG=0&C@B2eo+5k(Ne%`wk48E7v)w8TXp5chJzldGZkl?GsohUw6;}f%Wp=jNX)c z_ni_rUlv_VdcG;A^?k{Ip`4~sw(lBaqg$sdkfbseD2sZ_@9(OzzgGUvitVNq(Zy*yM%Y&GJhJ75O$x^HQbR z5y`^?KawRHotj)@Y>|6uv^jZ5V2d2A(S6{&T#nJ`_sO^XSIC(f{X1#mPTn$&`qXVQ zu9Bx~v~OL#|7y8eqt3b`0$0oDHM$#|+hqA=q{|uNZ*|Z4uai?XGWs2j`++xW6zjJH z=qrtC`yCHdvx(Ae6npnu8Q3nDZzi->WD|!6u9uf+M5E#jatEV#Wm~__zzy<;KO)X| zC7s6nL|&p1oum9jwr^2V=&a;Md6t8Ud^gJ58L4spCfRy9O9_6w*E9Z`(_a2mhWgZ zw|*1iJXf&Rf#d2QGj5S#jXLU|0xH*NUHyl6-layPE#SOW4$$a&aNa7L7^%I?ZE}Q) z$VcwC?2m51@Djx z8J!`XMcfYAtNcE>}6| z=jJcubsCusYm8sY(rqeTIiq7V8o+3$Ms17+T&Fn4HEct=#}(qU^atc`HKMch2jrU? z(OLR~@~;}vS^9(W3ytV3{UM24Gx%E@m@tq~kw!ITqk|9qulBwMzOCZQckaEiCCj#A z$xf4W9dIBtNs~CSlaM$h6eo6wOTO&@p=6D0%Z?gZGLoFw1$ONvv`q_zEJ-0PUnx*Z zp|tGMUFg?B3lHc5TUxr5Lf@kwY&ZSU?zUUnvP-w`|37oD?v*S%4uSo(@5PDEojEge z=FFKhXJ*cfu8bNxMjd>_sFj%R=|_yybsBp5c9d((#jf{#-B=~DQKYq$eZzP{ms1^c zUNs&w)_s=s9Z-F9Hk3VPTx7>GbI!*pdqQHP>M!TqZa!%Q?qSYRbgF_p$J)l^G8_|>_vQ&v-Op{ZJOdGf>O3I0M4j7fMv;E*S*F`6F@Th1US zIy^AfMEI{He`lDj7z-ajs;Ry#dAxKqpAUP=>Xwd$V`+LZnjc+ChqaV+SW8KVpGIAl zEl-VkPB7m58ly{jYjMM-dNIedsa_EZuL|Zr08RDUnDEXSl#Ca;Z8X(yB|kAbY$@_) z2%p|m-UK3^&{TnW4C}fG9n5sW6FQjRzk@j^hINvEj+CvJu;#%HTdEOwpJGnj?h<(7 zrPc@?LcB8$&>ENiwa4(>x1^|7y;l%u2 znd}q%$8&gZYW`Tzz3*y~qYvI1by(-TNoW?%b@W!f*D)mse;#ePLuE)KvT_=u$I+APk21pYB}rt zI=oy;d24JHj5{}(YO`Rr1LFOafR@@Rm|=mMj(7H1GcSy{u!Zriudteh&l&j4Q>Wn0 z_9^%_-6<-B&pdUiis17OeBO!AJXMG9^VFeS9m>_ATph~Q3H}ts+VI(^YT>7C@^1xP z>t8D2Hbw7Vn|cObwl-Dy&S(71stx|IW<}3svpQ$mw}}C45PXA;@0hmCYF0a^J@0Q) z9n*dQxO3W%kcZ(03Ad>mr@c4OjD7j@puqijGyIX;fT6FrS?!rt8fcJRdxNAlNNR(+ zb@~Os-!+}obRK#?o1|0|@D~S~6fyT3^u<3U@Daer%bo?i!F)k5cPpMD9Fg6{5q0|f z$IQFcqWLW)#NS{Z!OrldvLkBw{G(+p>OW5R2M;Um#D8dPoPVWx7?@}LM~y$9e_C*Z znlalSJZkjKpNsIU+4aFAYGD3HeX~%@df+$IYz{Ucygm53@uB&LOXnG%n7=bP&-nEG zIN<&BSCkx4Ps~3Q44Y4*)DiW)`M>jp%~$3h3C=KiCJ;84%=$EFss(=Jyl2jX!3Oix z1&;-r%vB3M;cGBAFL+kM-vhpH{to~zSny+DE|Ju}`F9v>(eHu}0sa9zWEPZ^H=Eo= zy#UOW<|BY_1RhZzUl73!-a8lIyE*0;7tAQ%YCgW;N^`5p-B+2Mcx*MFUvN7xKbF+r zB6Wv(+QQZ4QIm9{X4}Fw2*($;m0xP6r)@4D2L2DgU%l{r)OgpzouGf;!g%=(^Ghhz zY<_Ry2LNALc&+b%Q0M?BH<%sh@dM=@>WXQHk=j=e9Wy^rPdQvA@FVq~DnD%AQhyhy z-383+#^>wrE1zY2t^S(QS;j5(Uo4*o__gxajc?Sq7|rH0^^YUxi}i89qxDafA2EMd zUsAq9l`SI8qxIh|zaO>VZXPvOFFGxFzsTf%$ocj1ht#=?K8kyO=L0@z=kHroR`HPe zfkoj8_Uw#`u=&A7pGMz(aM5d}&!X(@X4s&_jtC4J_slsPc@|c#s|XthKxc;e@kJXD zzGu!yrS`2AGejF_7`H4Mt~g@+?u=Un-cAaOgwCQ{LE&iqKM9@h0)BqcixrPhw!s6? zy=VLfpmopqXBqb`oLyNa{6A^_=c0=$!x9dgeT(7}25-Q8#(V)~Q6#~1IZyjb$| z2uujf3jC${<;C|`UM}H%0V^zI*3PcMEM;h!%4m&zZi*A}A}%!-DeR~pu- z4PP=}HyZ%2mVP`arEU@mcL?UF`tydmP}tgqJO>4HujF|^@_YrDXy{(SKPvdA1plaw z>6q4LJtz3*U`g7nqiRpXXG70P>QOb)@ECOUYEV9^4mNx}^pfO!Npk)~!auP~-HDv@ z)b6U6aYy)~&`)tRLu#|E#~OYSnrBg;kE;I-I-|y84ZjYJ8b5FNedwU%xkKpOA>pv~ z^M>dBubaOCwb#v`H&|0B?eZx{FhZLFe?N7d!1DyNUEoCmI{`{@~P#Q z31$TFJIk*Ed~x|l0DrvvTEJJA9|U}D`C-5d7Tf|@vf_5Ze-?1ciq8YSW5okgel43b` z#ZN;u2ETPO8@KCDwHAoRE)dKDgFcs~2EUE63aM?@21(r@m<`wf@@zGjXRC2N;10p>5d03o?+|>{IE2)w zaf86a0zV1(x^Z*UzXRUW^qZw8UB_^{aL*Nq=F-C;CX|K2n|yx;n-rp4jcjmnkF z!VT8%r>;bJ#>zDa-vS%8-+K4T#o-2H@yZLsvoK$@l*}_$uKcKPp7Gw5D-izu)W>19 zE?RkMcpjuQ1h{AARpGL@e*?;XeC1)SgxN>5gjb^Mtg5FlXC+pcW17lV09uTnn1}gfenYTM;=Z z)NVq!37&lF*uBt6fA9e*^%Y6I7y4Nrd{i)H(xRuN#^;3Rdy(fr`BPH+bHKw6NGo0v z-d>VYKau=DkvvZdg_ne%r-Z|2ZJOlyIpOV9srT0c%hZxt+X9?zUn@Nfcztz~wPev`lNS!CaG0OxW=R$ zYBAd$D4%U(7;b{TC2M>p`_yOZvZPik`HzCPE6o5rEbqlDT?2T-UjT2G=)kJ63U9p% zsT%c{_$Kjmbp)^$-*qm*D)COh+3GI9x$17f1?nEa#p-i_OV#HASE%~|SE;`RJV$*I zutohn;Cl5C;0E<&z%A;lpx+_2T!?SUhY)%S@DlYrV2}DWR=&H`8-NM*2fzVk8kWkc z62KvR^W9RHt8%~*6$0F+!hj!EHGo&EX@J+McLE+%GXZZ@b$~ai(*bW&?*hC-%>(?5 zS^#*jS_Jq7)d={2S_b%_S^@YKe9PQY5392QA63mpK)qo+&>982(fT0ZP1Z*NZ?mog zyu&&K_!;XHfcILr0)D}|1MmUsZomhv`vAXU{Vm|b)`NhLT3-cx!uopI9CcRZv%Y#r z{F<72wZzz0^9`##cwhL(0xciIR!KYBwN_xaz|kNvM+811@P`78a^hzRY!(<5I4ban zz()lBP@qvE`2{u$j0zkTctqeM0)HsbsFeHyn*~M%-d08Y!vbFxsKUh52|P#OB?3nT z-X`#2fiDYG5y>y`9D$bz91(b%z=s9CEKpTTeu3u*yhPxLz@Mx*-Jm9vs(WkjMjD)w z%u@zN65rnPOxbtKep2>}vWno6;6U)I;MKvKgZBj=4n7t9S@2iE^76X!IpwMH7s`K8 z{_Aq9Vrs>#ia8ba6-z3bDlV)TsrYckbrm14xTE6kiZ50CL&XynKdks^#jh&&iKyzR&}q$dtw@Uz_sdDK%B6Rc);LVAVrak5|1>RUWPluMcksZwvQ?-yc2@ej{u~ z{E^B?b!0~5)W{i;%OZD2o`}2{`L{@=K0saex*F#B zguvSc-YxJ80v{5%v+}A^ysPU?!9CMiZ0uAIeMI%lz#Yi8|(x%;AoUltfV?Zd#-3+y3Ih!@Enf;G|>m|HF;Q8+&S6%NSwWc$smnoH$ z@YsI&!W`!LSoKciVOg9tVD>OD>saupY{blia|b|pTA)1!<{`puc)yCNwhC-ld=p=X z!1M9u3{!0fG}NtX3c|MtybXGX^B_P|eG1xVVs4xYcn37k#5+!A0R9uS&Q#xm_L=Hg z=$@&*4b3yvchu>C&%xtj;;klg0M9b!0k+_~z2FMp;x+Nsl0|^Kj0V7zu>^3~SO)l) z#&W=q7)^lJ8D{|=FjfQpwecRn>y2i>gT`9$b_fu>8LfbSW1I{4w?-S_1IBqs{UV^L z9x*loe%;s%_zip$)>Mxg?SPLN+X4TVaRK1t#ty(IjQ0UPiEpo(>YGL<;6EBsz^9CE zz^9EE;4?-a;6E90z;7A50iQMc0l#ge0Ka2g3izCn0sO8p2>8#&Ucl##VZiShmjS+D zTmjy`FYqN?e#UtpAl@lpj3WF4f&a(25}20(P29@43gI6Cnt1QZhX7AC_XF0M9|fFc zUW3#*=CugF3(!#W%mWC|75HxRdW7ejhk#!IXkx~_0pT`4{Ax7(I)*wA&{P}DPXcZ< zZwB0C-U_%GKA}@EQ(Ay)tP=F?UkDtr{ID-Sv*=$tXq5wg+^Ph;(V7DI2`dbElT{6P zi!~MSHtQy%PJPO{1@I2*Ho#9?p91`hbqC;Qtxp5qYkdarK5H8Cf5D>1?r*F=1AM@u z=kD*UQvn~eW&wW5IvwyU))|2RYRv)sYpV?KRck)rFRX=t|86Y;{FT)J_-pW7r+#C7 z7W98--3$1i)_s6)Sh$g){@Z#0Q2G82(DXeB=<|IEu+;Z8z<}>zz#z{4>r{pBQNWOI z38+>1mH|e5%K>YAO@Qz4odr1Ew;J%BzV`su`kDbx@vQ}{^R;4Lia?IcQ|U;a`N;MBW?O8u{}`A~G1cF>)mG zOypl8CDre$et&hg`q65$rmSX5&CZ%w&5HLbtUAvDd`+zf{EfO0@V82JEA>0&8&L&+ z%MgdD$^GG7O%lz=1&iRWg>@_ZJ7+2}Q!uB^!@Bz2nAPUvvjAcKRY5QLtbtA%^4u!% z4jX^IjXxhAJLdbXjep&K{+InU3{A%}G#$&3{Hr#mdIl4*v(@H-SaM@58{HF2XJYku zb=+Wgb}$|5X^Cc|^*xD%+T7lc%#Ay+78S%_X)D4W!c9SbE)HvRip0m%zK+?@9AUE@@O3q@x3Jv?^5l7G!{0|SY8ca+547M~wY48}wx8wV3vBxkZMu|%wo zE$UDm($O7~Ns&vNWc}JyB7xoosf=pd5YJ?bB-FPL#Jc0rMEnD>9@RFc(W=cAfNFCI zsy163U5OYJ#nC$57H`G%=f;w;biCV32nypN1=Tt)HZ0t4iN@1RbZJxX$T^>_mky$1 zP$45OTb_P#3bK#lN%T-Ov1YKhHD5QBqpyH-0#muO^Oo{YRm zG7mMFj_1WOsO`FKGEoljHL<>UGB2N?Ta)=!_D2WC<^-}Z-|pCO9YjaEMHYKPFH*OdcZ{E;R4A9gv6Y z*qbVX+?9^SlypvBW>Of7C5a+fp<(x@L&ejh1t|7u0jf)SwE(I6wE&5pEx@pE3s7$F z7E3_C6`-9S9*Z8EcXz74Kk8(Jfr7usbzOX;x$P&T&_U>J={-{FG4Rv5D zx2LlWn1_(onog(E8Ro)}jYDTKcsHcFcNg{*GUQ7T2)lM~ZvksJ4k6a2=h!ht9cgx? zIeD<&7)8xmazo7^$qgao#===BjR2QMaq%1+wV58bq^GxIgOY6+Lh`YZU$$G z<5AcmCTeeL-5{2DV+|VZjwBVaNp_(kDY;UfTFIX?<~Tf{Hg^BzX>CE4VnTPa6dNc` znqIJFv6v`IT^DsTjl-wYY2zeAZDqYTPBNO8C{#X&Ki$>i6qG^d)kUY2!%xvR6)^!$ zxnmJ@1u;J5W8^^>h(`sa!oqgy*rl8DB!e)IMyEq zN9iTh+FeoP!qPUwbyz}ePsTFc(ScYFuUZS@9wEyLHP=MObTzJ$jLoqr)e`HCV!fMD z_1soChG|=@*Iv~sSoE$~x-Hq8QW|8|#bb#cB}?U)Hrkz8?l0n*&M4PK3?#S`?u%tR z?Ov7KnSwae+cLUqndXEwUKZ0DEkQ3OCudtml2Bn!ZV#ab^mZ(cnM_l1*Re{|^B|bR z-oLQ`(>>9)j3=uXpWK5DhH7ih3@5v{#WIkflJMGSBGHA8Rx)q5>1>#*?NEPos1tpf zg?;Gk!7g%_YSW4Z+I!;MzR<*Gh%B?eIZy7V4vNl)UgPClqe+*jk#_cU+ zLEb{N^i*fRvt!MVb|yHrV8^;E1PF{)+b0Ea zohifhXm{sc+3Kmhn9fk&E&AEq(Q3 z`kVtnAVUlX0QPq1a4**E;NSH0EP+dD^87vZU?Nc1{mo z$zCjxB{2{;_qIs`8P!e#hBO7;qw8ZsIhc{Ww!Umg~m~{bA;+YxMmC9KO_mX**hOTvQ)YeXeXqfOLCYc z%Et7#s2&@)G>2M>7jvQI=_K|)KzbtZo2AmsXa_n{whY&$Q~gd?Gwd{;;hZEG5g7oEuF$UThZKRSjH$)RwiW!Q99}qkA?d6T^}Kx1nA}iA}UuRP?20 zI20Mc)S8XPlNsbxn0qm2^{4j0XPO?yn9-JWEu6^W(UpuSF)-Yb;xH@jSA_3zd?#nU z4vmm$$j)>}M`;U=D z&jZKGWX~tZB6e&O?ddRkQYxx(AT;5iK>9=@0?FeJ2c(TZ7LaJGc~Q37kHHqwCt?f9 zu4cvAbU#CwZb#toMiG z6dZpH=XR3glswk-dMqjHvFI*wk0IajrqpBT^?1efOeU!bXmV%Fy*1Luz06=b&67k| z6ByFJW*9(QJDfhjaIU zc&mqZLXv&D)Rt&Z4+TK#$rLLrUyYEYf+-uZioh?QN5ld`4F9@WyH9+yMNC*XllG1dLduIXeT&fABBYq^jWgXtl~Kq>4isf4nTxcf>>xMz zZMa_ofU{IM$&b5G zNxQ?lwO-pES|^qn?(a$^6f}U|TiKN*-T~0XalB8O7&tucXK<)L zAvE!XN|J1h$M(*+--byO%+^DpV>k|h6K78x?qs!jFx#BPuo%%G4%L&pIb!?eQ@y=3TsWb@`4{hR?1|-$_Toug55sAZbAzlOKI~|pvvF5A z1j0EFxACewY9C*L1kbeeVL-M)WgGS8UpD-`_7y~Z7)6!S2Y`DhZ2K(GK7~@+eo(Vu zWA@N#sn5M)_K}wAiT7cU+P!B05|X1v z`cRa845{KhLvs4pndCrq930x9;+!IlZ&-QeicA-~wMQjsIu&fRoRdVI^TT0HMK_OA zgB}`bXm&R=U5`7Q3E;@KUsT5J#569QI=$W=!$<}9^;=@;{&*$>yN30ZjdXEtVJEFw zZWTIY9Oc2;$Uq#|I&<2i5n}GQ#S+mW31wVzc0p!CQdc|yUffg;?zPcmJI=JRAk>;K zCQ&ZIV0)JtNM(5Vf!UNnTtrNEr(`x`(d`}UQddi z6qGndC$S{R#NRtCVOS0{86A-U2e{J`O^7do=TkdsdsTN9U)K)Bm5#yV0MiA!)kqIbU-&#G+;xPk6x@~`#Cl}(-h z%%ynRE4I9AK01%)p(CXQ0*5?hg1YSM16&1=D^Ikwe*mhDoFewLo{(f}un)X72KFT{ zt}F87cKcKaA-{{UTiAiCD^cmYjqs`QxF72qFqdPq9g6|5nBi*2zGNiF2xPecg);g! z4$4U1=$N;tT;Fl7=x}(sB=VBDF1tK0B3dJp z^D3BqS{b^^R z95DG}y<>mlz)7*=&XpG#3NkUpFut8kT(}P9u=*$`7nO0&S{>4Yz~wvKd`xCtwGb&g z6eXewNl?mwQGIj79vEvAQP@*pB^6s`%z=GL&M6duGkP#d+ZRrFBSUfW!#IYC($)dK zk!&=HmP>Dm{{j^4;U~DNhYbai%O^5P9cUH#jPOh9Ckn$Xxd5s^vi0235Y}|N#x9lh;&Vo$nuGZbWf7ViiwEyOp*xRuO>@sJoIprwL3=c*xFu>`|+Ozx$)43f+3 zSOv+wWTMp)j9310Y4M6)tkT-(E#zW;4OVr#)rD$@x=3AsucV)=)~IGBi`txp^u%}_ z47*$V`*Q9k#tmTw8SBN;5?`jHZ&1pviSz!{rsyWMF^ZMuHk?pEx!}XVfru4dJ0wZ&W7-G1 zvb@MmA0|n4z>$-1Hn~J#71WhUCE)PkEh%EWaWLjxz1y;Z3)EiD+m0Q5)5jGH+|=$F zjdoaj;+~@^E-bOXTN{PjD(4ikk+@ZY?_Yv(H^o^5atq^Pw+v>mpid3(i-p)jtfRo) zRC~wi_%d+071E3M#<}cUi+!BSHNV!|zg9)zhJozxCY(CFB?o>meDDQB;1hr!K&(!6 zA(R9rt%ecXz{{|B15cgm1tz8X5gJ4~OUBf0`q$*OqOhG&(29dbQmq7y zO$bpUF?g=x(hf?XPcUp7JdB8InK7NU?*Wdj?NRl3eMWw5uFT*-L#~YQ(kFFo2PM`s z0N4$hq`;b!^28VS5c5hB)Vn87y$y8spicHC>262uaXfp$aT@JlyR`&avr|9nXrFu? zY{71PQfeaX9=Y$wXSG= zRb_)1o9ua2)`J$Xgz^uH4yej5k)IydDopP5D6-2UJqpc>sWb5&F6Gw}P<|~Xg&#)1 zRdkWMn$tQ)f5|0#%{y9D8STL!dB7VZl%F;QZ8?kjlL3AJ|EQJD81V9^HNeXs$EjML z-`lPw&~0F;A+#z6%HHvi+$O#v;QRjdZLFHpy!Ybx;)3>wlQsB%IGasYBL(ZH?7Yl|A7%8TXo zMTOnY)IkWVS1rT~G)@DRv+=qb(i;MWmH2eyMQSvGWHrBo*Gc#FV{)LpoXBo-CnI$ySRxstkvXvSI6F}9j>-9sE^dH}pR+S+8iJ=D)rtyqz^sAkoH zkGHqHJ;s5~KBM^jWd=e;@Zu3ENQqo^IPW1YrK{_+DPqjCWyDE-(AVR^%|Q$IlevoyOZ%B zo6fev25!L^*&+78Yf1jtHBL{ee;o4c7mK+W*1a2cgtH~bgq|bG=MY}-mY+tApyoN6 zq2~(MmK0jLKP_wEEGXZe(M0RN8G74>S0}zz{m)rFgjmyc=;!N%?^-pYW^7iVR=g8SqoER_Ojmn8p^3Gf*(kf?7_2y}Kw=Cne z$(^mo*H~|!iC02y&J&sY-8D=8$ZC> z)US>+;jOZuguwiuZ}D)f3m~<~x>#x;al|oaB%1w`QzxU+(O6)?xFnhC zqHt|{BJ18i)v-NxoppR#>-0yVguP=Uf6en&_5UBc{czXU+P6k8qT@*$Z#Ml?8vCvd z@%k2Z?;7vfAR{a$hdq~JM|lP8Azz-n1-716%JDtYp?w)Vg--fq@N?n?)|IQ^1=B}n zaPF47eqA-Q@IcM+_sUV(;N%YXv_=kM*MxUeV&AKepY)2F9^T_Tg;2*>wl;Ry|V|}*mrzwER^P?kAnY) zMx3*YN6Sud#5t749dSF3PjVb_$3Eb$!;dc*C39dgjPB#3uPyZ)Sl~LD7wLWEx|_P_ zdVahIgQ(*;Wi(zLjz`E#otD{n8+6)T`;OZ)?Z+p%LY>y942})g`+k)=KALaVzUtbb zz0u>Vudod~#O8GkuFTo{Xtdx!F2+x_sdEcQ0k3v(H1itC9IT7EZYCYl)^I@l6VBx*U8k|Rkj~h8kBeSIJI>Q)O*-Znb){Wm{0zrAH|ZD>W^Jxu6r2wQqB+ri&@$nv;-Ug*GNZyYyJBOxG z-y@>!(9v>yLfLOuEcsRs4v)?QrpHReq&KXNW}gz8M36dlE{xu%KG!`Qp@ zRPW;y>E83ydH15#yd&od9WODHZeT~|OLDKMGUfPQ)JB(Q3(8VO@tqCCim7X1PWDG( zw{vjvmLm-hQwPz19IVFHw}z@?da}xR%lPz4*4R3>m1BqR#O=;MdNeklIK@0ko_C`3 zJTg3CTD(n6?del*MLY9)qT3l6lWA|UQNw=I&K+lIq%8$6z;S^OQ+^y;$;rjtglhdR zGHJ9xJ>lTK2pCEh8nTeL^7`Seujwvx0t zS-^HIo4Aa(?VeIa@5FL@mp>8Zb430f`&F3JLwli@BX1e+G@aug3oNu85VHy(^bQbr ziUGR>4g&Hzs48<75X#z#S?GQET!GJJNatc+RXQ@JWVEGr7GZ@pDVDp%O1rM7V&2vF zw#wVD%)@1=p>Q$y?;bz*TggwJ`!~=1)emm_*V^k;;O{?h@%b~BzP#T*HPT>)A|2&Z zBg>4b;U+u0+6k9VjWipP4m_6W$7(!KsMUy!jF_bX-w4S2d<6W>G_y2xTA>d$-^WBx z>M6|PxL_ASX4GxHNMo{DT4KyH@Y~x)+(;XPMwgK>5=M{lK4YhGnQ?`&yTa?h4Z8l@ z+QO>6?pq)CJ!Yw8&Qd0RwK1#kTfXLEW%ep_oig#8h-qcwR}Z_CiC;iWD6>bI_(?_l zo+5tu@Cs!vQ07Wy&Q<0-WuB(YIm#-XSyHMX4f_$Ijt`Y6 z!(d+1jBEt~K0-)C$*lpT1!k52RtlV160k}mJMh_Qmev9t=?F=ck)4R3*Mw$No@Qic zl_U;Db~4Z9lE;Ybw3ISXjZqtkfn`gVkMq%Q6L6oJ$^OVtKv_sf4Nl;4CqVuK5tN6f z#4TVEnQ4J@GZeD?WD$xXsU2pJR65M6$jEg8Wde@~voK)6AyQgr7~zqd0(B-Ik%d0Q z1Eq)sbU4ItD6$X&xYR5)@fbueMg~ieFER)UCQF#UxxiWIngG-k+8nMbt5bF;hzt&L zu7fNA+1lxTLasI!<^a@IzM(SmAZEh85B zuBa76WSDHWpn}M-#zk6yD~*hdmI;gap~KoKc8J^|KHEtN*Hq=Fj9isVnqHYpYBs`E zq<9_r1Hveye6IqXK}fn5&ygF6YKbgBXqxhg5F&$4Wz2{wfoH?bfDh_aOKoB_pu1?~ zMklbJ+A=Z{3RD@!DUi#JPGEnjV5q;WDilN%HPs!w0=*Z=MnyWx1eOZ)3k1KwbKplh zf&$A0Rtl`}6OZcc=OKB51v`GT{XAkn@3fzH+t1J0Pt6ItnF`VY+NQvOz%qeBf#m`# z1y;~XV0<31pNHg$+U@ww_VbASywiT(Z9hL}KkpZ6ks(pDs@lj9hHZGgSz75U1@TgL z$jAYP59#nBs>fl5@nC<=Eb#%B5tMU8jC@fhD@2{JpTmBc5en!hDy)OxY%9`%f@VnU zfu80tJk3xQ1P;7C^HpHr&$Pn*t(G4_4GhuF>3T#pVl4|DQGfRWo41^G&8ECe78X19p!Z@kO z8DiJOP6ZeY&>C^vk~oX$Xn@fGqLgH<9@?gURO&}SKZ1DBYU5FC=AUaS2J|2wXjPDjKs)wh?6QtbuBIT8NRu&s|0~kNDu7lM<7HgI+7n5 zk-_v>mF{j28d@~+81?4ERG23Tt`_xp8pN(<^jQ=IM7_XVqaPAOnNn~Sz^sV0@W^*d zz|Y9DBzDkO4l|(5ZGcuYFf-sMLr)u!Evh`ITfW~c!z9N^Y$m0~5Qwlmh}`7E+)LX8 zU=mmaK7tYg6rh0ufTdNiJ^(?2a)Js1{;stzL@9q9BRaprJEMLd<5= z__5xx6Gge)^%Rr&Xt>Pp4+P9W(6Z1rtdFE^Ty>#SO3+Rd zqePiOhM}9ZpEFCKyCxP<0l(iDL`r1|a-oRuYl2@a!6aXZQtN>5r~sp9P#L|7P7hGy*xS$yUjQcL8mklms0Kw) z3(=ZfHq=4jp%Oo94f?IfXcX&}NJoXgG=v&JzAb#tY(G>3mWJkxNWfe-kBr#e3{gRk zA;bgo{Si}3bW)|z!bifRaT}45NdQQ^x%3M-2 zR(c$cqr*-r7LU19y?7K8MT+PXC=g&|5c8gz85zAoKSsm;(r^u;K#dX|sC5cWM}S%w zuF|`~aFs5yf2O}YJl!r5u8NHA4_8S^fc=5m3e7cVA}NV!4kbAsf?xDtwVLS<>QvAe zTOMs7^SQPoFSy{+m12-~Aymh8ZD?j>u+on%y9)nn5#d4|SwndwX4?&l%*Kep5(jcO zYinoLVxS|2QG<@bQ)WpR7YozQOw51Kl-k-;{Z(8M;~y%3oMxbSAP}Aop-=#|9KtP; z7AWyStY2$=Sf-W$ge<5DH5*HN;%M9hr38L}@-l}b7QiSgjm${L08m5%_MXl3{b z$_Oe5DlzCeAypC^1h7J=2=!njjdDEB&glXgi_VS=Lh`Haj(7;q#r|+@EoMd})#4w- z%x;p_L^fg|X}}=`v9kb1RtRij-vTxll%S508?kujq=!w8qNVx_p3ts5%qglImZ4Ts zPf?tB=ORnBLH_QQ5M-cHri0~{z&ypMM8VmTjR>fd_CN^7Zp2oF*&I(_09)8W_^A}v z=qYX$@i!A3A-I#^Zi3Gd+;5gvz>+}&$_18T4xnknY=z++xim6Z<;Sj)3XLg)7!g76~3kZB!5RQ5hZ; zb(q`a4|5~u$8VG6P~!0J%C1kN!~9flqM^ zfp!R;=eUfpIz@f%0?jtxSis3rxz=w{6+_ynkBk)L6;83NWM0_iQ*>^GislE4NJ8cA zVmRo}t&3&wp|eJ&Vjl2NkmbJ=b6j2{Bh{$L#^)FY6V0R_@!R_Ymj+eWjbQ}j3WYH9 zc#`xmC5BS@YK}Lkos3QyiZZdmpvfwl8&qfU8p8BJB0Q6C`bh0k-;j%Mq=46iRE}=oN_6vXBiO`7O*S)e>M}3M;yylX+-`FQIMUI(+fv3@cCEvU0! zqO&>~8^lX)5)10K;Ah_B-FOX*ywG`d*Yf4jW!=lpY-n1tG`4s}(^Lb#EdE+5DB%q- zcu^(D8QH&}??L~4jNv*bmj4{_Z%UYpIoKb!#?;r!Ak zV{e}X3{?f<({U*#zYgl9q8EP*p83|}bK!`gZZa9ue>a&+5jbD9VVR<&i_s;Ndwqhw> z|K-U`2I=m_A<3Y=;ClmA8sJHP9fhZSV<~-4^6+&K`rlIc=OF_H2RO<)`T0T$Ud`r7 zllvwR)>DViVhn9J@A=5%CWuUk83-}Ru(a|Zs+75+DXLLVq31+0X}NNe6D7Rzg0gLf^m)$4le>hR&>gFs2;n3+ zDS?v`I4OaX5;!S=lM*;7fs+zADS?v`I4Obu-y|?#s0y_CHhlm0P_`hY>jf?;Q diff --git a/bin/OpenMetaverse.XML b/bin/OpenMetaverse.XML index 639bc20a93..fa1057a944 100644 --- a/bin/OpenMetaverse.XML +++ b/bin/OpenMetaverse.XML @@ -1,9091 +1,9 @@ - OpenMetaverse + /home/root/libopenmetaverse/bin/OpenMetaverse - - - Represents an LSL Text object containing a string of UTF encoded characters - - - - - Base class for all Asset types - - - - A byte array containing the raw asset data - - - True if the asset it only stored on the server temporarily - - - A unique ID - - - - Construct a new Asset object - - - - - Construct a new Asset object - - A unique specific to this asset - A byte array containing the raw asset data - - - - Regenerates the AssetData byte array from the properties - of the derived class. - - - - - Decodes the AssetData, placing it in appropriate properties of the derived - class. - - True if the asset decoding succeeded, otherwise false - - - The assets unique ID - - - - The "type" of asset, Notecard, Animation, etc - - - - A string of characters represting the script contents - - - Initializes a new AssetScriptText object - - - - Initializes a new AssetScriptText object with parameters - - A unique specific to this asset - A byte array containing the raw asset data - - - - Encode a string containing the scripts contents into byte encoded AssetData - - - - - Decode a byte array containing the scripts contents into a string - - true if decoding is successful - - - Override the base classes AssetType - - - - - - - - The event subscribers, null of no subscribers - - - Raises the AttachedSound Event - A AttachedSoundEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AttachedSoundGainChange Event - A AttachedSoundGainChangeEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the SoundTrigger Event - A SoundTriggerEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the PreloadSound Event - A PreloadSoundEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - - Construct a new instance of the SoundManager class, used for playing and receiving - sound assets - - A reference to the current GridClient instance - - - - Plays a sound in the current region at full volume from avatar position - - UUID of the sound to be played - - - - Plays a sound in the current region at full volume - - UUID of the sound to be played. - position for the sound to be played at. Normally the avatar. - - - - Plays a sound in the current region - - UUID of the sound to be played. - position for the sound to be played at. Normally the avatar. - volume of the sound, from 0.0 to 1.0 - - - - Plays a sound in the specified sim - - UUID of the sound to be played. - UUID of the sound to be played. - position for the sound to be played at. Normally the avatar. - volume of the sound, from 0.0 to 1.0 - - - - Play a sound asset - - UUID of the sound to be played. - handle id for the sim to be played in. - position for the sound to be played at. Normally the avatar. - volume of the sound, from 0.0 to 1.0 - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the simulator sends us data containing - sound - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Provides data for the event - The event occurs when the simulator sends - the sound data which emits from an agents attachment - - The following code example shows the process to subscribe to the event - and a stub to handle the data passed from the simulator - - // Subscribe to the AttachedSound event - Client.Sound.AttachedSound += Sound_AttachedSound; - - // process the data raised in the event here - private void Sound_AttachedSound(object sender, AttachedSoundEventArgs e) - { - // ... Process AttachedSoundEventArgs here ... - } - - - - - - Construct a new instance of the SoundTriggerEventArgs class - - Simulator where the event originated - The sound asset id - The ID of the owner - The ID of the object - The volume level - The - - - Simulator where the event originated - - - Get the sound asset id - - - Get the ID of the owner - - - Get the ID of the Object - - - Get the volume level - - - Get the - - - Provides data for the event - The event occurs when an attached sound - changes its volume level - - - - Construct a new instance of the AttachedSoundGainChangedEventArgs class - - Simulator where the event originated - The ID of the Object - The new volume level - - - Simulator where the event originated - - - Get the ID of the Object - - - Get the volume level - - - Provides data for the event - The event occurs when the simulator forwards - a request made by yourself or another agent to play either an asset sound or a built in sound - - Requests to play sounds where the is not one of the built-in - will require sending a request to download the sound asset before it can be played - - - The following code example uses the , - and - properties to display some information on a sound request on the window. - - // subscribe to the event - Client.Sound.SoundTrigger += Sound_SoundTrigger; - - // play the pre-defined BELL_TING sound - Client.Sound.SendSoundTrigger(Sounds.BELL_TING); - - // handle the response data - private void Sound_SoundTrigger(object sender, SoundTriggerEventArgs e) - { - Console.WriteLine("{0} played the sound {1} at volume {2}", - e.OwnerID, e.SoundID, e.Gain); - } - - - - - - Construct a new instance of the SoundTriggerEventArgs class - - Simulator where the event originated - The sound asset id - The ID of the owner - The ID of the object - The ID of the objects parent - The volume level - The regionhandle - The source position - - - Simulator where the event originated - - - Get the sound asset id - - - Get the ID of the owner - - - Get the ID of the Object - - - Get the ID of the objects parent - - - Get the volume level - - - Get the regionhandle - - - Get the source position - - - Provides data for the event - The event occurs when the simulator sends - the appearance data for an avatar - - The following code example uses the and - properties to display the selected shape of an avatar on the window. - - // subscribe to the event - Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; - - // handle the data when the event is raised - void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) - { - Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") - } - - - - - - Construct a new instance of the PreloadSoundEventArgs class - - Simulator where the event originated - The sound asset id - The ID of the owner - The ID of the object - - - Simulator where the event originated - - - Get the sound asset id - - - Get the ID of the owner - - - Get the ID of the Object - - - Sort by name - - - Sort by date - - - Sort folders by name, regardless of whether items are - sorted by name or date - - - Place system folders at the top - - - - Possible destinations for DeRezObject request - - - - - - - Copy from in-world to agent inventory - - - Derez to TaskInventory - - - - - - Take Object - - - - - - Delete Object - - - Put an avatar attachment into agent inventory - - - - - - Return an object back to the owner's inventory - - - Return a deeded object back to the last owner's inventory - - - - Upper half of the Flags field for inventory items - - - - Indicates that the NextOwner permission will be set to the - most restrictive set of permissions found in the object set - (including linkset items and object inventory items) on next rez - - - Indicates that the object sale information has been - changed - - - If set, and a slam bit is set, indicates BaseMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates OwnerMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates GroupMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates EveryoneMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates NextOwnerMask will be overwritten on Rez - - - Indicates whether this object is composed of multiple - items or not - - - Indicates that the asset is only referenced by this - inventory item. If this item is deleted or updated to reference a - new assetID, the asset can be deleted - - - - Base Class for Inventory Items - - - - of item/folder - - - of parent folder - - - Name of item/folder - - - Item/Folder Owners - - - - Constructor, takes an itemID as a parameter - - The of the item - - - - - - - - - - - - - - - - Generates a number corresponding to the value of the object to support the use of a hash table, - suitable for use in hashing algorithms and data structures such as a hash table - - A Hashcode of all the combined InventoryBase fields - - - - Determine whether the specified object is equal to the current object - - InventoryBase object to compare against - true if objects are the same - - - - Determine whether the specified object is equal to the current object - - InventoryBase object to compare against - true if objects are the same - - - - An Item in Inventory - - - - The of this item - - - The combined of this item - - - The type of item from - - - The type of item from the enum - - - The of the creator of this item - - - A Description of this item - - - The s this item is set to or owned by - - - If true, item is owned by a group - - - The price this item can be purchased for - - - The type of sale from the enum - - - Combined flags from - - - Time and date this inventory item was created, stored as - UTC (Coordinated Universal Time) - - - Used to update the AssetID in requests sent to the server - - - The of the previous owner of the item - - - - Construct a new InventoryItem object - - The of the item - - - - Construct a new InventoryItem object of a specific Type - - The type of item from - of the item - - - - Indicates inventory item is a link - - True if inventory item is a link to another inventory item - - - - - - - - - - - - - - - - Generates a number corresponding to the value of the object to support the use of a hash table. - Suitable for use in hashing algorithms and data structures such as a hash table - - A Hashcode of all the combined InventoryItem fields - - - - Compares an object - - The object to compare - true if comparison object matches - - - - Determine whether the specified object is equal to the current object - - The object to compare against - true if objects are the same - - - - Determine whether the specified object is equal to the current object - - The object to compare against - true if objects are the same - - - - InventoryTexture Class representing a graphical image - - - - - - Construct an InventoryTexture object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryTexture object from a serialization stream - - - - - InventorySound Class representing a playable sound - - - - - Construct an InventorySound object - - A which becomes the - objects AssetUUID - - - - Construct an InventorySound object from a serialization stream - - - - - InventoryCallingCard Class, contains information on another avatar - - - - - Construct an InventoryCallingCard object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryCallingCard object from a serialization stream - - - - - InventoryLandmark Class, contains details on a specific location - - - - - Construct an InventoryLandmark object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryLandmark object from a serialization stream - - - - - Landmarks use the InventoryItemFlags struct and will have a flag of 1 set if they have been visited - - - - - InventoryObject Class contains details on a primitive or coalesced set of primitives - - - - - Construct an InventoryObject object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryObject object from a serialization stream - - - - - Gets or sets the upper byte of the Flags value - - - - - Gets or sets the object attachment point, the lower byte of the Flags value - - - - - InventoryNotecard Class, contains details on an encoded text document - - - - - Construct an InventoryNotecard object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryNotecard object from a serialization stream - - - - - InventoryCategory Class - - TODO: Is this even used for anything? - - - - Construct an InventoryCategory object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryCategory object from a serialization stream - - - - - InventoryLSL Class, represents a Linden Scripting Language object - - - - - Construct an InventoryLSL object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryLSL object from a serialization stream - - - - - InventorySnapshot Class, an image taken with the viewer - - - - - Construct an InventorySnapshot object - - A which becomes the - objects AssetUUID - - - - Construct an InventorySnapshot object from a serialization stream - - - - - InventoryAttachment Class, contains details on an attachable object - - - - - Construct an InventoryAttachment object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryAttachment object from a serialization stream - - - - - Get the last AttachmentPoint this object was attached to - - - - - InventoryWearable Class, details on a clothing item or body part - - - - - Construct an InventoryWearable object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryWearable object from a serialization stream - - - - - The , Skin, Shape, Skirt, Etc - - - - - InventoryAnimation Class, A bvh encoded object which animates an avatar - - - - - Construct an InventoryAnimation object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryAnimation object from a serialization stream - - - - - InventoryGesture Class, details on a series of animations, sounds, and actions - - - - - Construct an InventoryGesture object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryGesture object from a serialization stream - - - - - A folder contains s and has certain attributes specific - to itself - - - - The Preferred for a folder. - - - The Version of this folder - - - Number of child items this folder contains. - - - - Constructor - - UUID of the folder - - - - - - - - - - Get Serilization data for this InventoryFolder object - - - - - Construct an InventoryFolder object from a serialization stream - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tools for dealing with agents inventory - - - - Used for converting shadow_id to asset_id - - - The event subscribers, null of no subscribers - - - Raises the ItemReceived Event - A ItemReceivedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the FolderUpdated Event - A FolderUpdatedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the InventoryObjectOffered Event - A InventoryObjectOfferedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the TaskItemReceived Event - A TaskItemReceivedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the FindObjectByPath Event - A FindObjectByPathEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the TaskInventoryReply Event - A TaskInventoryReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the SaveAssetToInventory Event - A SaveAssetToInventoryEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ScriptRunningReply Event - A ScriptRunningReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - Partial mapping of AssetTypes to folder names - - - - Default constructor - - Reference to the GridClient object - - - - Fetch an inventory item from the dataserver - - The items - The item Owners - a integer representing the number of milliseconds to wait for results - An object on success, or null if no item was found - Items will also be sent to the event - - - - Request A single inventory item - - The items - The item Owners - - - - - Request inventory items - - Inventory items to request - Owners of the inventory items - - - - - Get contents of a folder - - The of the folder to search - The of the folders owner - true to retrieve folders - true to retrieve items - sort order to return results in - a integer representing the number of milliseconds to wait for results - A list of inventory items matching search criteria within folder - - InventoryFolder.DescendentCount will only be accurate if both folders and items are - requested - - - - Request the contents of an inventory folder - - The folder to search - The folder owners - true to return s contained in folder - true to return s containd in folder - the sort order to return items in - - - - - Returns the UUID of the folder (category) that defaults to - containing 'type'. The folder is not necessarily only for that - type - - This will return the root folder if one does not exist - - The UUID of the desired folder if found, the UUID of the RootFolder - if not found, or UUID.Zero on failure - - - - Find an object in inventory using a specific path to search - - The folder to begin the search in - The object owners - A string path to search - milliseconds to wait for a reply - Found items or if - timeout occurs or item is not found - - - - Find inventory items by path - - The folder to begin the search in - The object owners - A string path to search, folders/objects separated by a '/' - Results are sent to the event - - - - Search inventory Store object for an item or folder - - The folder to begin the search in - An array which creates a path to search - Number of levels below baseFolder to conduct searches - if True, will stop searching after first match is found - A list of inventory items found - - - - Move an inventory item or folder to a new location - - The item or folder to move - The to move item or folder to - - - - Move an inventory item or folder to a new location and change its name - - The item or folder to move - The to move item or folder to - The name to change the item or folder to - - - - Move and rename a folder - - The source folders - The destination folders - The name to change the folder to - - - - Update folder properties - - of the folder to update - Sets folder's parent to - Folder name - Folder type - - - - Move a folder - - The source folders - The destination folders - - - - Move multiple folders, the keys in the Dictionary parameter, - to a new parents, the value of that folder's key. - - A Dictionary containing the - of the source as the key, and the - of the destination as the value - - - - Move an inventory item to a new folder - - The of the source item to move - The of the destination folder - - - - Move and rename an inventory item - - The of the source item to move - The of the destination folder - The name to change the folder to - - - - Move multiple inventory items to new locations - - A Dictionary containing the - of the source item as the key, and the - of the destination folder as the value - - - - Remove descendants of a folder - - The of the folder - - - - Remove a single item from inventory - - The of the inventory item to remove - - - - Remove a folder from inventory - - The of the folder to remove - - - - Remove multiple items or folders from inventory - - A List containing the s of items to remove - A List containing the s of the folders to remove - - - - Empty the Lost and Found folder - - - - - Empty the Trash folder - - - - - - - - - - - Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. - - - - - - - - - - - - - Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. - - - - - - - - Creates a new inventory folder - - ID of the folder to put this folder in - Name of the folder to create - The UUID of the newly created folder - - - - Creates a new inventory folder - - ID of the folder to put this folder in - Name of the folder to create - Sets this folder as the default folder - for new assets of the specified type. Use AssetType.Unknown - to create a normal folder, otherwise it will likely create a - duplicate of an existing folder type - The UUID of the newly created folder - If you specify a preferred type of AsseType.Folder - it will create a new root folder which may likely cause all sorts - of strange problems - - - - Create an inventory item and upload asset data - - Asset data - Inventory item name - Inventory item description - Asset type - Inventory type - Put newly created inventory in this folder - Delegate that will receive feedback on success or failure - - - - Create an inventory item and upload asset data - - Asset data - Inventory item name - Inventory item description - Asset type - Inventory type - Put newly created inventory in this folder - Permission of the newly created item - (EveryoneMask, GroupMask, and NextOwnerMask of Permissions struct are supported) - Delegate that will receive feedback on success or failure - - - - Creates inventory link to another inventory item or folder - - Put newly created link in folder with this UUID - Inventory item or folder - Method to call upon creation of the link - - - - Creates inventory link to another inventory item - - Put newly created link in folder with this UUID - Original inventory item - Method to call upon creation of the link - - - - Creates inventory link to another inventory folder - - Put newly created link in folder with this UUID - Original inventory folder - Method to call upon creation of the link - - - - Creates inventory link to another inventory item or folder - - Put newly created link in folder with this UUID - Original item's UUID - Name - Description - Asset Type - Inventory Type - Transaction UUID - Method to call upon creation of the link - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Request a copy of an asset embedded within a notecard - - Usually UUID.Zero for copying an asset from a notecard - UUID of the notecard to request an asset from - Target folder for asset to go to in your inventory - UUID of the embedded asset - callback to run when item is copied to inventory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Save changes to notecard embedded in object contents - - Encoded notecard asset data - Notecard UUID - Object's UUID - Called upon finish of the upload with status information - - - - Upload new gesture asset for an inventory gesture item - - Encoded gesture asset - Gesture inventory UUID - Callback whick will be called when upload is complete - - - - Update an existing script in an agents Inventory - - A byte[] array containing the encoded scripts contents - the itemID of the script - if true, sets the script content to run on the mono interpreter - - - - - Update an existing script in an task Inventory - - A byte[] array containing the encoded scripts contents - the itemID of the script - UUID of the prim containting the script - if true, sets the script content to run on the mono interpreter - if true, sets the script to running - - - - - Rez an object from inventory - - Simulator to place object in - Rotation of the object when rezzed - Vector of where to place object - InventoryItem object containing item details - - - - Rez an object from inventory - - Simulator to place object in - Rotation of the object when rezzed - Vector of where to place object - InventoryItem object containing item details - UUID of group to own the object - - - - Rez an object from inventory - - Simulator to place object in - Rotation of the object when rezzed - Vector of where to place object - InventoryItem object containing item details - UUID of group to own the object - User defined queryID to correlate replies - If set to true, the CreateSelected flag - will be set on the rezzed object - - - - DeRez an object from the simulator to the agents Objects folder in the agents Inventory - - The simulator Local ID of the object - If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed - - - - DeRez an object from the simulator and return to inventory - - The simulator Local ID of the object - The type of destination from the enum - The destination inventory folders -or- - if DeRezzing object to a tasks Inventory, the Tasks - The transaction ID for this request which - can be used to correlate this request with other packets - If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed - - - - Rez an item from inventory to its previous simulator location - - - - - - - - - Give an inventory item to another avatar - - The of the item to give - The name of the item - The type of the item from the enum - The of the recipient - true to generate a beameffect during transfer - - - - Give an inventory Folder with contents to another avatar - - The of the Folder to give - The name of the folder - The type of the item from the enum - The of the recipient - true to generate a beameffect during transfer - - - - Copy or move an from agent inventory to a task (primitive) inventory - - The target object - The item to copy or move from inventory - - For items with copy permissions a copy of the item is placed in the tasks inventory, - for no-copy items the object is moved to the tasks inventory - - - - Retrieve a listing of the items contained in a task (Primitive) - - The tasks - The tasks simulator local ID - milliseconds to wait for reply from simulator - A list containing the inventory items inside the task or null - if a timeout occurs - This request blocks until the response from the simulator arrives - or timeoutMS is exceeded - - - - Request the contents of a tasks (primitives) inventory from the - current simulator - - The LocalID of the object - - - - - Request the contents of a tasks (primitives) inventory - - The simulator Local ID of the object - A reference to the simulator object that contains the object - - - - - Move an item from a tasks (Primitive) inventory to the specified folder in the avatars inventory - - LocalID of the object in the simulator - UUID of the task item to move - The ID of the destination folder in this agents inventory - Simulator Object - Raises the event - - - - Remove an item from an objects (Prim) Inventory - - LocalID of the object in the simulator - UUID of the task item to remove - Simulator Object - You can confirm the removal by comparing the tasks inventory serial before and after the - request with the request combined with - the event - - - - Copy an InventoryScript item from the Agents Inventory into a primitives task inventory - - An unsigned integer representing a primitive being simulated - An which represents a script object from the agents inventory - true to set the scripts running state to enabled - A Unique Transaction ID - - The following example shows the basic steps necessary to copy a script from the agents inventory into a tasks inventory - and assumes the script exists in the agents inventory. - - uint primID = 95899503; // Fake prim ID - UUID scriptID = UUID.Parse("92a7fe8a-e949-dd39-a8d8-1681d8673232"); // Fake Script UUID in Inventory - - Client.Inventory.FolderContents(Client.Inventory.FindFolderForType(AssetType.LSLText), Client.Self.AgentID, - false, true, InventorySortOrder.ByName, 10000); - - Client.Inventory.RezScript(primID, (InventoryItem)Client.Inventory.Store[scriptID]); - - - - - - Request the running status of a script contained in a task (primitive) inventory - - The ID of the primitive containing the script - The ID of the script - The event can be used to obtain the results of the - request - - - - - Send a request to set the running state of a script contained in a task (primitive) inventory - - The ID of the primitive containing the script - The ID of the script - true to set the script running, false to stop a running script - To verify the change you can use the method combined - with the event - - - - Create a CRC from an InventoryItem - - The source InventoryItem - A uint representing the source InventoryItem as a CRC - - - - Reverses a cheesy XORing with a fixed UUID to convert a shadow_id to an asset_id - - Obfuscated shadow_id value - Deobfuscated asset_id value - - - - Does a cheesy XORing with a fixed UUID to convert an asset_id to a shadow_id - - asset_id value to obfuscate - Obfuscated shadow_id value - - - - Wrapper for creating a new object - - The type of item from the enum - The of the newly created object - An object with the type and id passed - - - - Parse the results of a RequestTaskInventory() response - - A string which contains the data from the task reply - A List containing the items contained within the tasks inventory - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - UpdateCreateInventoryItem packets are received when a new inventory item - is created. This may occur when an object that's rezzed in world is - taken into inventory, when an item is created using the CreateInventoryItem - packet, or when an object is purchased - - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - an inventory object sent by another avatar or primitive - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - - Get this agents Inventory data - - - - - Callback for inventory item creation finishing - - Whether the request to create an inventory - item succeeded or not - Inventory item being created. If success is - false this will be null - - - - Callback for an inventory item being create from an uploaded asset - - true if inventory item creation was successful - - - - - - - - - - - - - Reply received when uploading an inventory asset - - Has upload been successful - Error message if upload failed - Inventory asset UUID - New asset UUID - - - - Delegate that is invoked when script upload is completed - - Has upload succeded (note, there still might be compile errors) - Upload status message - Is compilation successful - If compilation failed, list of error messages, null on compilation success - Script inventory UUID - Script's new asset UUID - - - Set to true to accept offer, false to decline it - - - The folder to accept the inventory into, if null default folder for will be used - - - - Callback when an inventory object is accepted and received from a - task inventory. This is the callback in which you actually get - the ItemID, as in ObjectOfferedCallback it is null when received - from a task. - - - - - Throttles the network traffic for various different traffic types. - Access this class through GridClient.Throttle - - - - - Default constructor, uses a default high total of 1500 KBps (1536000) - - - - - Constructor that decodes an existing AgentThrottle packet in to - individual values - - Reference to the throttle data in an AgentThrottle - packet - Offset position to start reading at in the - throttle data - This is generally not needed in clients as the server will - never send a throttle packet to the client - - - - Send an AgentThrottle packet to the current server using the - current values - - - - - Send an AgentThrottle packet to the specified server using the - current values - - - - - Convert the current throttle values to a byte array that can be put - in an AgentThrottle packet - - Byte array containing all the throttle values - - - Maximum bits per second for resending unacknowledged packets - - - Maximum bits per second for LayerData terrain - - - Maximum bits per second for LayerData wind data - - - Maximum bits per second for LayerData clouds - - - Unknown, includes object data - - - Maximum bits per second for textures - - - Maximum bits per second for downloaded assets - - - Maximum bits per second the entire connection, divided up - between invidiual streams using default multipliers - - - - Level of Detail mesh - - - - - Sent to the client to indicate a teleport request has completed - - - - - Interface requirements for Messaging system - - - - The of the agent - - - - - - The simulators handle the agent teleported to - - - A Uri which contains a list of Capabilities the simulator supports - - - Indicates the level of access required - to access the simulator, or the content rating, or the simulators - map status - - - The IP Address of the simulator - - - The UDP Port the simulator will listen for UDP traffic on - - - Status flags indicating the state of the Agent upon arrival, Flying, etc. - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Sent to the viewer when a neighboring simulator is requesting the agent make a connection to it. - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent to the client which indicates a teleport request has failed - and contains some information on why it failed - - - - - - - A string key of the reason the teleport failed e.g. CouldntTPCloser - Which could be used to look up a value in a dictionary or enum - - - The of the Agent - - - A string human readable message containing the reason - An example: Could not teleport closer to destination - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Contains a list of prim owner information for a specific parcel in a simulator - - - A Simulator will always return at least 1 entry - If agent does not have proper permission the OwnerID will be UUID.Zero - If agent does not have proper permission OR there are no primitives on parcel - the DataBlocksExtended map will not be sent from the simulator - - - - An Array of objects - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Prim ownership information for a specified owner on a single parcel - - - - The of the prim owner, - UUID.Zero if agent has no permission to view prim owner information - - - The total number of prims - - - True if the OwnerID is a - - - True if the owner is online - This is no longer used by the LL Simulators - - - The date the most recent prim was rezzed - - - - The details of a single parcel in a region, also contains some regionwide globals - - - - Simulator-local ID of this parcel - - - Maximum corner of the axis-aligned bounding box for this - parcel - - - Minimum corner of the axis-aligned bounding box for this - parcel - - - Total parcel land area - - - - - - Key of authorized buyer - - - Bitmap describing land layout in 4x4m squares across the - entire region - - - - - - Date land was claimed - - - Appears to always be zero - - - Parcel Description - - - - - - - - - Total number of primitives owned by the parcel group on - this parcel - - - Whether the land is deeded to a group or not - - - - - - Maximum number of primitives this parcel supports - - - The Asset UUID of the Texture which when applied to a - primitive will display the media - - - A URL which points to any Quicktime supported media type - - - A byte, if 0x1 viewer should auto scale media to fit object - - - URL For Music Stream - - - Parcel Name - - - Autoreturn value in minutes for others' objects - - - - - - Total number of other primitives on this parcel - - - UUID of the owner of this parcel - - - Total number of primitives owned by the parcel owner on - this parcel - - - - - - How long is pass valid for - - - Price for a temporary pass - - - - - - - - - - - - - - - True if the region denies access to age unverified users - - - - - - This field is no longer used - - - The result of a request for parcel properties - - - Sale price of the parcel, only useful if ForSale is set - The SalePrice will remain the same after an ownership - transfer (sale), so it can be used to see the purchase price after - a sale if the new owner has not changed it - - - - Number of primitives your avatar is currently - selecting and sitting on in this parcel - - - - - - - - A number which increments by 1, starting at 0 for each ParcelProperties request. - Can be overriden by specifying the sequenceID with the ParcelPropertiesRequest being sent. - a Negative number indicates the action in has occurred. - - - - Maximum primitives across the entire simulator - - - Total primitives across the entire simulator - - - - - - Key of parcel snapshot - - - Parcel ownership status - - - Total number of primitives on this parcel - - - - - - - - - A description of the media - - - An Integer which represents the height of the media - - - An integer which represents the width of the media - - - A boolean, if true the viewer should loop the media - - - A string which contains the mime type of the media - - - true to obscure (hide) media url - - - true to obscure (hide) music url - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - A message sent from the viewer to the simulator to updated a specific parcels settings - - - The of the agent authorized to purchase this - parcel of land or a NULL if the sale is authorized to anyone - - - true to enable auto scaling of the parcel media - - - The category of this parcel used when search is enabled to restrict - search results - - - A string containing the description to set - - - The of the which allows for additional - powers and restrictions. - - - The which specifies how avatars which teleport - to this parcel are handled - - - The LocalID of the parcel to update settings on - - - A string containing the description of the media which can be played - to visitors - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - Base class used for the RemoteParcelRequest message - - - - A message sent from the viewer to the simulator to request information - on a remote parcel - - - - Local sim position of the parcel we are looking up - - - Region handle of the parcel we are looking up - - - Region of the parcel we are looking up - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the simulator to the viewer in response to a - which will contain parcel information - - - - The grid-wide unique parcel ID - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message containing a request for a remote parcel from a viewer, or a response - from the simulator to that request - - - - The request or response details block - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the simulator to an agent which contains - the groups the agent is in - - - - The Agent receiving the message - - - An array containing information - for each the agent is a member of - - - An array containing information - for each the agent is a member of - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - Group Details specific to the agent - - - true of the agent accepts group notices - - - The agents tier contribution to the group - - - The Groups - - - The of the groups insignia - - - The name of the group - - - The aggregate permissions the agent has in the group for all roles the agent - is assigned - - - An optional block containing additional agent specific information - - - true of the agent allows this group to be - listed in their profile - - - - A message sent from the viewer to the simulator which - specifies the language and permissions for others to detect - the language specified - - - - A string containng the default language - to use for the agent - - - true of others are allowed to - know the language setting - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - An EventQueue message sent from the simulator to an agent when the agent - leaves a group - - - - - An Array containing the AgentID and GroupID - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - An object containing the Agents UUID, and the Groups UUID - - - The ID of the Agent leaving the group - - - The GroupID the Agent is leaving - - - Base class for Asset uploads/results via Capabilities - - - - The request state - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the viewer to the simulator to request a temporary upload capability - which allows an asset to be uploaded - - - - The Capability URL sent by the simulator to upload the baked texture to - - - - A message sent from the simulator that will inform the agent the upload is complete, - and the UUID of the uploaded asset - - - - The uploaded texture asset ID - - - - A message sent from the viewer to the simulator to request a temporary - capability URI which is used to upload an agents baked appearance textures - - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the simulator which indicates the minimum version required for - using voice chat - - - - Major Version Required - - - Minor version required - - - The name of the region sending the version requrements - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the simulator to the viewer containing the - voice server URI - - - - The Parcel ID which the voice server URI applies - - - The name of the region - - - A uri containing the server/channel information - which the viewer can utilize to participate in voice conversations - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - - - - - - - - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent by the viewer to the simulator to request a temporary - capability for a script contained with in a Tasks inventory to be updated - - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the simulator to the viewer to indicate - a Tasks scripts status. - - - - The Asset ID of the script - - - True of the script is compiled/ran using the mono interpreter, false indicates it - uses the older less efficient lsl2 interprter - - - The Task containing the scripts - - - true of the script is in a running state - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message containing the request/response used for updating a gesture - contained with an agents inventory - - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message request/response which is used to update a notecard contained within - a tasks inventory - - - - The of the Task containing the notecard asset to update - - - The notecard assets contained in the tasks inventory - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A reusable class containing a message sent from the viewer to the simulator to request a temporary uploader capability - which is used to update an asset in an agents inventory - - - - - The Notecard AssetID to replace - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message containing the request/response used for updating a notecard - contained with an agents inventory - - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the simulator to the viewer which indicates - an error occurred while attempting to update a script in an agents or tasks - inventory - - - - true of the script was successfully compiled by the simulator - - - A string containing the error which occured while trying - to update the script - - - A new AssetID assigned to the script - - - - A message sent from the viewer to the simulator - requesting the update of an existing script contained - within a tasks inventory - - - - if true, set the script mode to running - - - The scripts InventoryItem ItemID to update - - - A lowercase string containing either "mono" or "lsl2" which - specifies the script is compiled and ran on the mono runtime, or the older - lsl runtime - - - The tasks which contains the script to update - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message containing either the request or response used in updating a script inside - a tasks inventory - - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Response from the simulator to notify the viewer the upload is completed, and - the UUID of the script asset and its compiled status - - - - The uploaded texture asset ID - - - true of the script was compiled successfully - - - - A message sent from a viewer to the simulator requesting a temporary uploader capability - used to update a script contained in an agents inventory - - - - The existing asset if of the script in the agents inventory to replace - - - The language of the script - Defaults to lsl version 2, "mono" might be another possible option - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message containing either the request or response used in updating a script inside - an agents inventory - - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - Base class for Map Layers via Capabilities - - - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Sent by an agent to the capabilities server to request map layers - - - - - A message sent from the simulator to the viewer which contains an array of map images and their grid coordinates - - - - An array containing LayerData items - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - An object containing map location details - - - - The Asset ID of the regions tile overlay - - - The grid location of the southern border of the map tile - - - The grid location of the western border of the map tile - - - The grid location of the eastern border of the map tile - - - The grid location of the northern border of the map tile - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - New as of 1.23 RC1, no details yet. - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - A string containing the method used - - - - A request sent from an agent to the Simulator to begin a new conference. - Contains a list of Agents which will be included in the conference - - - - An array containing the of the agents invited to this conference - - - The conferences Session ID - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A moderation request sent from a conference moderator - Contains an agent and an optional action to take - - - - The Session ID - - - - - - A list containing Key/Value pairs, known valid values: - key: text value: true/false - allow/disallow specified agents ability to use text in session - key: voice value: true/false - allow/disallow specified agents ability to use voice in session - - "text" or "voice" - - - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the agent to the simulator which tells the - simulator we've accepted a conference invitation - - - - The conference SessionID - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - Key of sender - - - Name of sender - - - Key of destination avatar - - - ID of originating estate - - - Key of originating region - - - Coordinates in originating region - - - Instant message type - - - Group IM session toggle - - - Key of IM session, for Group Messages, the groups UUID - - - Timestamp of the instant message - - - Instant message text - - - Whether this message is held for offline avatars - - - Context specific packed data - - - Is this invitation for voice group/conference chat - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Sent from the simulator to the viewer. - - When an agent initially joins a session the AgentUpdatesBlock object will contain a list of session members including - a boolean indicating they can use voice chat in this session, a boolean indicating they are allowed to moderate - this session, and lastly a string which indicates another agent is entering the session with the Transition set to "ENTER" - - During the session lifetime updates on individuals are sent. During the update the booleans sent during the initial join are - excluded with the exception of the Transition field. This indicates a new user entering or exiting the session with - the string "ENTER" or "LEAVE" respectively. - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - An EventQueue message sent when the agent is forcibly removed from a chatterbox session - - - - - A string containing the reason the agent was removed - - - - - The ChatterBoxSession's SessionID - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the viewer to the simulator which - specifies that the user has changed current URL - of the specific media on a prim face - - - - - New URL - - - - - Prim UUID where navigation occured - - - - - Face index - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - Base class used for the ObjectMedia message - - - - Message used to retrive prim media data - - - - - Prim UUID - - - - - Requested operation, either GET or UPDATE - - - - - Serialize object - - Serialized object as OSDMap - - - - Deserialize the message - - An containing the data - - - - Message used to update prim media data - - - - - Prim UUID - - - - - Array of media entries indexed by face number - - - - - Media version string - - - - - Serialize object - - Serialized object as OSDMap - - - - Deserialize the message - - An containing the data - - - - Message used to update prim media data - - - - - Prim UUID - - - - - Array of media entries indexed by face number - - - - - Requested operation, either GET or UPDATE - - - - - Serialize object - - Serialized object as OSDMap - - - - Deserialize the message - - An containing the data - - - - Message for setting or getting per face MediaEntry - - - - The request or response details block - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - Details about object resource usage - - - Object UUID - - - Object name - - - Indicates if object is group owned - - - Locatio of the object - - - Object owner - - - Resource usage, keys are resource names, values are resource usage for that specific resource - - - - Deserializes object from OSD - - An containing the data - - - - Makes an instance based on deserialized data - - serialized data - Instance containg deserialized data - - - Details about parcel resource usage - - - Parcel UUID - - - Parcel local ID - - - Parcel name - - - Indicates if parcel is group owned - - - Parcel owner - - - Array of containing per object resource usage - - - - Deserializes object from OSD - - An containing the data - - - - Makes an instance based on deserialized data - - serialized data - Instance containg deserialized data - - - Resource usage base class, both agent and parcel resource - usage contains summary information - - - Summary of available resources, keys are resource names, - values are resource usage for that specific resource - - - Summary resource usage, keys are resource names, - values are resource usage for that specific resource - - - - Serializes object - - serialized data - - - - Deserializes object from OSD - - An containing the data - - - Agent resource usage - - - Per attachment point object resource usage - - - - Deserializes object from OSD - - An containing the data - - - - Makes an instance based on deserialized data - - serialized data - Instance containg deserialized data - - - - Detects which class handles deserialization of this message - - An containing the data - Object capable of decoding this message - - - Request message for parcel resource usage - - - UUID of the parel to request resource usage info - - - - Serializes object - - serialized data - - - - Deserializes object from OSD - - An containing the data - - - Response message for parcel resource usage - - - URL where parcel resource usage details can be retrieved - - - URL where parcel resource usage summary can be retrieved - - - - Serializes object - - serialized data - - - - Deserializes object from OSD - - An containing the data - - - - Detects which class handles deserialization of this message - - An containing the data - Object capable of decoding this message - - - Parcel resource usage - - - Array of containing per percal resource usage - - - - Deserializes object from OSD - - An containing the data - - - - Abstract base for rendering plugins - - - - - Generates a basic mesh structure from a primitive - - Primitive to generate the mesh from - Level of detail to generate the mesh at - The generated mesh - - - - Generates a basic mesh structure from a sculpted primitive and - texture - - Sculpted primitive to generate the mesh from - Sculpt texture - Level of detail to generate the mesh at - The generated mesh - - - - Generates a series of faces, each face containing a mesh and - metadata - - Primitive to generate the mesh from - Level of detail to generate the mesh at - The generated mesh - - - - Generates a series of faces for a sculpted prim, each face - containing a mesh and metadata - - Sculpted primitive to generate the mesh from - Sculpt texture - Level of detail to generate the mesh at - The generated mesh - - - - Apply texture coordinate modifications from a - to a list of vertices - - Vertex list to modify texture coordinates for - Center-point of the face - Face texture parameters - - - - Capability to load TGAs to Bitmap - - - - - Represents a Wearable Asset, Clothing, Hair, Skin, Etc - - - - A string containing the name of the asset - - - A string containing a short description of the asset - - - The Assets WearableType - - - The For-Sale status of the object - - - An Integer representing the purchase price of the asset - - - The of the assets creator - - - The of the assets current owner - - - The of the assets prior owner - - - The of the Group this asset is set to - - - True if the asset is owned by a - - - The Permissions mask of the asset - - - A Dictionary containing Key/Value pairs of the objects parameters - - - A Dictionary containing Key/Value pairs where the Key is the textures Index and the Value is the Textures - - - Initializes a new instance of an AssetWearable object - - - Initializes a new instance of an AssetWearable object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - - Decode an assets byte encoded data to a string - - true if the asset data was decoded successfully - - - - Encode the assets string represantion into a format consumable by the asset server - - - - - The InternalDictionary class is used through the library for storing key/value pairs. - It is intended to be a replacement for the generic Dictionary class and should - be used in its place. It contains several methods for allowing access to the data from - outside the library that are read only and thread safe. - - - Key - Value - - - Internal dictionary that this class wraps around. Do not - modify or enumerate the contents of this dictionary without locking - on this member - - - - Initializes a new instance of the Class - with the specified key/value, has the default initial capacity. - - - - // initialize a new InternalDictionary named testDict with a string as the key and an int as the value. - public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(); - - - - - - Initializes a new instance of the Class - with the specified key/value, has its initial valies copied from the specified - - - - to copy initial values from - - - // initialize a new InternalDictionary named testAvName with a UUID as the key and an string as the value. - // populates with copied values from example KeyNameCache Dictionary. - - // create source dictionary - Dictionary<UUID, string> KeyNameCache = new Dictionary<UUID, string>(); - KeyNameCache.Add("8300f94a-7970-7810-cf2c-fc9aa6cdda24", "Jack Avatar"); - KeyNameCache.Add("27ba1e40-13f7-0708-3e98-5819d780bd62", "Jill Avatar"); - - // Initialize new dictionary. - public InternalDictionary<UUID, string> testAvName = new InternalDictionary<UUID, string>(KeyNameCache); - - - - - - Initializes a new instance of the Class - with the specified key/value, With its initial capacity specified. - - Initial size of dictionary - - - // initialize a new InternalDictionary named testDict with a string as the key and an int as the value, - // initially allocated room for 10 entries. - public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(10); - - - - - - Try to get entry from with specified key - - Key to use for lookup - Value returned - if specified key exists, if not found - - - // find your avatar using the Simulator.ObjectsAvatars InternalDictionary: - Avatar av; - if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) - Console.WriteLine("Found Avatar {0}", av.Name); - - - - - - - Finds the specified match. - - The match. - Matched value - - - // use a delegate to find a prim in the ObjectsPrimitives InternalDictionary - // with the ID 95683496 - uint findID = 95683496; - Primitive findPrim = sim.ObjectsPrimitives.Find( - delegate(Primitive prim) { return prim.ID == findID; }); - - - - - Find All items in an - return matching items. - a containing found items. - - Find All prims within 20 meters and store them in a List - - int radius = 20; - List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( - delegate(Primitive prim) { - Vector3 pos = prim.Position; - return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); - } - ); - - - - - Find All items in an - return matching keys. - a containing found keys. - - Find All keys which also exist in another dictionary - - List<UUID> matches = myDict.FindAll( - delegate(UUID id) { - return myOtherDict.ContainsKey(id); - } - ); - - - - - Perform an on each entry in an - to perform - - - // Iterates over the ObjectsPrimitives InternalDictionary and prints out some information. - Client.Network.CurrentSim.ObjectsPrimitives.ForEach( - delegate(Primitive prim) - { - if (prim.Text != null) - { - Console.WriteLine("NAME={0} ID = {1} TEXT = '{2}'", - prim.PropertiesFamily.Name, prim.ID, prim.Text); - } - }); - - - - - Perform an on each key of an - to perform - - - - Perform an on each KeyValuePair of an - - to perform - - - Check if Key exists in Dictionary - Key to check for - if found, otherwise - - - Check if Value exists in Dictionary - Value to check for - if found, otherwise - - - - Adds the specified key to the dictionary, dictionary locking is not performed, - - - The key - The value - - - - Removes the specified key, dictionary locking is not performed - - The key. - if successful, otherwise - - - - Gets the number of Key/Value pairs contained in the - - - - - Indexer for the dictionary - - The key - The value - - - - Temporary code to produce a tar archive in tar v7 format - - - - - Binary writer for the underlying stream - - - - - Write a directory entry to the tar archive. We can only handle one path level right now! - - - - - - Write a file to the tar archive - - - - - - - Write a file to the tar archive - - - - - - - Finish writing the raw tar archive data to a stream. The stream will be closed on completion. - - - - - Write a particular entry - - - - - - - - Temporary code to do the bare minimum required to read a tar archive for our purposes - - - - - Binary reader for the underlying stream - - - - - Used to trim off null chars - - - - - Used to trim off space chars - - - - - Generate a tar reader which reads from the given stream. - - - - - - Read the next entry in the tar file. - - - - the data for the entry. Returns null if there are no more entries - - - - Read the next 512 byte chunk of data as a tar header. - - A tar header struct. null if we have reached the end of the archive. - - - - Read data following a header - - - - - - - Convert octal bytes to a decimal representation - - - - - - - - - The current status of a texture request as it moves through the pipeline or final result of a texture request. - - - - The initial state given to a request. Requests in this state - are waiting for an available slot in the pipeline - - - A request that has been added to the pipeline and the request packet - has been sent to the simulator - - - A request that has received one or more packets back from the simulator - - - A request that has received all packets back from the simulator - - - A request that has taken longer than - to download OR the initial packet containing the packet information was never received - - - The texture request was aborted by request of the agent - - - The simulator replied to the request that it was not able to find the requested texture - - - - A callback fired to indicate the status or final state of the requested texture. For progressive - downloads this will fire each time new asset data is returned from the simulator. - - The indicating either Progress for textures not fully downloaded, - or the final result of the request after it has been processed through the TexturePipeline - The object containing the Assets ID, raw data - and other information. For progressive rendering the will contain - the data from the beginning of the file. For failed, aborted and timed out requests it will contain - an empty byte array. - - - - Texture request download handler, allows a configurable number of download slots which manage multiple - concurrent texture downloads from the - - This class makes full use of the internal - system for full texture downloads. - - - A dictionary containing all pending and in-process transfer requests where the Key is both the RequestID - and also the Asset Texture ID, and the value is an object containing the current state of the request and also - the asset data as it is being re-assembled - - - Holds the reference to the client object - - - Maximum concurrent texture requests allowed at a time - - - An array of objects used to manage worker request threads - - - An array of worker slots which shows the availablity status of the slot - - - The primary thread which manages the requests. - - - true if the TexturePipeline is currently running - - - A synchronization object used by the primary thread - - - A refresh timer used to increase the priority of stalled requests - - - - Default constructor, Instantiates a new copy of the TexturePipeline class - - Reference to the instantiated object - - - - Initialize callbacks required for the TexturePipeline to operate - - - - - Shutdown the TexturePipeline and cleanup any callbacks or transfers - - - - - Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - A float indicating the requested priority for the transfer. Higher priority values tell the simulator - to prioritize the request before lower valued requests. An image already being transferred using the can have - its priority changed by resending the request with the new priority value - Number of quality layers to discard. - This controls the end marker of the data sent - The packet number to begin the request at. A value of 0 begins the request - from the start of the asset texture - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - If true, the callback will be fired for each chunk of the downloaded image. - The callback asset parameter will contain all previously received chunks of the texture asset starting - from the beginning of the request - - - - Sends the actual request packet to the simulator - - The image to download - Type of the image to download, either a baked - avatar texture or a normal texture - Priority level of the download. Default is - 1,013,000.0f - Number of quality layers to discard. - This controls the end marker of the data sent - Packet number to start the download at. - This controls the start marker of the data sent - Sending a priority of 0 and a discardlevel of -1 aborts - download - - - - Cancel a pending or in process texture request - - The texture assets unique ID - - - - Master Download Thread, Queues up downloads in the threadpool - - - - - The worker thread that sends the request and handles timeouts - - A object containing the request details - - - - Handle responses from the simulator that tell us a texture we have requested is unable to be located - or no longer exists. This will remove the request from the pipeline and free up a slot if one is in use - - The sender - The EventArgs object containing the packet data - - - - Handles the remaining Image data that did not fit in the initial ImageData packet - - The sender - The EventArgs object containing the packet data - - - - Handle the initial ImageDataPacket sent from the simulator - - The sender - The EventArgs object containing the packet data - - - Current number of pending and in-process transfers - - - - A request task containing information and status of a request as it is processed through the - - - - The current which identifies the current status of the request - - - The Unique Request ID, This is also the Asset ID of the texture being requested - - - The slot this request is occupying in the threadpoolSlots array - - - The ImageType of the request. - - - The callback to fire when the request is complete, will include - the and the - object containing the result data - - - If true, indicates the callback will be fired whenever new data is returned from the simulator. - This is used to progressively render textures as portions of the texture are received. - - - An object that maintains the data of an request thats in-process. - - - X position of this patch - - - Y position of this patch - - - A 16x16 array of floats holding decompressed layer data - - - - Creates a LayerData packet for compressed land data given a full - simulator heightmap and an array of indices of patches to compress - - A 256 * 256 array of floating point values - specifying the height at each meter in the simulator - Array of indexes in the 16x16 grid of patches - for this simulator. For example if 1 and 17 are specified, patches - x=1,y=0 and x=1,y=1 are sent - - - - - Add a patch of terrain to a BitPacker - - BitPacker to write the patch to - Heightmap of the simulator, must be a 256 * - 256 float array - X offset of the patch to create, valid values are - from 0 to 15 - Y offset of the patch to create, valid values are - from 0 to 15 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Initialize the UDP packet handler in server mode - - Port to listening for incoming UDP packets on - - - - Initialize the UDP packet handler in client mode - - Remote UDP server to connect to - - - - - - - - - - - - - - - - - - - Type of return to use when returning objects from a parcel - - - - - - - Return objects owned by parcel owner - - - Return objects set to group - - - Return objects not owned by parcel owner or set to group - - - Return a specific list of objects on parcel - - - Return objects that are marked for-sale - - - - Blacklist/Whitelist flags used in parcels Access List - - - - Agent is denied access - - - Agent is granted access - - - - The result of a request for parcel properties - - - - No matches were found for the request - - - Request matched a single parcel - - - Request matched multiple parcels - - - - Flags used in the ParcelAccessListRequest packet to specify whether - we want the access list (whitelist), ban list (blacklist), or both - - - - Request the access list - - - Request the ban list - - - Request both White and Black lists - - - - Sequence ID in ParcelPropertiesReply packets (sent when avatar - tries to cross a parcel border) - - - - Parcel is currently selected - - - Parcel restricted to a group the avatar is not a - member of - - - Avatar is banned from the parcel - - - Parcel is restricted to an access list that the - avatar is not on - - - Response to hovering over a parcel - - - - The tool to use when modifying terrain levels - - - - Level the terrain - - - Raise the terrain - - - Lower the terrain - - - Smooth the terrain - - - Add random noise to the terrain - - - Revert terrain to simulator default - - - - The tool size to use when changing terrain levels - - - - Small - - - Medium - - - Large - - - - Reasons agent is denied access to a parcel on the simulator - - - - Agent is not denied, access is granted - - - Agent is not a member of the group set for the parcel, or which owns the parcel - - - Agent is not on the parcels specific allow list - - - Agent is on the parcels ban list - - - Unknown - - - Agent is not age verified and parcel settings deny access to non age verified avatars - - - - Parcel overlay type. This is used primarily for highlighting and - coloring which is why it is a single integer instead of a set of - flags - - These values seem to be poorly thought out. The first three - bits represent a single value, not flags. For example Auction (0x05) is - not a combination of OwnedByOther (0x01) and ForSale(0x04). However, - the BorderWest and BorderSouth values are bit flags that get attached - to the value stored in the first three bits. Bits four, five, and six - are unused - - - Public land - - - Land is owned by another avatar - - - Land is owned by a group - - - Land is owned by the current avatar - - - Land is for sale - - - Land is being auctioned - - - To the west of this area is a parcel border - - - To the south of this area is a parcel border - - - - Various parcel properties - - - - No flags set - - - Allow avatars to fly (a client-side only restriction) - - - Allow foreign scripts to run - - - This parcel is for sale - - - Allow avatars to create a landmark on this parcel - - - Allows all avatars to edit the terrain on this parcel - - - Avatars have health and can take damage on this parcel. - If set, avatars can be killed and sent home here - - - Foreign avatars can create objects here - - - All objects on this parcel can be purchased - - - Access is restricted to a group - - - Access is restricted to a whitelist - - - Ban blacklist is enabled - - - Unknown - - - List this parcel in the search directory - - - Allow personally owned parcels to be deeded to group - - - If Deeded, owner contributes required tier to group parcel is deeded to - - - Restrict sounds originating on this parcel to the - parcel boundaries - - - Objects on this parcel are sold when the land is - purchsaed - - - Allow this parcel to be published on the web - - - The information for this parcel is mature content - - - The media URL is an HTML page - - - The media URL is a raw HTML string - - - Restrict foreign object pushes - - - Ban all non identified/transacted avatars - - - Allow group-owned scripts to run - - - Allow object creation by group members or group - objects - - - Allow all objects to enter this parcel - - - Only allow group and owner objects to enter this parcel - - - Voice Enabled on this parcel - - - Use Estate Voice channel for Voice on this parcel - - - Deny Age Unverified Users - - - - Parcel ownership status - - - - Placeholder - - - Parcel is leased (owned) by an avatar or group - - - Parcel is in process of being leased (purchased) by an avatar or group - - - Parcel has been abandoned back to Governor Linden - - - - Category parcel is listed in under search - - - - No assigned category - - - Linden Infohub or public area - - - Adult themed area - - - Arts and Culture - - - Business - - - Educational - - - Gaming - - - Hangout or Club - - - Newcomer friendly - - - Parks and Nature - - - Residential - - - Shopping - - - Not Used? - - - Other - - - Not an actual category, only used for queries - - - - Type of teleport landing for a parcel - - - - Unset, simulator default - - - Specific landing point set for this parcel - - - No landing point set, direct teleports enabled for - this parcel - - - - Parcel Media Command used in ParcelMediaCommandMessage - - - - Stop the media stream and go back to the first frame - - - Pause the media stream (stop playing but stay on current frame) - - - Start the current media stream playing and stop when the end is reached - - - Start the current media stream playing, - loop to the beginning when the end is reached and continue to play - - - Specifies the texture to replace with video - If passing the key of a texture, it must be explicitly typecast as a key, - not just passed within double quotes. - - - Specifies the movie URL (254 characters max) - - - Specifies the time index at which to begin playing - - - Specifies a single agent to apply the media command to - - - Unloads the stream. While the stop command sets the texture to the first frame of the movie, - unload resets it to the real texture that the movie was replacing. - - - Turn on/off the auto align feature, similar to the auto align checkbox in the parcel media properties - (NOT to be confused with the "align" function in the textures view of the editor!) Takes TRUE or FALSE as parameter. - - - Allows a Web page or image to be placed on a prim (1.19.1 RC0 and later only). - Use "text/html" for HTML. - - - Resizes a Web page to fit on x, y pixels (1.19.1 RC0 and later only). - This might still not be working - - - Sets a description for the media being displayed (1.19.1 RC0 and later only). - - - - Some information about a parcel of land returned from a DirectoryManager search - - - - Global Key of record - - - Parcel Owners - - - Name field of parcel, limited to 128 characters - - - Description field of parcel, limited to 256 characters - - - Total Square meters of parcel - - - Total area billable as Tier, for group owned land this will be 10% less than ActualArea - - - True of parcel is in Mature simulator - - - Grid global X position of parcel - - - Grid global Y position of parcel - - - Grid global Z position of parcel (not used) - - - Name of simulator parcel is located in - - - Texture of parcels display picture - - - Float representing calculated traffic based on time spent on parcel by avatars - - - Sale price of parcel (not used) - - - Auction ID of parcel - - - - Parcel Media Information - - - - A byte, if 0x1 viewer should auto scale media to fit object - - - A boolean, if true the viewer should loop the media - - - The Asset UUID of the Texture which when applied to a - primitive will display the media - - - A URL which points to any Quicktime supported media type - - - A description of the media - - - An Integer which represents the height of the media - - - An integer which represents the width of the media - - - A string which contains the mime type of the media - - - - Parcel of land, a portion of virtual real estate in a simulator - - - - The total number of contiguous 4x4 meter blocks your agent owns within this parcel - - - The total number of contiguous 4x4 meter blocks contained in this parcel owned by a group or agent other than your own - - - Deprecated, Value appears to always be 0 - - - Simulator-local ID of this parcel - - - UUID of the owner of this parcel - - - Whether the land is deeded to a group or not - - - - - - Date land was claimed - - - Appears to always be zero - - - This field is no longer used - - - Minimum corner of the axis-aligned bounding box for this - parcel - - - Maximum corner of the axis-aligned bounding box for this - parcel - - - Bitmap describing land layout in 4x4m squares across the - entire region - - - Total parcel land area - - - - - - Maximum primitives across the entire simulator owned by the same agent or group that owns this parcel that can be used - - - Total primitives across the entire simulator calculated by combining the allowed prim counts for each parcel - owned by the agent or group that owns this parcel - - - Maximum number of primitives this parcel supports - - - Total number of primitives on this parcel - - - For group-owned parcels this indicates the total number of prims deeded to the group, - for parcels owned by an individual this inicates the number of prims owned by the individual - - - Total number of primitives owned by the parcel group on - this parcel, or for parcels owned by an individual with a group set the - total number of prims set to that group. - - - Total number of prims owned by other avatars that are not set to group, or not the parcel owner - - - A bonus multiplier which allows parcel prim counts to go over times this amount, this does not affect - the max prims per simulator. e.g: 117 prim parcel limit x 1.5 bonus = 175 allowed - - - Autoreturn value in minutes for others' objects - - - - - - Sale price of the parcel, only useful if ForSale is set - The SalePrice will remain the same after an ownership - transfer (sale), so it can be used to see the purchase price after - a sale if the new owner has not changed it - - - Parcel Name - - - Parcel Description - - - URL For Music Stream - - - - - - Price for a temporary pass - - - How long is pass valid for - - - - - - Key of authorized buyer - - - Key of parcel snapshot - - - The landing point location - - - The landing point LookAt - - - The type of landing enforced from the enum - - - - - - - - - - - - Access list of who is whitelisted on this - parcel - - - Access list of who is blacklisted on this - parcel - - - TRUE of region denies access to age unverified users - - - true to obscure (hide) media url - - - true to obscure (hide) music url - - - A struct containing media details - - - - Displays a parcel object in string format - - string containing key=value pairs of a parcel object - - - - Defalt constructor - - Local ID of this parcel - - - - Update the simulator with any local changes to this Parcel object - - Simulator to send updates to - Whether we want the simulator to confirm - the update with a reply packet or not - - - - Set Autoreturn time - - Simulator to send the update to - - - - Parcel (subdivided simulator lots) subsystem - - - - The event subscribers. null if no subcribers - - - Raises the ParcelDwellReply event - A ParcelDwellReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ParcelInfoReply event - A ParcelInfoReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ParcelProperties event - A ParcelPropertiesEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ParcelAccessListReply event - A ParcelAccessListReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ParcelObjectOwnersReply event - A ParcelObjectOwnersReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the SimParcelsDownloaded event - A SimParcelsDownloadedEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ForceSelectObjectsReply event - A ForceSelectObjectsReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ParcelMediaUpdateReply event - A ParcelMediaUpdateReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ParcelMediaCommand event - A ParcelMediaCommandEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - - Default constructor - - A reference to the GridClient object - - - - Request basic information for a single parcel - - Simulator-local ID of the parcel - - - - Request properties of a single parcel - - Simulator containing the parcel - Simulator-local ID of the parcel - An arbitrary integer that will be returned - with the ParcelProperties reply, useful for distinguishing between - multiple simultaneous requests - - - - Request the access list for a single parcel - - Simulator containing the parcel - Simulator-local ID of the parcel - An arbitrary integer that will be returned - with the ParcelAccessList reply, useful for distinguishing between - multiple simultaneous requests - - - - - Request properties of parcels using a bounding box selection - - Simulator containing the parcel - Northern boundary of the parcel selection - Eastern boundary of the parcel selection - Southern boundary of the parcel selection - Western boundary of the parcel selection - An arbitrary integer that will be returned - with the ParcelProperties reply, useful for distinguishing between - different types of parcel property requests - A boolean that is returned with the - ParcelProperties reply, useful for snapping focus to a single - parcel - - - - Request all simulator parcel properties (used for populating the Simulator.Parcels - dictionary) - - Simulator to request parcels from (must be connected) - - - - Request all simulator parcel properties (used for populating the Simulator.Parcels - dictionary) - - Simulator to request parcels from (must be connected) - If TRUE, will force a full refresh - Number of milliseconds to pause in between each request - - - - Request the dwell value for a parcel - - Simulator containing the parcel - Simulator-local ID of the parcel - - - - Send a request to Purchase a parcel of land - - The Simulator the parcel is located in - The parcels region specific local ID - true if this parcel is being purchased by a group - The groups - true to remove tier contribution if purchase is successful - The parcels size - The purchase price of the parcel - - - - - Reclaim a parcel of land - - The simulator the parcel is in - The parcels region specific local ID - - - - Deed a parcel to a group - - The simulator the parcel is in - The parcels region specific local ID - The groups - - - - Request prim owners of a parcel of land. - - Simulator parcel is in - The parcels region specific local ID - - - - Return objects from a parcel - - Simulator parcel is in - The parcels region specific local ID - the type of objects to return, - A list containing object owners s to return - - - - Subdivide (split) a parcel - - - - - - - - - - Join two parcels of land creating a single parcel - - - - - - - - - - Get a parcels LocalID - - Simulator parcel is in - Vector3 position in simulator (Z not used) - 0 on failure, or parcel LocalID on success. - A call to Parcels.RequestAllSimParcels is required to populate map and - dictionary. - - - - Terraform (raise, lower, etc) an area or whole parcel of land - - Simulator land area is in. - LocalID of parcel, or -1 if using bounding box - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - true on successful request sent. - Settings.STORE_LAND_PATCHES must be true, - Parcel information must be downloaded using RequestAllSimParcels() - - - - Terraform (raise, lower, etc) an area or whole parcel of land - - Simulator land area is in. - west border of area to modify - south border of area to modify - east border of area to modify - north border of area to modify - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - true on successful request sent. - Settings.STORE_LAND_PATCHES must be true, - Parcel information must be downloaded using RequestAllSimParcels() - - - - Terraform (raise, lower, etc) an area or whole parcel of land - - Simulator land area is in. - LocalID of parcel, or -1 if using bounding box - west border of area to modify - south border of area to modify - east border of area to modify - north border of area to modify - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - How many meters + or - to lower, 1 = 1 meter - true on successful request sent. - Settings.STORE_LAND_PATCHES must be true, - Parcel information must be downloaded using RequestAllSimParcels() - - - - Terraform (raise, lower, etc) an area or whole parcel of land - - Simulator land area is in. - LocalID of parcel, or -1 if using bounding box - west border of area to modify - south border of area to modify - east border of area to modify - north border of area to modify - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - How many meters + or - to lower, 1 = 1 meter - Height at which the terraform operation is acting at - - - - Sends a request to the simulator to return a list of objects owned by specific owners - - Simulator local ID of parcel - Owners, Others, Etc - List containing keys of avatars objects to select; - if List is null will return Objects of type selectType - Response data is returned in the event - - - - Eject and optionally ban a user from a parcel - - target key of avatar to eject - true to also ban target - - - - Freeze or unfreeze an avatar over your land - - target key to freeze - true to freeze, false to unfreeze - - - - Abandon a parcel of land - - Simulator parcel is in - Simulator local ID of parcel - - - - Requests the UUID of the parcel in a remote region at a specified location - - Location of the parcel in the remote region - Remote region handle - Remote region UUID - If successful UUID of the remote parcel, UUID.Zero otherwise - - - - Retrieves information on resources used by the parcel - - UUID of the parcel - Should per object resource usage be requested - Callback invoked when the request is complete - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a Parcel Update request - - - Raised when the parcel your agent is located sends a ParcelMediaCommand - - - - Parcel Accesslist - - - - Agents - - - - - - Flags for specific entry in white/black lists - - - - Owners of primitives on parcel - - - - Prim Owners - - - True of owner is group - - - Total count of prims owned by OwnerID - - - true of OwnerID is currently online and is not a group - - - The date of the most recent prim left by OwnerID - - - - Called once parcel resource usage information has been collected - - Indicates if operation was successfull - Parcel resource usage information - - - Contains a parcels dwell data returned from the simulator in response to an - - - - Construct a new instance of the ParcelDwellReplyEventArgs class - - The global ID of the parcel - The simulator specific ID of the parcel - The calculated dwell for the parcel - - - Get the global ID of the parcel - - - Get the simulator specific ID of the parcel - - - Get the calculated dwell - - - Contains basic parcel information data returned from the - simulator in response to an request - - - - Construct a new instance of the ParcelInfoReplyEventArgs class - - The object containing basic parcel info - - - Get the object containing basic parcel info - - - Contains basic parcel information data returned from the simulator in response to an request - - - - Construct a new instance of the ParcelPropertiesEventArgs class - - The object containing the details - The object containing the details - The result of the request - The number of primitieves your agent is - currently selecting and or sitting on in this parcel - The user assigned ID used to correlate a request with - these results - TODO: - - - Get the simulator the parcel is located in - - - Get the object containing the details - If Result is NoData, this object will not contain valid data - - - Get the result of the request - - - Get the number of primitieves your agent is - currently selecting and or sitting on in this parcel - - - Get the user assigned ID used to correlate a request with - these results - - - TODO: - - - Contains blacklist and whitelist data returned from the simulator in response to an request - - - - Construct a new instance of the ParcelAccessListReplyEventArgs class - - The simulator the parcel is located in - The user assigned ID used to correlate a request with - these results - The simulator specific ID of the parcel - TODO: - The list containing the white/blacklisted agents for the parcel - - - Get the simulator the parcel is located in - - - Get the user assigned ID used to correlate a request with - these results - - - Get the simulator specific ID of the parcel - - - TODO: - - - Get the list containing the white/blacklisted agents for the parcel - - - Contains blacklist and whitelist data returned from the - simulator in response to an request - - - - Construct a new instance of the ParcelObjectOwnersReplyEventArgs class - - The simulator the parcel is located in - The list containing prim ownership counts - - - Get the simulator the parcel is located in - - - Get the list containing prim ownership counts - - - Contains the data returned when all parcel data has been retrieved from a simulator - - - - Construct a new instance of the SimParcelsDownloadedEventArgs class - - The simulator the parcel data was retrieved from - The dictionary containing the parcel data - The multidimensional array containing a x,y grid mapped - to each 64x64 parcel's LocalID. - - - Get the simulator the parcel data was retrieved from - - - A dictionary containing the parcel data where the key correlates to the ParcelMap entry - - - Get the multidimensional array containing a x,y grid mapped - to each 64x64 parcel's LocalID. - - - Contains the data returned when a request - - - - Construct a new instance of the ForceSelectObjectsReplyEventArgs class - - The simulator the parcel data was retrieved from - The list of primitive IDs - true if the list is clean and contains the information - only for a given request - - - Get the simulator the parcel data was retrieved from - - - Get the list of primitive IDs - - - true if the list is clean and contains the information - only for a given request - - - Contains data when the media data for a parcel the avatar is on changes - - - - Construct a new instance of the ParcelMediaUpdateReplyEventArgs class - - the simulator the parcel media data was updated in - The updated media information - - - Get the simulator the parcel media data was updated in - - - Get the updated media information - - - Contains the media command for a parcel the agent is currently on - - - - Construct a new instance of the ParcelMediaCommandEventArgs class - - The simulator the parcel media command was issued in - - - The media command that was sent - - - - Get the simulator the parcel media command was issued in - - - - - - - - - Get the media command that was sent - - - - - - - Singleton logging class for the entire library - - - - log4net logging engine - - - - Default constructor - - - - - Send a log message to the logging engine - - The log message - The severity of the log entry - - - - Send a log message to the logging engine - - The log message - The severity of the log entry - Instance of the client - - - - Send a log message to the logging engine - - The log message - The severity of the log entry - Exception that was raised - - - - Send a log message to the logging engine - - The log message - The severity of the log entry - Instance of the client - Exception that was raised - - - - If the library is compiled with DEBUG defined, an event will be - fired if an OnLogMessage handler is registered and the - message will be sent to the logging engine - - The message to log at the DEBUG level to the - current logging engine - - - - If the library is compiled with DEBUG defined and - GridClient.Settings.DEBUG is true, an event will be - fired if an OnLogMessage handler is registered and the - message will be sent to the logging engine - - The message to log at the DEBUG level to the - current logging engine - Instance of the client - - - Triggered whenever a message is logged. If this is left - null, log messages will go to the console - - - - Callback used for client apps to receive log messages from - the library - - Data being logged - The severity of the log entry from - - - - Map layer request type - - - - Objects and terrain are shown - - - Only the terrain is shown, no objects - - - Overlay showing land for sale and for auction - - - - Type of grid item, such as telehub, event, populator location, etc. - - - - Telehub - - - PG rated event - - - Mature rated event - - - Popular location - - - Locations of avatar groups in a region - - - Land for sale - - - Classified ad - - - Adult rated event - - - Adult land for sale - - - - Information about a region on the grid map - - - - Sim X position on World Map - - - Sim Y position on World Map - - - Sim Name (NOTE: In lowercase!) - - - - - - Appears to always be zero (None) - - - Sim's defined Water Height - - - - - - UUID of the World Map image - - - Unique identifier for this region, a combination of the X - and Y position - - - - - - - - - - - - - - - - - - - - - - - Visual chunk of the grid map - - - - - Base class for Map Items - - - - The Global X position of the item - - - The Global Y position of the item - - - Get the Local X position of the item - - - Get the Local Y position of the item - - - Get the Handle of the region - - - - Represents an agent or group of agents location - - - - - Represents a Telehub location - - - - - Represents a non-adult parcel of land for sale - - - - - Represents an Adult parcel of land for sale - - - - - Represents a PG Event - - - - - Represents a Mature event - - - - - Represents an Adult event - - - - - Manages grid-wide tasks such as the world map - - - - The event subscribers. null if no subcribers - - - Raises the CoarseLocationUpdate event - A CoarseLocationUpdateEventArgs object containing the - data sent by simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GridRegion event - A GridRegionEventArgs object containing the - data sent by simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GridLayer event - A GridLayerEventArgs object containing the - data sent by simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GridItems event - A GridItemEventArgs object containing the - data sent by simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the RegionHandleReply event - A RegionHandleReplyEventArgs object containing the - data sent by simulator - - - Thread sync lock object - - - A dictionary of all the regions, indexed by region name - - - A dictionary of all the regions, indexed by region handle - - - - Constructor - - Instance of GridClient object to associate with this GridManager instance - - - - - - - - - - Request a map layer - - The name of the region - The type of layer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Request data for all mainland (Linden managed) simulators - - - - - Request the region handle for the specified region UUID - - UUID of the region to look up - - - - Get grid region information using the region name, this function - will block until it can find the region or gives up - - Name of sim you're looking for - Layer that you are requesting - Will contain a GridRegion for the sim you're - looking for if successful, otherwise an empty structure - True if the GridRegion was successfully fetched, otherwise - false - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the simulator sends a - containing the location of agents in the simulator - - - Raised when the simulator sends a Region Data in response to - a Map request - - - Raised when the simulator sends GridLayer object containing - a map tile coordinates and texture information - - - Raised when the simulator sends GridItems object containing - details on events, land sales at a specific location - - - Raised in response to a Region lookup - - - Unknown - - - Current direction of the sun - - - Current angular velocity of the sun - - - Current world time - - - - Particle system specific enumerators, flags and methods. - - - - - - - - - - - - - - - - - - - - - - Foliage type for this primitive. Only applicable if this - primitive is foliage - - - Unknown - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Identifies the owner if audio or a particle system is - active - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Default constructor - - - - - Packs PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew - parameters in to signed eight bit values - - Floating point parameter to pack - Signed eight bit value containing the packed parameter - - - - Unpacks PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew - parameters from signed eight bit integers to floating point values - - Signed eight bit value to unpack - Unpacked floating point value - - - - - - - Current version of the media data for the prim - - - - - Array of media entries indexed by face number - - - - - - - - - - Uses basic heuristics to estimate the primitive shape - - - - Parameters used to construct a visual representation of a primitive - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Attachment point to an avatar - - - - - - - - - - - - - - - - Information on the flexible properties of a primitive - - - - - - - - - - - - - - - - - - - - - - - Default constructor - - - - - - - - - - - - - - - - - - - - - - - - Information on the light properties of a primitive - - - - - - - - - - - - - - - - - - - - Default constructor - - - - - - - - - - - - - - - - - - - - - - - - Information on the sculpt properties of a sculpted primitive - - - - - Default constructor - - - - - - - - - - - - Render inside out (inverts the normals). - - - - - Render an X axis mirror of the sculpty. - - - - - Extended properties to describe an object - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Default constructor - - - - - Set the properties that are set in an ObjectPropertiesFamily packet - - that has - been partially filled by an ObjectPropertiesFamily packet - - - - Complete structure for the particle system - - - - Particle Flags - There appears to be more data packed in to this area - for many particle systems. It doesn't appear to be flag values - and serialization breaks unless there is a flag for every - possible bit so it is left as an unsigned integer - - - pattern of particles - - - A representing the maximimum age (in seconds) particle will be displayed - Maximum value is 30 seconds - - - A representing the number of seconds, - from when the particle source comes into view, - or the particle system's creation, that the object will emits particles; - after this time period no more particles are emitted - - - A in radians that specifies where particles will not be created - - - A in radians that specifies where particles will be created - - - A representing the number of seconds between burts. - - - A representing the number of meters - around the center of the source where particles will be created. - - - A representing in seconds, the minimum speed between bursts of new particles - being emitted - - - A representing in seconds the maximum speed of new particles being emitted. - - - A representing the maximum number of particles emitted per burst - - - A which represents the velocity (speed) from the source which particles are emitted - - - A which represents the Acceleration from the source which particles are emitted - - - The Key of the texture displayed on the particle - - - The Key of the specified target object or avatar particles will follow - - - Flags of particle from - - - Max Age particle system will emit particles for - - - The the particle has at the beginning of its lifecycle - - - The the particle has at the ending of its lifecycle - - - A that represents the starting X size of the particle - Minimum value is 0, maximum value is 4 - - - A that represents the starting Y size of the particle - Minimum value is 0, maximum value is 4 - - - A that represents the ending X size of the particle - Minimum value is 0, maximum value is 4 - - - A that represents the ending Y size of the particle - Minimum value is 0, maximum value is 4 - - - - Decodes a byte[] array into a ParticleSystem Object - - ParticleSystem object - Start position for BitPacker - - - - Generate byte[] array from particle data - - Byte array - - - - Particle source pattern - - - - None - - - Drop particles from source position with no force - - - "Explode" particles in all directions - - - Particles shoot across a 2D area - - - Particles shoot across a 3D Cone - - - Inverse of AngleCone (shoot particles everywhere except the 3D cone defined - - - - Particle Data Flags - - - - None - - - Interpolate color and alpha from start to end - - - Interpolate scale from start to end - - - Bounce particles off particle sources Z height - - - velocity of particles is dampened toward the simulators wind - - - Particles follow the source - - - Particles point towards the direction of source's velocity - - - Target of the particles - - - Particles are sent in a straight line - - - Particles emit a glow - - - used for point/grab/touch - - - - Particle Flags Enum - - - - None - - - Acceleration and velocity for particles are - relative to the object rotation - - - Particles use new 'correct' angle parameters - - - - Texture animation mode - - - - Disable texture animation - - - Enable texture animation - - - Loop when animating textures - - - Animate in reverse direction - - - Animate forward then reverse - - - Slide texture smoothly instead of frame-stepping - - - Rotate texture instead of using frames - - - Scale texture instead of using frames - - - - A single textured face. Don't instantiate this class yourself, use the - methods in TextureEntry - - - - - Contains the definition for individual faces - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - In the future this will specify whether a webpage is - attached to this face - - - - - - - Represents all of the texturable faces for an object - - Grid objects have infinite faces, with each face - using the properties of the default face unless set otherwise. So if - you have a TextureEntry with a default texture uuid of X, and face 18 - has a texture UUID of Y, every face would be textured with X except for - face 18 that uses Y. In practice however, primitives utilize a maximum - of nine faces - - - - - - - - - - Constructor that takes a default texture UUID - - Texture UUID to use as the default texture - - - - Constructor that takes a TextureEntryFace for the - default face - - Face to use as the default face - - - - Constructor that creates the TextureEntry class from a byte array - - Byte array containing the TextureEntry field - Starting position of the TextureEntry field in - the byte array - Length of the TextureEntry field, in bytes - - - - This will either create a new face if a custom face for the given - index is not defined, or return the custom face for that index if - it already exists - - The index number of the face to create or - retrieve - A TextureEntryFace containing all the properties for that - face - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Controls the texture animation of a particular prim - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Represents a Sound Asset - - - - Initializes a new instance of an AssetSound object - - - Initializes a new instance of an AssetSound object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - - TODO: Encodes a sound file - - - - - TODO: Decode a sound file - - true - - - Override the base classes AssetType - - - - A linkset asset, containing a parent primitive and zero or more children - - - - Initializes a new instance of an AssetPrim object - - - - Initializes a new instance of an AssetPrim object - - A unique specific to this asset - A byte array containing the raw asset data - - - - - - - - - - - - - - Override the base classes AssetType - - - - Only used internally for XML serialization/deserialization - - - - - The deserialized form of a single primitive in a linkset asset - - - - - Operation to apply when applying color to texture - - - - - Information needed to translate visual param value to RGBA color - - - - - Construct VisualColorParam - - Operation to apply when applying color to texture - Colors - - - - Represents alpha blending and bump infor for a visual parameter - such as sleive length - - - - Stregth of the alpha to apply - - - File containing the alpha channel - - - Skip blending if parameter value is 0 - - - Use miltiply insted of alpha blending - - - - Create new alhpa information for a visual param - - Stregth of the alpha to apply - File containing the alpha channel - Skip blending if parameter value is 0 - Use miltiply insted of alpha blending - - - - A single visual characteristic of an avatar mesh, such as eyebrow height - - - - Index of this visual param - - - Internal name - - - Group ID this parameter belongs to - - - Name of the wearable this parameter belongs to - - - Displayable label of this characteristic - - - Displayable label for the minimum value of this characteristic - - - Displayable label for the maximum value of this characteristic - - - Default value - - - Minimum value - - - Maximum value - - - Is this param used for creation of bump layer? - - - Alpha blending/bump info - - - Color information - - - Array of param IDs that are drivers for this parameter - - - - Set all the values through the constructor - - Index of this visual param - Internal name - - - Displayable label of this characteristic - Displayable label for the minimum value of this characteristic - Displayable label for the maximum value of this characteristic - Default value - Minimum value - Maximum value - Is this param used for creation of bump layer? - Array of param IDs that are drivers for this parameter - Alpha blending/bump info - Color information - - - - Holds the Params array of all the avatar appearance parameters - - - - - NetworkManager is responsible for managing the network layer of - OpenMetaverse. It tracks all the server connections, serializes - outgoing traffic and deserializes incoming traffic, and provides - instances of delegates for network-related events. - - - Login Routines - - - - The event subscribers, null of no subscribers - - - Raises the PacketSent Event - A PacketSentEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the LoggedOut Event - A LoggedOutEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the SimConnecting Event - A SimConnectingEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the SimConnected Event - A SimConnectedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the SimDisconnected Event - A SimDisconnectedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the Disconnected Event - A DisconnectedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the SimChanged Event - A SimChangedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the EventQueueRunning Event - A EventQueueRunningEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - All of the simulators we are currently connected to - - - Handlers for incoming capability events - - - Handlers for incoming packets - - - Incoming packets that are awaiting handling - - - Outgoing packets that are awaiting handling - - - - Default constructor - - Reference to the GridClient object - - - - Register an event handler for a packet. This is a low level event - interface and should only be used if you are doing something not - supported in the library - - Packet type to trigger events for - Callback to fire when a packet of this type - is received - - - - Register an event handler for a packet. This is a low level event - interface and should only be used if you are doing something not - supported in the library - - Packet type to trigger events for - Callback to fire when a packet of this type - is received - True if the callback should be ran - asynchronously. Only set this to false (synchronous for callbacks - that will always complete quickly) - If any callback for a packet type is marked as - asynchronous, all callbacks for that packet type will be fired - asynchronously - - - - Unregister an event handler for a packet. This is a low level event - interface and should only be used if you are doing something not - supported in the library - - Packet type this callback is registered with - Callback to stop firing events for - - - - Register a CAPS event handler. This is a low level event interface - and should only be used if you are doing something not supported in - the library - - Name of the CAPS event to register a handler for - Callback to fire when a CAPS event is received - - - - Unregister a CAPS event handler. This is a low level event interface - and should only be used if you are doing something not supported in - the library - - Name of the CAPS event this callback is - registered with - Callback to stop firing events for - - - - Send a packet to the simulator the avatar is currently occupying - - Packet to send - - - - Send a packet to a specified simulator - - Packet to send - Simulator to send the packet to - - - - Connect to a simulator - - IP address to connect to - Port to connect to - Handle for this simulator, to identify its - location in the grid - Whether to set CurrentSim to this new - connection, use this if the avatar is moving in to this simulator - URL of the capabilities server to use for - this sim connection - A Simulator object on success, otherwise null - - - - Connect to a simulator - - IP address and port to connect to - Handle for this simulator, to identify its - location in the grid - Whether to set CurrentSim to this new - connection, use this if the avatar is moving in to this simulator - URL of the capabilities server to use for - this sim connection - A Simulator object on success, otherwise null - - - - Initiate a blocking logout request. This will return when the logout - handshake has completed or when Settings.LOGOUT_TIMEOUT - has expired and the network layer is manually shut down - - - - - Initiate the logout process. Check if logout succeeded with the - OnLogoutReply event, and if this does not fire the - Shutdown() function needs to be manually called - - - - - Close a connection to the given simulator - - - - - - - Shutdown will disconnect all the sims except for the current sim - first, and then kill the connection to CurrentSim. This should only - be called if the logout process times out on RequestLogout - - Type of shutdown - - - - Shutdown will disconnect all the sims except for the current sim - first, and then kill the connection to CurrentSim. This should only - be called if the logout process times out on RequestLogout - - Type of shutdown - Shutdown message - - - - Searches through the list of currently connected simulators to find - one attached to the given IPEndPoint - - IPEndPoint of the Simulator to search for - A Simulator reference on success, otherwise null - - - - Fire an event when an event queue connects for capabilities - - Simulator the event queue is attached to - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - The event subscribers, null of no subscribers - - - Raises the LoginProgress Event - A LoginProgressEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - Seed CAPS URL returned from the login server - - - A list of packets obtained during the login process which - networkmanager will log but not process - - - - Generate sane default values for a login request - - Account first name - Account last name - Account password - Client application name - Client application version - A populated struct containing - sane defaults - - - - Simplified login that takes the most common and required fields - - Account first name - Account last name - Account password - Client application name - Client application version - Whether the login was successful or not. On failure the - LoginErrorKey string will contain the error code and LoginMessage - will contain a description of the error - - - - Simplified login that takes the most common fields along with a - starting location URI, and can accept an MD5 string instead of a - plaintext password - - Account first name - Account last name - Account password or MD5 hash of the password - such as $1$1682a1e45e9f957dcdf0bb56eb43319c - Client application name - Starting location URI that can be built with - StartLocation() - Client application version - Whether the login was successful or not. On failure the - LoginErrorKey string will contain the error code and LoginMessage - will contain a description of the error - - - - Login that takes a struct of all the values that will be passed to - the login server - - The values that will be passed to the login - server, all fields must be set even if they are String.Empty - Whether the login was successful or not. On failure the - LoginErrorKey string will contain the error code and LoginMessage - will contain a description of the error - - - - Build a start location URI for passing to the Login function - - Name of the simulator to start in - X coordinate to start at - Y coordinate to start at - Z coordinate to start at - String with a URI that can be used to login to a specified - location - - - - Handles response from XML-RPC login replies - - - - - Handle response from LLSD login replies - - - - - - - - Get current OS - - Either "Win" or "Linux" - - - - Get clients default Mac Address - - A string containing the first found Mac Address - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Unique identifier associated with our connections to - simulators - - - The simulator that the logged in avatar is currently - occupying - - - Shows whether the network layer is logged in to the - grid or not - - - Number of packets in the incoming queue - - - Number of packets in the outgoing queue - - - Raised when the simulator sends us data containing - ... - - - Called when a reply is received from the login server, the - login sequence will block until this event returns - - - Current state of logging in - - - Upon login failure, contains a short string key for the - type of login error that occurred - - - The raw XML-RPC reply from the login server, exactly as it - was received (minus the HTTP header) - - - During login this contains a descriptive version of - LoginStatusCode. After a successful login this will contain the - message of the day, and after a failed login a descriptive error - message will be returned - - - - Explains why a simulator or the grid disconnected from us - - - - The client requested the logout or simulator disconnect - - - The server notified us that it is disconnecting - - - Either a socket was closed or network traffic timed out - - - The last active simulator shut down - - - - Holds a simulator reference and a decoded packet, these structs are put in - the packet inbox for event handling - - - - Reference to the simulator that this packet came from - - - Packet that needs to be processed - - - - Holds a simulator reference and a serialized packet, these structs are put in - the packet outbox for sending - - - - Reference to the simulator this packet is destined for - - - Packet that needs to be sent - - - Sequence number of the wrapped packet - - - Number of times this packet has been resent - - - Environment.TickCount when this packet was last sent over the wire - - - - - - - - - - - - - - Static helper functions and global variables - - - - This header flag signals that ACKs are appended to the packet - - - This header flag signals that this packet has been sent before - - - This header flags signals that an ACK is expected for this packet - - - This header flag signals that the message is compressed using zerocoding - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Given an X/Y location in absolute (grid-relative) terms, a region - handle is returned along with the local X/Y location in that region - - The absolute X location, a number such as - 255360.35 - The absolute Y location, a number such as - 255360.35 - The sim-local X position of the global X - position, a value from 0.0 to 256.0 - The sim-local Y position of the global Y - position, a value from 0.0 to 256.0 - A 64-bit region handle that can be used to teleport to - - - - Converts a floating point number to a terse string format used for - transmitting numbers in wearable asset files - - Floating point number to convert to a string - A terse string representation of the input number - - - - Convert a variable length field (byte array) to a string, with a - field name prepended to each line of the output - - If the byte array has unprintable characters in it, a - hex dump will be written instead - The StringBuilder object to write to - The byte array to convert to a string - A field name to prepend to each line of output - - - - Decode a zerocoded byte array, used to decompress packets marked - with the zerocoded flag - - Any time a zero is encountered, the next byte is a count - of how many zeroes to expand. One zero is encoded with 0x00 0x01, - two zeroes is 0x00 0x02, three zeroes is 0x00 0x03, etc. The - first four bytes are copied directly to the output buffer. - - The byte array to decode - The length of the byte array to decode. This - would be the length of the packet up to (but not including) any - appended ACKs - The output byte array to decode to - The length of the output buffer - - - - Encode a byte array with zerocoding. Used to compress packets marked - with the zerocoded flag. Any zeroes in the array are compressed down - to a single zero byte followed by a count of how many zeroes to expand - out. A single zero becomes 0x00 0x01, two zeroes becomes 0x00 0x02, - three zeroes becomes 0x00 0x03, etc. The first four bytes are copied - directly to the output buffer. - - The byte array to encode - The length of the byte array to encode - The output byte array to encode to - The length of the output buffer - - - - Calculates the CRC (cyclic redundancy check) needed to upload inventory. - - Creation date - Sale type - Inventory type - Type - Asset ID - Group ID - Sale price - Owner ID - Creator ID - Item ID - Folder ID - Everyone mask (permissions) - Flags - Next owner mask (permissions) - Group mask (permissions) - Owner mask (permissions) - The calculated CRC - - - - Attempts to load a file embedded in the assembly - - The filename of the resource to load - A Stream for the requested file, or null if the resource - was not successfully loaded - - - - Attempts to load a file either embedded in the assembly or found in - a given search path - - The filename of the resource to load - An optional path that will be searched if - the asset is not found embedded in the assembly - A Stream for the requested file, or null if the resource - was not successfully loaded - - - - Converts a list of primitives to an object that can be serialized - with the LLSD system - - Primitives to convert to a serializable object - An object that can be serialized with LLSD - - - - Deserializes OSD in to a list of primitives - - Structure holding the serialized primitive list, - must be of the SDMap type - A list of deserialized primitives - - - - Converts a struct or class object containing fields only into a key value separated string - - The struct object - A string containing the struct fields as the keys, and the field value as the value separated - - - // Add the following code to any struct or class containing only fields to override the ToString() - // method to display the values of the passed object - - /// Print the struct data as a string - ///A string containing the field name, and field value - public override string ToString() - { - return Helpers.StructToString(this); - } - - - - - - Passed to Logger.Log() to identify the severity of a log entry - - - - No logging information will be output - - - Non-noisy useful information, may be helpful in - debugging a problem - - - A non-critical error occurred. A warning will not - prevent the rest of the library from operating as usual, - although it may be indicative of an underlying issue - - - A critical error has occurred. Generally this will - be followed by the network layer shutting down, although the - stability of the library after an error is uncertain - - - Used for internal testing, this logging level can - generate very noisy (long and/or repetitive) messages. Don't - pass this to the Log() function, use DebugLog() instead. - - - - - Access to the data server which allows searching for land, events, people, etc - - - - The event subscribers. null if no subcribers - - - Raises the EventInfoReply event - An EventInfoReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the DirEventsReply event - An DirEventsReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the PlacesReply event - A PlacesReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the DirPlacesReply event - A DirPlacesReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the DirClassifiedsReply event - A DirClassifiedsReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the DirGroupsReply event - A DirGroupsReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the DirPeopleReply event - A DirPeopleReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the DirLandReply event - A DirLandReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - - Constructs a new instance of the DirectoryManager class - - An instance of GridClient - - - - Query the data server for a list of classified ads containing the specified string. - Defaults to searching for classified placed in any category, and includes PG, Adult and Mature - results. - - Responses are sent 16 per response packet, there is no way to know how many results a query reply will contain however assuming - the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received - - The event is raised when a response is received from the simulator - - A string containing a list of keywords to search for - A UUID to correlate the results when the event is raised - - - - Query the data server for a list of classified ads which contain specified keywords (Overload) - - The event is raised when a response is received from the simulator - - A string containing a list of keywords to search for - The category to search - A set of flags which can be ORed to modify query options - such as classified maturity rating. - A UUID to correlate the results when the event is raised - - Search classified ads containing the key words "foo" and "bar" in the "Any" category that are either PG or Mature - - UUID searchID = StartClassifiedSearch("foo bar", ClassifiedCategories.Any, ClassifiedQueryFlags.PG | ClassifiedQueryFlags.Mature); - - - - Responses are sent 16 at a time, there is no way to know how many results a query reply will contain however assuming - the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received - - - - - Starts search for places (Overloaded) - - The event is raised when a response is received from the simulator - - Search text - Each request is limited to 100 places - being returned. To get the first 100 result entries of a request use 0, - from 100-199 use 1, 200-299 use 2, etc. - A UUID to correlate the results when the event is raised - - - - Queries the dataserver for parcels of land which are flagged to be shown in search - - The event is raised when a response is received from the simulator - - A string containing a list of keywords to search for separated by a space character - A set of flags which can be ORed to modify query options - such as classified maturity rating. - The category to search - Each request is limited to 100 places - being returned. To get the first 100 result entries of a request use 0, - from 100-199 use 1, 200-299 use 2, etc. - A UUID to correlate the results when the event is raised - - Search places containing the key words "foo" and "bar" in the "Any" category that are either PG or Adult - - UUID searchID = StartDirPlacesSearch("foo bar", DirFindFlags.DwellSort | DirFindFlags.IncludePG | DirFindFlags.IncludeAdult, ParcelCategory.Any, 0); - - - - Additional information on the results can be obtained by using the ParcelManager.InfoRequest method - - - - - Starts a search for land sales using the directory - - The event is raised when a response is received from the simulator - - What type of land to search for. Auction, - estate, mainland, "first land", etc - The OnDirLandReply event handler must be registered before - calling this function. There is no way to determine how many - results will be returned, or how many times the callback will be - fired other than you won't get more than 100 total parcels from - each query. - - - - Starts a search for land sales using the directory - - The event is raised when a response is received from the simulator - - What type of land to search for. Auction, - estate, mainland, "first land", etc - Maximum price to search for - Maximum area to search for - Each request is limited to 100 parcels - being returned. To get the first 100 parcels of a request use 0, - from 100-199 use 1, 200-299 use 2, etc. - The OnDirLandReply event handler must be registered before - calling this function. There is no way to determine how many - results will be returned, or how many times the callback will be - fired other than you won't get more than 100 total parcels from - each query. - - - - Send a request to the data server for land sales listings - - - Flags sent to specify query options - - Available flags: - Specify the parcel rating with one or more of the following: - IncludePG IncludeMature IncludeAdult - - Specify the field to pre sort the results with ONLY ONE of the following: - PerMeterSort NameSort AreaSort PricesSort - - Specify the order the results are returned in, if not specified the results are pre sorted in a Descending Order - SortAsc - - Specify additional filters to limit the results with one or both of the following: - LimitByPrice LimitByArea - - Flags can be combined by separating them with the | (pipe) character - - Additional details can be found in - - What type of land to search for. Auction, - Estate or Mainland - Maximum price to search for when the - DirFindFlags.LimitByPrice flag is specified in findFlags - Maximum area to search for when the - DirFindFlags.LimitByArea flag is specified in findFlags - Each request is limited to 100 parcels - being returned. To get the first 100 parcels of a request use 0, - from 100-199 use 100, 200-299 use 200, etc. - The event will be raised with the response from the simulator - - There is no way to determine how many results will be returned, or how many times the callback will be - fired other than you won't get more than 100 total parcels from - each reply. - - Any land set for sale to either anybody or specific to the connected agent will be included in the - results if the land is included in the query - - - // request all mainland, any maturity rating that is larger than 512 sq.m - StartLandSearch(DirFindFlags.SortAsc | DirFindFlags.PerMeterSort | DirFindFlags.LimitByArea | DirFindFlags.IncludePG | DirFindFlags.IncludeMature | DirFindFlags.IncludeAdult, SearchTypeFlags.Mainland, 0, 512, 0); - - - - - Search for Groups - - The name or portion of the name of the group you wish to search for - Start from the match number - - - - - Search for Groups - - The name or portion of the name of the group you wish to search for - Start from the match number - Search flags - - - - - Search the People directory for other avatars - - The name or portion of the name of the avatar you wish to search for - - - - - - Search Places for parcels of land you personally own - - - - - Searches Places for land owned by the specified group - - ID of the group you want to recieve land list for (You must be a member of the group) - Transaction (Query) ID which can be associated with results from your request. - - - - Search the Places directory for parcels that are listed in search and contain the specified keywords - - A string containing the keywords to search for - Transaction (Query) ID which can be associated with results from your request. - - - - Search Places - All Options - - One of the Values from the DirFindFlags struct, ie: AgentOwned, GroupOwned, etc. - One of the values from the SearchCategory Struct, ie: Any, Linden, Newcomer - A string containing a list of keywords to search for separated by a space character - String Simulator Name to search in - LLUID of group you want to recieve results for - Transaction (Query) ID which can be associated with results from your request. - Transaction (Query) ID which can be associated with results from your request. - - - - Search All Events with specifid searchText in all categories, includes PG, Mature and Adult - - A string containing a list of keywords to search for separated by a space character - Each request is limited to 100 entries - being returned. To get the first group of entries of a request use 0, - from 100-199 use 100, 200-299 use 200, etc. - UUID of query to correlate results in callback. - - - - Search Events - - A string containing a list of keywords to search for separated by a space character - One or more of the following flags: DateEvents, IncludePG, IncludeMature, IncludeAdult - from the Enum - - Multiple flags can be combined by separating the flags with the | (pipe) character - "u" for in-progress and upcoming events, -or- number of days since/until event is scheduled - For example "0" = Today, "1" = tomorrow, "2" = following day, "-1" = yesterday, etc. - Each request is limited to 100 entries - being returned. To get the first group of entries of a request use 0, - from 100-199 use 100, 200-299 use 200, etc. - EventCategory event is listed under. - UUID of query to correlate results in callback. - - - Requests Event Details - ID of Event returned from the method - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming event message - The Unique Capabilities Key - The event message containing the data - The simulator the message originated from - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming event message - The Unique Capabilities Key - The event message containing the data - The simulator the message originated from - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Classified Ad categories - - - Classified is listed in the Any category - - - Classified is shopping related - - - Classified is - - - - - - - - - - - - - - - - - - - - - - - - Event Categories - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Query Flags used in many of the DirectoryManager methods to specify which query to execute and how to return the results. - - Flags can be combined using the | (pipe) character, not all flags are available in all queries - - - - Query the People database - - - - - - - - - Query the Groups database - - - Query the Events database - - - Query the land holdings database for land owned by the currently connected agent - - - - - - Query the land holdings database for land which is owned by a Group - - - Specifies the query should pre sort the results based upon traffic - when searching the Places database - - - - - - - - - - - - - - - Specifies the query should pre sort the results in an ascending order when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results using the SalePrice field when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results by calculating the average price/sq.m (SalePrice / Area) when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results using the ParcelSize field when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results using the Name field when searching the land sales database. - This flag is only used when searching the land sales database - - - When set, only parcels less than the specified Price will be included when searching the land sales database. - This flag is only used when searching the land sales database - - - When set, only parcels greater than the specified Size will be included when searching the land sales database. - This flag is only used when searching the land sales database - - - - - - - - - Include PG land in results. This flag is used when searching both the Groups, Events and Land sales databases - - - Include Mature land in results. This flag is used when searching both the Groups, Events and Land sales databases - - - Include Adult land in results. This flag is used when searching both the Groups, Events and Land sales databases - - - - - - - Land types to search dataserver for - - - - Search Auction, Mainland and Estate - - - Land which is currently up for auction - - - Parcels which are on the mainland (Linden owned) continents - - - Parcels which are on privately owned simulators - - - - The content rating of the event - - - - Event is PG - - - Event is Mature - - - Event is Adult - - - - Classified Ad Options - - There appear to be two formats the flags are packed in. - This set of flags is for the newer style - - - - - - - - - - - - - - - - - - - Classified ad query options - - - - Include all ads in results - - - Include PG ads in results - - - Include Mature ads in results - - - Include Adult ads in results - - - - The For Sale flag in PlacesReplyData - - - - Parcel is not listed for sale - - - Parcel is For Sale - - - - A classified ad on the grid - - - - UUID for this ad, useful for looking up detailed - information about it - - - The title of this classified ad - - - Flags that show certain options applied to the classified - - - Creation date of the ad - - - Expiration date of the ad - - - Price that was paid for this ad - - - Print the struct data as a string - A string containing the field name, and field value - - - - A parcel retrieved from the dataserver such as results from the - "For-Sale" listings or "Places" Search - - - - The unique dataserver parcel ID - This id is used to obtain additional information from the entry - by using the method - - - A string containing the name of the parcel - - - The size of the parcel - This field is not returned for Places searches - - - The price of the parcel - This field is not returned for Places searches - - - If True, this parcel is flagged to be auctioned - - - If true, this parcel is currently set for sale - - - Parcel traffic - - - Print the struct data as a string - A string containing the field name, and field value - - - - An Avatar returned from the dataserver - - - - Online status of agent - This field appears to be obsolete and always returns false - - - The agents first name - - - The agents last name - - - The agents - - - Print the struct data as a string - A string containing the field name, and field value - - - - Response to a "Groups" Search - - - - The Group ID - - - The name of the group - - - The current number of members - - - Print the struct data as a string - A string containing the field name, and field value - - - - Parcel information returned from a request - - Represents one of the following: - A parcel of land on the grid that has its Show In Search flag set - A parcel of land owned by the agent making the request - A parcel of land owned by a group the agent making the request is a member of - - - In a request for Group Land, the First record will contain an empty record - - Note: This is not the same as searching the land for sale data source - - - - The ID of the Agent of Group that owns the parcel - - - The name - - - The description - - - The Size of the parcel - - - The billable Size of the parcel, for mainland - parcels this will match the ActualArea field. For Group owned land this will be 10 percent smaller - than the ActualArea. For Estate land this will always be 0 - - - Indicates the ForSale status of the parcel - - - The Gridwide X position - - - The Gridwide Y position - - - The Z position of the parcel, or 0 if no landing point set - - - The name of the Region the parcel is located in - - - The Asset ID of the parcels Snapshot texture - - - The calculated visitor traffic - - - The billing product SKU - Known values are: - - 023Mainland / Full Region - 024Estate / Full Region - 027Estate / Openspace - 029Estate / Homestead - 129Mainland / Homestead (Linden Owned) - - - - - No longer used, will always be 0 - - - Get a SL URL for the parcel - A string, containing a standard SLURL - - - Print the struct data as a string - A string containing the field name, and field value - - - - An "Event" Listing summary - - - - The ID of the event creator - - - The name of the event - - - The events ID - - - A string containing the short date/time the event will begin - - - The event start time in Unixtime (seconds since epoch) - - - The events maturity rating - - - Print the struct data as a string - A string containing the field name, and field value - - - - The details of an "Event" - - - - The events ID - - - The ID of the event creator - - - The name of the event - - - The category - - - The events description - - - The short date/time the event will begin - - - The event start time in Unixtime (seconds since epoch) UTC adjusted - - - The length of the event in minutes - - - 0 if no cover charge applies - - - The cover charge amount in L$ if applicable - - - The name of the region where the event is being held - - - The gridwide location of the event - - - The maturity rating - - - Get a SL URL for the parcel where the event is hosted - A string, containing a standard SLURL - - - Print the struct data as a string - A string containing the field name, and field value - - - Contains the Event data returned from the data server from an EventInfoRequest - - - Construct a new instance of the EventInfoReplyEventArgs class - A single EventInfo object containing the details of an event - - - - A single EventInfo object containing the details of an event - - - - Contains the "Event" detail data returned from the data server - - - Construct a new instance of the DirEventsReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list containing the "Events" returned by the search query - - - The ID returned by - - - A list of "Events" returned by the data server - - - Contains the "Event" list data returned from the data server - - - Construct a new instance of PlacesReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list containing the "Places" returned by the data server query - - - The ID returned by - - - A list of "Places" returned by the data server - - - Contains the places data returned from the data server - - - Construct a new instance of the DirPlacesReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list containing land data returned by the data server - - - The ID returned by - - - A list containing Places data returned by the data server - - - Contains the classified data returned from the data server - - - Construct a new instance of the DirClassifiedsReplyEventArgs class - A list of classified ad data returned from the data server - - - A list containing Classified Ads returned by the data server - - - Contains the group data returned from the data server - - - Construct a new instance of the DirGroupsReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list of groups data returned by the data server - - - The ID returned by - - - A list containing Groups data returned by the data server - - - Contains the people data returned from the data server - - - Construct a new instance of the DirPeopleReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list of people data returned by the data server - - - The ID returned by - - - A list containing People data returned by the data server - - - Contains the land sales data returned from the data server - - - Construct a new instance of the DirLandReplyEventArgs class - A list of parcels for sale returned by the data server - - - A list containing land forsale data returned by the data server - - - - Capabilities is the name of the bi-directional HTTP REST protocol - used to communicate non real-time transactions such as teleporting or - group messaging - - - - Reference to the simulator this system is connected to - - - - Default constructor - - - - - - - Request the URI of a named capability - - Name of the capability to request - The URI of the requested capability, or String.Empty if - the capability does not exist - - - - Process any incoming events, check to see if we have a message created for the event, - - - - - - Capabilities URI this system was initialized with - - - Whether the capabilities event queue is connected and - listening for incoming events - - - - Triggered when an event is received via the EventQueueGet - capability - - Event name - Decoded event data - The simulator that generated the event - Permission request flags, asked when a script wants to control an Avatar @@ -9220,7 +138,7 @@ IM for help - IM sent automatically on call for help, sends a lure + IM sent automatically on call for help, sends a lure to each Helper reached @@ -9317,17 +235,19 @@ - - + + - + + - + + @@ -9335,47 +255,59 @@ - + + - + + - + + - + + - + + - + + - + + Project a beam from a source to a destination, such as the one used when editing an object - + + - + + - + + Create a swirl of particles around an object - + + - + + Cause an avatar to look at an object @@ -9385,42 +317,52 @@ - The action an avatar is doing when looking at something, used in + The action an avatar is doing when looking at something, used in ViewerEffect packets for the LookAt effect - + + - + + - + + - + + - + + - + + Deprecated - + + - + + - + + - + + @@ -9429,16 +371,20 @@ - + + - + + - + + - + + @@ -9446,200 +392,260 @@ - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - - + + - + + - + + - + + - + + - + + - - + + - + + - + + - + + - + + - + + @@ -9698,13 +704,16 @@ - + + - + + - + + @@ -9731,7 +740,6 @@ - @@ -9741,7 +749,8 @@ Set when newbie leaves help island for first time - + + Via Lure @@ -9768,19 +777,23 @@ Linden Forced me - + + Agent Teleported Home via Script - + + - + + - + + forced to new location for example when avatar is banned or ejected @@ -9796,34 +809,39 @@ - - + + - + + - + + - - + + - + + - + + - + + @@ -9878,223 +896,546 @@ Manager class for our own avatar + + + Constructor, setup callbacks for packets related to our avatar + + A reference to the Class + + + + Agent movement and camera control + Agent movement is controlled by setting specific + After the control flags are set, An AgentUpdate is required to update the simulator of the specified flags + This is most easily accomplished by setting one or more of the AgentMovement properties + Movement of an avatar is always based on a compass direction, for example AtPos will move the + agent from West to East or forward on the X Axis, AtNeg will of course move agent from + East to West or backward on the X Axis, LeftPos will be South to North or forward on the Y Axis + The Z axis is Up, finer grained control of movements can be done using the Nudge properties + + + + Default constructor + + + + Camera controls for the agent, mostly a thin wrapper around + CoordinateFrame. This class is only responsible for state + tracking and math, it does not send any packets + + + + + Default constructor + + + + + + + + The camera is a local frame of reference inside of + the larger grid space. This is where the math happens + + + + + + + + + + + + + + + + + + + Agent camera controls + + + Currently only used for hiding your group title + + + Action state of the avatar, which can currently be + typing and editing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Timer for sending AgentUpdate packets + + + Move agent positive along the X axis + + + Move agent negative along the X axis + + + Move agent positive along the Y axis + + + Move agent negative along the Y axis + + + Move agent positive along the Z axis + + + Move agent negative along the Z axis + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Causes simulator to make agent fly + + + Stop movement + + + Finish animation + + + Stand up from a sit + + + Tells simulator to sit agent on ground + + + Place agent into mouselook mode + + + Nudge agent positive along the X axis + + + Nudge agent negative along the X axis + + + Nudge agent positive along the Y axis + + + Nudge agent negative along the Y axis + + + Nudge agent positive along the Z axis + + + Nudge agent negative along the Z axis + + + + + + + + + + + Tell simulator to mark agent as away + + + + + + + + + + + + + + + + + + + + Returns "always run" value, or changes it by sending a SetAlwaysRunPacket + + + + The current value of the agent control flags + + + Gets or sets the interval in milliseconds at which + AgentUpdate packets are sent to the current simulator. Setting + this to a non-zero value will also enable the packet sending if + it was previously off, and setting it to zero will disable + + + Gets or sets whether AgentUpdate packets are sent to + the current simulator + + + Reset movement controls every time we send an update + + + + Send an AgentUpdate with the camera set at the current agent + position and pointing towards the heading specified + + Camera rotation in radians + Whether to send the AgentUpdate reliable + or not + + + + Rotates the avatar body and camera toward a target position. + This will also anchor the camera position on the avatar + + Region coordinates to turn toward + + + + Send new AgentUpdate packet to update our current camera + position and rotation + + + + + Send new AgentUpdate packet to update our current camera + position and rotation + + Whether to require server acknowledgement + of this packet + + + + Send new AgentUpdate packet to update our current camera + position and rotation + + Whether to require server acknowledgement + of this packet + Simulator to send the update to + + + + Builds an AgentUpdate packet entirely from parameters. This + will not touch the state of Self.Movement or + Self.Movement.Camera in any way + + + + + + + + + + + + + + + + + + + + + + + + + + + Used to specify movement actions for your agent + + + + Empty flag + + + Move Forward (SL Keybinding: W/Up Arrow) + + + Move Backward (SL Keybinding: S/Down Arrow) + + + Move Left (SL Keybinding: Shift-(A/Left Arrow)) + + + Move Right (SL Keybinding: Shift-(D/Right Arrow)) + + + Not Flying: Jump/Flying: Move Up (SL Keybinding: E) + + + Not Flying: Croutch/Flying: Move Down (SL Keybinding: C) + + + Unused + + + Unused + + + Unused + + + Unused + + + ORed with AGENT_CONTROL_AT_* if the keyboard is being used + + + ORed with AGENT_CONTROL_LEFT_* if the keyboard is being used + + + ORed with AGENT_CONTROL_UP_* if the keyboard is being used + + + Fly + + + + + + + Finish our current animation + + + Stand up from the ground or a prim seat + + + Sit on the ground at our current location + + + Whether mouselook is currently enabled + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + + + + + + + + + Set when the avatar is idled or set to away. Note that the away animation is + activated separately from setting this flag + + + + + + + + + + + + + + + + + + + + Called once attachment resource usage information has been collected + + Indicates if operation was successfull + Attachment resource usage information + The event subscribers. null if no subcribers - - Raises the ChatFromSimulator event - A ChatEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the ScriptDialog event - A SctriptDialogEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the ScriptQuestion event - A ScriptQuestionEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the LoadURL event - A LoadUrlEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the MoneyBalance event - A BalanceEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the MoneyBalanceReply event - A MoneyBalanceReplyEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the IM event - A InstantMessageEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the TeleportProgress event - A TeleportEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the AgentDataReply event - A AgentDataReplyEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the AnimationsChanged event - A AnimationsChangedEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the MeanCollision event - A MeanCollisionEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the RegionCrossed event - A RegionCrossedEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the GroupChatJoined event - A GroupChatJoinedEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the AlertMessage event - A AlertMessageEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the ScriptControlChange event - A ScriptControlEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the CameraConstraint event - A CameraConstraintEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the ScriptSensorReply event - A ScriptSensorReplyEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the AvatarSitResponse event - A AvatarSitResponseEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the ChatSessionMemberAdded event - A ChatSessionMemberAddedEventArgs object containing the - data returned from the data server - Thread sync lock object The event subscribers. null if no subcribers - - Raises the ChatSessionMemberLeft event - A ChatSessionMemberLeftEventArgs object containing the - data returned from the data server - Thread sync lock object @@ -10112,17 +1453,263 @@ Dictionary containing current Group Chat sessions and members - + + Raised when a scripted object or agent within range sends a public message + + + Raised when a scripted object sends a dialog box containing possible + options an agent can respond to + + + Raised when an object requests a change in the permissions an agent has permitted + + + Raised when a script requests an agent open the specified URL + + + Raised when an agents currency balance is updated + + + Raised when a transaction occurs involving currency such as a land purchase + + + Raised when an ImprovedInstantMessage packet is recieved from the simulator, this is used for everything from + private messaging to friendship offers. The Dialog field defines what type of message has arrived + + + Raised when an agent has requested a teleport to another location, or when responding to a lure. Raised multiple times + for each teleport indicating the progress of the request + + + Raised when a simulator sends agent specific information for our avatar. + + + Raised when our agents animation playlist changes + + + Raised when an object or avatar forcefully collides with our agent + + + Raised when our agent crosses a region border into another region + + + Raised when our agent succeeds or fails to join a group chat session + + + Raised when a simulator sends an urgent message usually indication the recent failure of + another action we have attempted to take such as an attempt to enter a parcel where we are denied access + + + Raised when a script attempts to take or release specified controls for our agent + + + Raised when the simulator detects our agent is trying to view something + beyond its limits + + + Raised when a script sensor reply is received from a simulator + + + Raised in response to a request + + + Raised when an avatar enters a group chat session we are participating in + + + Raised when an agent exits a group chat session we are participating in + + + Your (client) avatars + "client", "agent", and "avatar" all represent the same thing + + + Temporary assigned to this session, used for + verifying our identity in packets + + + Shared secret that is never sent over the wire + + + Your (client) avatar ID, local to the current region/sim + + + Where the avatar started at login. Can be "last", "home" + or a login + + + The access level of this agent, usually M or PG + + + The CollisionPlane of Agent + + + An representing the velocity of our agent + + + An representing the acceleration of our agent + + + A which specifies the angular speed, and axis about which an Avatar is rotating. + + + Position avatar client will goto when login to 'home' or during + teleport request to 'home' region. + + + LookAt point saved/restored with HomePosition + + + Avatar First Name (i.e. Philip) + + + Avatar Last Name (i.e. Linden) + + + Avatar Full Name (i.e. Philip Linden) + + + Gets the health of the agent + + + Gets the current balance of the agent + + + Gets the local ID of the prim the agent is sitting on, + zero if the avatar is not currently sitting + + + Gets the of the agents active group. + + + Gets the Agents powers in the currently active group + + + Current status message for teleporting + + + Current position of the agent as a relative offset from + the simulator, or the parent object if we are sitting on something + + + Current rotation of the agent as a relative rotation from + the simulator, or the parent object if we are sitting on something + + + Current position of the agent in the simulator + + - Constructor, setup callbacks for packets related to our avatar + A representing the agents current rotation - A reference to the Class + + + Returns the global grid position of the avatar + + + Raises the ChatFromSimulator event + A ChatEventArgs object containing the + data returned from the data server + + + Raises the ScriptDialog event + A SctriptDialogEventArgs object containing the + data returned from the data server + + + Raises the ScriptQuestion event + A ScriptQuestionEventArgs object containing the + data returned from the data server + + + Raises the LoadURL event + A LoadUrlEventArgs object containing the + data returned from the data server + + + Raises the MoneyBalance event + A BalanceEventArgs object containing the + data returned from the data server + + + Raises the MoneyBalanceReply event + A MoneyBalanceReplyEventArgs object containing the + data returned from the data server + + + Raises the IM event + A InstantMessageEventArgs object containing the + data returned from the data server + + + Raises the TeleportProgress event + A TeleportEventArgs object containing the + data returned from the data server + + + Raises the AgentDataReply event + A AgentDataReplyEventArgs object containing the + data returned from the data server + + + Raises the AnimationsChanged event + A AnimationsChangedEventArgs object containing the + data returned from the data server + + + Raises the MeanCollision event + A MeanCollisionEventArgs object containing the + data returned from the data server + + + Raises the RegionCrossed event + A RegionCrossedEventArgs object containing the + data returned from the data server + + + Raises the GroupChatJoined event + A GroupChatJoinedEventArgs object containing the + data returned from the data server + + + Raises the AlertMessage event + A AlertMessageEventArgs object containing the + data returned from the data server + + + Raises the ScriptControlChange event + A ScriptControlEventArgs object containing the + data returned from the data server + + + Raises the CameraConstraint event + A CameraConstraintEventArgs object containing the + data returned from the data server + + + Raises the ScriptSensorReply event + A ScriptSensorReplyEventArgs object containing the + data returned from the data server + + + Raises the AvatarSitResponse event + A AvatarSitResponseEventArgs object containing the + data returned from the data server + + + Raises the ChatSessionMemberAdded event + A ChatSessionMemberAddedEventArgs object containing the + data returned from the data server + + + Raises the ChatSessionMemberLeft event + A ChatSessionMemberLeftEventArgs object containing the + data returned from the data server Send a text message from the Agent to the Simulator - A containing the message + A containing the message The channel to send the message on, 0 is the public channel. Channels above 0 can be used however only scripts listening on the specified channel will see the message Denotes the type of message being sent, shout, whisper, etc. @@ -10136,15 +1723,15 @@ Send an Instant Message to another Avatar - The recipients - A containing the message to send + The recipients + A containing the message to send Send an Instant Message to an existing group chat or conference chat - The recipients - A containing the message to send + The recipients + A containing the message to send IM session ID (to differentiate between IM windows) @@ -10176,7 +1763,8 @@ Send an Instant Message to a group - of the group to send message to + + of the group to send message to Text Message being sent. @@ -10184,84 +1772,96 @@ Send an Instant Message to a group the agent is a member of The name this IM will show up as being from - of the group to send message to + + of the group to send message to Text message being sent Send a request to join a group chat session - of Group to leave + + of Group to leave Exit a group chat session. This will stop further Group chat messages from being sent until session is rejoined. - of Group chat session to leave + + of Group chat session to leave - Reply to script dialog questions. + Reply to script dialog questions. Channel initial request came on Index of button you're "clicking" Label of button you're "clicking" - of Object that sent the dialog request - + + of Object that sent the dialog request + Accept invite for to a chatterbox session - of session to accept invite to + + of session to accept invite to Start a friends conference - List of UUIDs to start a conference with - the temportary session ID returned in the callback> + + List of UUIDs to start a conference with + the temportary session ID returned in the callback> Start a particle stream between an agent and an object - Key of the source agent - Key of the target object - - The type from the enum - A unique for this effect + + Key of the source agent + + Key of the target object + + + The type from the enum + A unique for this effect Start a particle stream between an agent and an object - Key of the source agent - Key of the target object - A representing the beams offset from the source - A which sets the avatars lookat animation - of the Effect + + Key of the source agent + + Key of the target object + A representing the beams offset from the source + A which sets the avatars lookat animation + + of the Effect - Create a particle beam between an avatar and an primitive + Create a particle beam between an avatar and an primitive The ID of source avatar The ID of the target primitive global offset - A object containing the combined red, green, blue and alpha + A object containing the combined red, green, blue and alpha color values of particle beam a float representing the duration the parcicle beam will last A Unique ID for the beam - + - Create a particle swirl around a target position using a packet + Create a particle swirl around a target position using a packet global offset - A object containing the combined red, green, blue and alpha + A object containing the combined red, green, blue and alpha color values of particle beam a float representing the duration the parcicle beam will last A Unique ID for the beam @@ -10270,12 +1870,13 @@ Sends a request to sit on the specified object - of the object to sit on + + of the object to sit on Sit at offset - Follows a call to to actually sit on the object + Follows a call to to actually sit on the object @@ -10342,14 +1943,15 @@ Grabs an object an unsigned integer of the objects ID within the simulator - + Overload: Grab a simulated object an unsigned integer of the objects ID within the simulator - + + The texture coordinates to grab The surface coordinates to grab The face of the position to grab @@ -10362,16 +1964,19 @@ Drag an object - of the object to drag + + of the object to drag Drag target in region coordinates Overload: Drag an object - of the object to drag + + of the object to drag Drag target in region coordinates - + + The texture coordinates to grab The surface coordinates to grab The face of the position to grab @@ -10385,9 +1990,9 @@ Release a grabbed object The Objects Simulator Local ID - - - + + + @@ -10407,7 +2012,7 @@ Touches an object an unsigned integer of the objects ID within the simulator - + @@ -10434,7 +2039,7 @@ Give L$ to an object - object to give money to + object to give money to amount of L$ to give name of object @@ -10442,14 +2047,14 @@ Give L$ to a group - group to give money to + group to give money to amount of L$ to give Give L$ to a group - group to give money to + group to give money to amount of L$ to give description of transaction @@ -10479,33 +2084,33 @@ Plays a gesture - Asset of the gesture + Asset of the gesture Mark gesture active - Inventory of the gesture - Asset of the gesture + Inventory of the gesture + Asset of the gesture Mark gesture inactive - Inventory of the gesture + Inventory of the gesture Send an AgentAnimation packet that toggles a single animation on - The of the animation to start playing + The of the animation to start playing Whether to ensure delivery of this packet or not Send an AgentAnimation packet that toggles a single animation off - The of a + The of a currently playing animation to stop playing Whether to ensure delivery of this packet or not @@ -10513,7 +2118,7 @@ Send an AgentAnimation packet that will toggle animations on or off - A list of animation s, and whether to + A list of animation s, and whether to turn that animation on or off Whether to ensure delivery of this packet or not @@ -10527,7 +2132,8 @@ Teleport agent to a landmark - of the landmark to teleport agent to + + of the landmark to teleport agent to true on success, false on failure @@ -10556,7 +2162,8 @@ Teleport agent to another region handle of region to teleport agent to - position in destination sim to teleport to + + position in destination sim to teleport to true on success, false on failure This call is blocking @@ -10565,8 +2172,10 @@ Teleport agent to another region handle of region to teleport agent to - position in destination sim to teleport to - direction in destination sim agent will look at + + position in destination sim to teleport to + + direction in destination sim agent will look at true on success, false on failure This call is blocking @@ -10575,55 +2184,61 @@ Request teleport to a another simulator handle of region to teleport agent to - position in destination sim to teleport to + + position in destination sim to teleport to Request teleport to a another simulator handle of region to teleport agent to - position in destination sim to teleport to - direction in destination sim agent will look at + + position in destination sim to teleport to + + direction in destination sim agent will look at Teleport agent to a landmark - of the landmark to teleport agent to + + of the landmark to teleport agent to Send a teleport lure to another avatar with default "Join me in ..." invitation message - target avatars to lure + target avatars to lure Send a teleport lure to another avatar with custom invitation message - target avatars to lure + target avatars to lure custom message to send with invitation - Respond to a teleport lure by either accepting it and initiating + Respond to a teleport lure by either accepting it and initiating the teleport, or denying it - of the avatar sending the lure + + of the avatar sending the lure true to accept the lure, false to decline it Update agent profile - struct containing updated + + struct containing updated profile information Update agents profile interests - selection of interests from struct + selection of interests from struct @@ -10642,7 +2257,7 @@ Sets home location to agents current position - will fire an AlertMessage () with + will fire an AlertMessage () with success or failure message @@ -10650,16 +2265,21 @@ Move an agent in to a simulator. This packet is the last packet needed to complete the transition in to a new simulator - Object + + Object Reply to script permissions request - Object - of the itemID requesting permissions - of the taskID requesting permissions - list of permissions to allow + + Object + + of the itemID requesting permissions + + of the taskID requesting permissions + + list of permissions to allow @@ -10746,8 +2366,8 @@ - Take an incoming Chat packet, auto-parse, and if OnChat is defined call - that with the appropriate arguments. + Take an incoming Chat packet, auto-parse, and if OnChat is defined call + that with the appropriate arguments. The sender The EventArgs object containing the packet data @@ -10841,7 +2461,7 @@ The message key the IMessage object containing the deserialized data sent from the simulator - The which originated the packet + The which originated the packet Process an incoming packet and raise the appropriate events @@ -10855,23 +2475,28 @@ The capability Key IMessage object containing decoded data from OSD - + + Response from request to join a group chat - + + IMessage object containing decoded data from OSD - + + Someone joined or left group chat - + + IMessage object containing decoded data from OSD - + + @@ -10885,8 +2510,8 @@ Moderate a chat session - the of the session to moderate, for group chats this will be the groups UUID - the of the avatar to moderate + the of the session to moderate, for group chats this will be the groups UUID + the of the avatar to moderate Either "voice" to moderate users voice, or "text" to moderate users text session true to moderate (silence user), false to allow avatar to speak @@ -10910,535 +2535,8 @@ The sender The EventArgs object containing the packet data - - Raised when a scripted object or agent within range sends a public message - - - Raised when a scripted object sends a dialog box containing possible - options an agent can respond to - - - Raised when an object requests a change in the permissions an agent has permitted - - - Raised when a script requests an agent open the specified URL - - - Raised when an agents currency balance is updated - - - Raised when a transaction occurs involving currency such as a land purchase - - - Raised when an ImprovedInstantMessage packet is recieved from the simulator, this is used for everything from - private messaging to friendship offers. The Dialog field defines what type of message has arrived - - - Raised when an agent has requested a teleport to another location, or when responding to a lure. Raised multiple times - for each teleport indicating the progress of the request - - - Raised when a simulator sends agent specific information for our avatar. - - - Raised when our agents animation playlist changes - - - Raised when an object or avatar forcefully collides with our agent - - - Raised when our agent crosses a region border into another region - - - Raised when our agent succeeds or fails to join a group chat session - - - Raised when a simulator sends an urgent message usually indication the recent failure of - another action we have attempted to take such as an attempt to enter a parcel where we are denied access - - - Raised when a script attempts to take or release specified controls for our agent - - - Raised when the simulator detects our agent is trying to view something - beyond its limits - - - Raised when a script sensor reply is received from a simulator - - - Raised in response to a request - - - Raised when an avatar enters a group chat session we are participating in - - - Raised when an agent exits a group chat session we are participating in - - - Your (client) avatars - "client", "agent", and "avatar" all represent the same thing - - - Temporary assigned to this session, used for - verifying our identity in packets - - - Shared secret that is never sent over the wire - - - Your (client) avatar ID, local to the current region/sim - - - Where the avatar started at login. Can be "last", "home" - or a login - - - The access level of this agent, usually M or PG - - - The CollisionPlane of Agent - - - An representing the velocity of our agent - - - An representing the acceleration of our agent - - - A which specifies the angular speed, and axis about which an Avatar is rotating. - - - Position avatar client will goto when login to 'home' or during - teleport request to 'home' region. - - - LookAt point saved/restored with HomePosition - - - Avatar First Name (i.e. Philip) - - - Avatar Last Name (i.e. Linden) - - - Avatar Full Name (i.e. Philip Linden) - - - Gets the health of the agent - - - Gets the current balance of the agent - - - Gets the local ID of the prim the agent is sitting on, - zero if the avatar is not currently sitting - - - Gets the of the agents active group. - - - Gets the Agents powers in the currently active group - - - Current status message for teleporting - - - Current position of the agent as a relative offset from - the simulator, or the parent object if we are sitting on something - - - Current rotation of the agent as a relative rotation from - the simulator, or the parent object if we are sitting on something - - - Current position of the agent in the simulator - - - - A representing the agents current rotation - - - - Returns the global grid position of the avatar - - - - Called once attachment resource usage information has been collected - - Indicates if operation was successfull - Attachment resource usage information - - - - Agent movement and camera control - - Agent movement is controlled by setting specific - After the control flags are set, An AgentUpdate is required to update the simulator of the specified flags - This is most easily accomplished by setting one or more of the AgentMovement properties - - Movement of an avatar is always based on a compass direction, for example AtPos will move the - agent from West to East or forward on the X Axis, AtNeg will of course move agent from - East to West or backward on the X Axis, LeftPos will be South to North or forward on the Y Axis - The Z axis is Up, finer grained control of movements can be done using the Nudge properties - - - - Agent camera controls - - - Currently only used for hiding your group title - - - Action state of the avatar, which can currently be - typing and editing - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Timer for sending AgentUpdate packets - - - Default constructor - - - - Send an AgentUpdate with the camera set at the current agent - position and pointing towards the heading specified - - Camera rotation in radians - Whether to send the AgentUpdate reliable - or not - - - - Rotates the avatar body and camera toward a target position. - This will also anchor the camera position on the avatar - - Region coordinates to turn toward - - - - Send new AgentUpdate packet to update our current camera - position and rotation - - - - - Send new AgentUpdate packet to update our current camera - position and rotation - - Whether to require server acknowledgement - of this packet - - - - Send new AgentUpdate packet to update our current camera - position and rotation - - Whether to require server acknowledgement - of this packet - Simulator to send the update to - - - - Builds an AgentUpdate packet entirely from parameters. This - will not touch the state of Self.Movement or - Self.Movement.Camera in any way - - - - - - - - - - - - - - - Move agent positive along the X axis - - - Move agent negative along the X axis - - - Move agent positive along the Y axis - - - Move agent negative along the Y axis - - - Move agent positive along the Z axis - - - Move agent negative along the Z axis - - - - - - - - - - - - - - - - - - - - - - - - Causes simulator to make agent fly - - - Stop movement - - - Finish animation - - - Stand up from a sit - - - Tells simulator to sit agent on ground - - - Place agent into mouselook mode - - - Nudge agent positive along the X axis - - - Nudge agent negative along the X axis - - - Nudge agent positive along the Y axis - - - Nudge agent negative along the Y axis - - - Nudge agent positive along the Z axis - - - Nudge agent negative along the Z axis - - - - - - - - - Tell simulator to mark agent as away - - - - - - - - - - - - - - - - Returns "always run" value, or changes it by sending a SetAlwaysRunPacket - - - - The current value of the agent control flags - - - Gets or sets the interval in milliseconds at which - AgentUpdate packets are sent to the current simulator. Setting - this to a non-zero value will also enable the packet sending if - it was previously off, and setting it to zero will disable - - - Gets or sets whether AgentUpdate packets are sent to - the current simulator - - - Reset movement controls every time we send an update - - - - Camera controls for the agent, mostly a thin wrapper around - CoordinateFrame. This class is only responsible for state - tracking and math, it does not send any packets - - - - - - - The camera is a local frame of reference inside of - the larger grid space. This is where the math happens - - - - Default constructor - - - - - - - - - - - - - - - - - Used to specify movement actions for your agent - - - - Empty flag - - - Move Forward (SL Keybinding: W/Up Arrow) - - - Move Backward (SL Keybinding: S/Down Arrow) - - - Move Left (SL Keybinding: Shift-(A/Left Arrow)) - - - Move Right (SL Keybinding: Shift-(D/Right Arrow)) - - - Not Flying: Jump/Flying: Move Up (SL Keybinding: E) - - - Not Flying: Croutch/Flying: Move Down (SL Keybinding: C) - - - Unused - - - Unused - - - Unused - - - Unused - - - ORed with AGENT_CONTROL_AT_* if the keyboard is being used - - - ORed with AGENT_CONTROL_LEFT_* if the keyboard is being used - - - ORed with AGENT_CONTROL_UP_* if the keyboard is being used - - - Fly - - - - - - Finish our current animation - - - Stand up from the ground or a prim seat - - - Sit on the ground at our current location - - - Whether mouselook is currently enabled - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - - - - - - - Set when the avatar is idled or set to away. Note that the away animation is - activated separately from setting this flag - - - - - - - - - - - - - - @@ -11557,7 +2655,7 @@ Get the permissions being requested - Contains the data sent when a primitive sends a request + Contains the data sent when a primitive sends a request to an agent to open the specified URL @@ -11620,7 +2718,7 @@ - Contains the transaction summary when an item is purchased, + Contains the transaction summary when an item is purchased, money is given, or land is purchased @@ -11865,7 +2963,7 @@ Get the velocity of the primitive sending the sensor - Contains the response data returned from the simulator in response to a + Contains the response data returned from the simulator in response to a Construct a new instance of the AvatarSitResponseEventArgs object @@ -11923,9894 +3021,72 @@ Get the ID of the agent that left - + - Starts a thread that keeps the daemon running + Throttles the network traffic for various different traffic types. + Access this class through GridClient.Throttle - - - + - Stops the daemon and the thread keeping it running + Default constructor, uses a default high total of 1500 KBps (1536000) - + - + Constructor that decodes an existing AgentThrottle packet in to + individual values - - - + Reference to the throttle data in an AgentThrottle + packet + Offset position to start reading at in the + throttle data + This is generally not needed in clients as the server will + never send a throttle packet to the client - - - This is used to initialize and stop the Connector as a whole. The Connector - Create call must be completed successfully before any other requests are made - (typically during application initialization). The shutdown should be called - when the application is shutting down to gracefully release resources - - A string value indicting the Application name - URL for the management server - LoggingSettings - - - - - - Shutdown Connector -- Should be called when the application is shutting down - to gracefully release resources - - Handle returned from successful Connector ‘create’ request - - - - Mute or unmute the microphone - - Handle returned from successful Connector ‘create’ request - true (mute) or false (unmute) - - - - Mute or unmute the speaker - - Handle returned from successful Connector ‘create’ request - true (mute) or false (unmute) - - - - Set microphone volume - - Handle returned from successful Connector ‘create’ request - The level of the audio, a number between -100 and 100 where - 0 represents ‘normal’ speaking volume - - - - Set local speaker volume - - Handle returned from successful Connector ‘create’ request - The level of the audio, a number between -100 and 100 where - 0 represents ‘normal’ speaking volume - - - - Create a Session - Sessions typically represent a connection to a media session with one or more - participants. This is used to generate an ‘outbound’ call to another user or - channel. The specifics depend on the media types involved. A session handle is - required to control the local user functions within the session (or remote - users if the current account has rights to do so). Currently creating a - session automatically connects to the audio media, there is no need to call - Session.Connect at this time, this is reserved for future use. - - Handle returned from successful Connector ‘create’ request - This is the URI of the terminating point of the session (ie who/what is being called) - This is the display name of the entity being called (user or channel) - Only needs to be supplied when the target URI is password protected - This indicates the format of the password as passed in. This can either be - “ClearText” or “SHA1UserName”. If this element does not exist, it is assumed to be “ClearText”. If it is - “SHA1UserName”, the password as passed in is the SHA1 hash of the password and username concatenated together, - then base64 encoded, with the final “=” character stripped off. - - - - - - - Used to accept a call - - SessionHandle such as received from SessionNewEvent - "default" - - - - - This command is used to start the audio render process, which will then play - the passed in file through the selected audio render device. This command - should not be issued if the user is on a call. - - The fully qualified path to the sound file. - True if the file is to be played continuously and false if it is should be played once. - - - - - This command is used to stop the audio render process. - - The fully qualified path to the sound file issued in the start render command. - - - - - This is used to ‘end’ an established session (i.e. hang-up or disconnect). - - Handle returned from successful Session ‘create’ request or a SessionNewEvent - - - - - Set the combined speaking and listening position in 3D space. - - Handle returned from successful Session ‘create’ request or a SessionNewEvent - Speaking position - Listening position - - - - - Set User Volume for a particular user. Does not affect how other users hear that user. - - Handle returned from successful Session ‘create’ request or a SessionNewEvent - - The level of the audio, a number between -100 and 100 where 0 represents ‘normal’ speaking volume - - - - - This is used to get a list of audio devices that can be used for capture (input) of voice. - - - - - - This is used to get a list of audio devices that can be used for render (playback) of voice. - - - - - This command is used to select the render device. - - The name of the device as returned by the Aux.GetRenderDevices command. - - - - This command is used to select the capture device. - - The name of the device as returned by the Aux.GetCaptureDevices command. - - - - This command is used to start the audio capture process which will cause - AuxAudioProperty Events to be raised. These events can be used to display a - microphone VU meter for the currently selected capture device. This command - should not be issued if the user is on a call. - - (unused but required) - - - - - This command is used to stop the audio capture process. - - - - - - This command is used to set the mic volume while in the audio tuning process. - Once an acceptable mic level is attained, the application must issue a - connector set mic volume command to have that level be used while on voice - calls. - - the microphone volume (-100 to 100 inclusive) - - - - - This command is used to set the speaker volume while in the audio tuning - process. Once an acceptable speaker level is attained, the application must - issue a connector set speaker volume command to have that level be used while - on voice calls. - - the speaker volume (-100 to 100 inclusive) - - - - - Start up the Voice service. - - - - - Handle miscellaneous request status - - - - ///If something goes wrong, we log it. - - - - Cleanup oject resources - - - - - Request voice cap when changing regions - - - - - Handle a change in session state - - - - - Close a voice session - - - - - - Locate a Session context from its handle - - Creates the session context if it does not exist. - - - - Handle completion of main voice cap request. - - - - - - - - Daemon has started so connect to it. - - - - - The daemon TCP connection is open. - - - - - Handle creation of the Connector. - - - - - Handle response to audio output device query - - - - - Handle response to audio input device query - - - - - Set voice channel for new parcel - - - - - - Request info from a parcel capability Uri. - - - - - - Receive parcel voice cap - - - - - - - - Tell Vivox where we are standing - - This has to be called when we move or turn. - - - - Start and stop updating out position. - - - - - - This is used to login a specific user account(s). It may only be called after - Connector initialization has completed successfully - - Handle returned from successful Connector ‘create’ request - User's account name - User's account password - Values may be “AutoAnswer” or “VerifyAnswer” - "" - This is an integer that specifies how often - the daemon will send participant property events while in a channel. If this is not set - the default will be “on state change”, which means that the events will be sent when - the participant starts talking, stops talking, is muted, is unmuted. - The valid values are: - 0 – Never - 5 – 10 times per second - 10 – 5 times per second - 50 – 1 time per second - 100 – on participant state change (this is the default) - false - - - - - This is used to logout a user session. It should only be called with a valid AccountHandle. - - Handle returned from successful Connector ‘login’ request - - - - - List of audio input devices - - - - - List of audio output devices - - - - - Set audio test mode - - - - - Event for most mundane request reposnses. - - - - Response to Connector.Create request - - - Response to Aux.GetCaptureDevices request - - - Response to Aux.GetRenderDevices request - - - Audio Properties Events are sent after audio capture is started. - These events are used to display a microphone VU meter - - - Response to Account.Login request - - - This event message is sent whenever the login state of the - particular Account has transitioned from one value to another - - - Enable logging - - - The folder where any logs will be created - - - This will be prepended to beginning of each log file - - - The suffix or extension to be appended to each log file - - - - 0: NONE - No logging - 1: ERROR - Log errors only - 2: WARNING - Log errors and warnings - 3: INFO - Log errors, warnings and info - 4: DEBUG - Log errors, warnings, info and debug - - - - - Constructor for default logging settings - - - - Audio Properties Events are sent after audio capture is started. These events are used to display a microphone VU meter - - - - - - - - - - - - - - - - - - Thrown when a packet could not be successfully deserialized - - - - - Default constructor - - - - - Constructor that takes an additional error message - - An error message to attach to this exception - - - - The header of a message template packet. Holds packet flags, sequence - number, packet ID, and any ACKs that will be appended at the end of - the packet - - - - - Convert the AckList to a byte array, used for packet serializing - - Reference to the target byte array - Beginning position to start writing to in the byte - array, will be updated with the ending position of the ACK list - - - - - - - - - - - - - - - - - - - - - A block of data in a packet. Packets are composed of one or more blocks, - each block containing one or more fields - - - - - Create a block from a byte array - - Byte array containing the serialized block - Starting position of the block in the byte array. - This will point to the data after the end of the block when the - call returns - - - - Serialize this block into a byte array - - Byte array to serialize this block into - Starting position in the byte array to serialize to. - This will point to the position directly after the end of the - serialized block when the call returns - - - Current length of the data in this packet - - - A generic value, not an actual packet type - - - - Attempts to convert an LLSD structure to a known Packet type - - Event name, this must match an actual - packet name for a Packet to be successfully built - LLSD to convert to a Packet - A Packet on success, otherwise null - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Avatar group management - - - - Key of Group Member - - - Total land contribution - - - Online status information - - - Abilities that the Group Member has - - - Current group title - - - Is a group owner - - - - Role manager for a group - - - - Key of the group - - - Key of Role - - - Name of Role - - - Group Title associated with Role - - - Description of Role - - - Abilities Associated with Role - - - Returns the role's title - The role's title - - - - Class to represent Group Title - - - - Key of the group - - - ID of the role title belongs to - - - Group Title - - - Whether title is Active - - - Returns group title - - - - Represents a group on the grid - - - - Key of Group - - - Key of Group Insignia - - - Key of Group Founder - - - Key of Group Role for Owners - - - Name of Group - - - Text of Group Charter - - - Title of "everyone" role - - - Is the group open for enrolement to everyone - - - Will group show up in search - - - - - - - - - - - - Is the group Mature - - - Cost of group membership - - - - - - - - - The total number of current members this group has - - - The number of roles this group has configured - - - Show this group in agent's profile - - - Returns the name of the group - A string containing the name of the group - - - - A group Vote - - - - Key of Avatar who created Vote - - - Text of the Vote proposal - - - Total number of votes - - - - A group proposal - - - - The Text of the proposal - - - The minimum number of members that must vote before proposal passes or failes - - - The required ration of yes/no votes required for vote to pass - The three options are Simple Majority, 2/3 Majority, and Unanimous - TODO: this should be an enum - - - The duration in days votes are accepted - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Struct representing a group notice - - - - - - - - - - - - - - - - - - - - - - - Struct representing a group notice list entry - - - - Notice ID - - - Creation timestamp of notice - - - Agent name who created notice - - - Notice subject - - - Is there an attachment? - - - Attachment Type - - - - Struct representing a member of a group chat session and their settings - - - - The of the Avatar - - - True if user has voice chat enabled - - - True of Avatar has moderator abilities - - - True if a moderator has muted this avatars chat - - - True if a moderator has muted this avatars voice - - - - Role update flags - - - - - - - - - - - - - - - - - - - - - - - - - Can send invitations to groups default role - - - Can eject members from group - - - Can toggle 'Open Enrollment' and change 'Signup fee' - - - Member is visible in the public member list - - - Can create new roles - - - Can delete existing roles - - - Can change Role names, titles and descriptions - - - Can assign other members to assigners role - - - Can assign other members to any role - - - Can remove members from roles - - - Can assign and remove abilities in roles - - - Can change group Charter, Insignia, 'Publish on the web' and which - members are publicly visible in group member listings - - - Can buy land or deed land to group - - - Can abandon group owned land to Governor Linden on mainland, or Estate owner for - private estates - - - Can set land for-sale information on group owned parcels - - - Can subdivide and join parcels - - - Can join group chat sessions - - - Can use voice chat in Group Chat sessions - - - Can moderate group chat sessions - - - Can toggle "Show in Find Places" and set search category - - - Can change parcel name, description, and 'Publish on web' settings - - - Can set the landing point and teleport routing on group land - - - Can change music and media settings - - - Can toggle 'Edit Terrain' option in Land settings - - - Can toggle various About Land > Options settings - - - Can always terraform land, even if parcel settings have it turned off - - - Can always fly while over group owned land - - - Can always rez objects on group owned land - - - Can always create landmarks for group owned parcels - - - Can set home location on any group owned parcel - - - Can modify public access settings for group owned parcels - - - Can manager parcel ban lists on group owned land - - - Can manage pass list sales information - - - Can eject and freeze other avatars on group owned land - - - Can return objects set to group - - - Can return non-group owned/set objects - - - Can return group owned objects - - - Can landscape using Linden plants - - - Can deed objects to group - - - Can move group owned objects - - - Can set group owned objects for-sale - - - Pay group liabilities and receive group dividends - - - Can send group notices - - - Can receive group notices - - - Can create group proposals - - - Can vote on group proposals - - - - Handles all network traffic related to reading and writing group - information - - - - The event subscribers. null if no subcribers - - - Raises the CurrentGroups event - A CurrentGroupsEventArgs object containing the - data sent from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupNamesReply event - A GroupNamesEventArgs object containing the - data response from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupProfile event - An GroupProfileEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupMembers event - A GroupMembersEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupRolesDataReply event - A GroupRolesDataReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupRoleMembersReply event - A GroupRolesRoleMembersReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupTitlesReply event - A GroupTitlesReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupAccountSummary event - A GroupAccountSummaryReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupCreated event - An GroupCreatedEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupJoined event - A GroupOperationEventArgs object containing the - result of the operation returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupLeft event - A GroupOperationEventArgs object containing the - result of the operation returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupDropped event - An GroupDroppedEventArgs object containing the - the group your agent left - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupMemberEjected event - An GroupMemberEjectedEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupNoticesListReply event - An GroupNoticesListReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupInvitation event - An GroupInvitationEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - A reference to the current instance - - - Currently-active group members requests - - - Currently-active group roles requests - - - Currently-active group role-member requests - - - Dictionary keeping group members while request is in progress - - - Dictionary keeping mebmer/role mapping while request is in progress - - - Dictionary keeping GroupRole information while request is in progress - - - Caches group name lookups - - - - Construct a new instance of the GroupManager class - - A reference to the current instance - - - - Request a current list of groups the avatar is a member of. - - CAPS Event Queue must be running for this to work since the results - come across CAPS. - - - - Lookup name of group based on groupID - - groupID of group to lookup name for. - - - - Request lookup of multiple group names - - List of group IDs to request. - - - Lookup group profile data such as name, enrollment, founder, logo, etc - Subscribe to OnGroupProfile event to receive the results. - group ID (UUID) - - - Request a list of group members. - Subscribe to OnGroupMembers event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache - - - Request group roles - Subscribe to OnGroupRoles event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache - - - Request members (members,role) role mapping for a group. - Subscribe to OnGroupRolesMembers event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache - - - Request a groups Titles - Subscribe to OnGroupTitles event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache - - - Begin to get the group account summary - Subscribe to the OnGroupAccountSummary event to receive the results. - group ID (UUID) - How long of an interval - Which interval (0 for current, 1 for last) - - - Invites a user to a group - The group to invite to - A list of roles to invite a person to - Key of person to invite - - - Set a group as the current active group - group ID (UUID) - - - Change the role that determines your active title - Group ID to use - Role ID to change to - - - Set this avatar's tier contribution - Group ID to change tier in - amount of tier to donate - - - - Save wheather agent wants to accept group notices and list this group in their profile - - Group - Accept notices from this group - List this group in the profile - - - Request to join a group - Subscribe to OnGroupJoined event for confirmation. - group ID (UUID) to join. - - - - Request to create a new group. If the group is successfully - created, L$100 will automatically be deducted - - Subscribe to OnGroupCreated event to receive confirmation. - Group struct containing the new group info - - - Update a group's profile and other information - Groups ID (UUID) to update. - Group struct to update. - - - Eject a user from a group - Group ID to eject the user from - Avatar's key to eject - - - Update role information - Modified role to be updated - - - Create a new group role - Group ID to update - Role to create - - - Delete a group role - Group ID to update - Role to delete - - - Remove an avatar from a role - Group ID to update - Role ID to be removed from - Avatar's Key to remove - - - Assign an avatar to a role - Group ID to update - Role ID to assign to - Avatar's ID to assign to role - - - Request the group notices list - Group ID to fetch notices for - - - Request a group notice by key - ID of group notice - - - Send out a group notice - Group ID to update - GroupNotice structure containing notice data - - - Start a group proposal (vote) - The Group ID to send proposal to - GroupProposal structure containing the proposal - - - Request to leave a group - Subscribe to OnGroupLeft event to receive confirmation - The group to leave - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the simulator sends us data containing - our current group membership - - - Raised when the simulator responds to a RequestGroupName - or RequestGroupNames request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when a response to a RequestGroupAccountSummary is returned - by the simulator - - - Raised when a request to create a group is successful - - - Raised when a request to join a group either - fails or succeeds - - - Raised when a request to leave a group either - fails or succeeds - - - Raised when A group is removed from the group server - - - Raised when a request to eject a member from a group either - fails or succeeds - - - Raised when the simulator sends us group notices - - - - Raised when another agent invites our avatar to join a group - - - Contains the current groups your agent is a member of - - - Construct a new instance of the CurrentGroupsEventArgs class - The current groups your agent is a member of - - - Get the current groups your agent is a member of - - - A Dictionary of group names, where the Key is the groups ID and the value is the groups name - - - Construct a new instance of the GroupNamesEventArgs class - The Group names dictionary - - - Get the Group Names dictionary - - - Represents the members of a group - - - - Construct a new instance of the GroupMembersReplyEventArgs class - - The ID of the request - The ID of the group - The membership list of the group - - - Get the ID as returned by the request to correlate - this result set and the request - - - Get the ID of the group - - - Get the dictionary of members - - - Represents the roles associated with a group - - - Construct a new instance of the GroupRolesDataReplyEventArgs class - The ID as returned by the request to correlate - this result set and the request - The ID of the group - The dictionary containing the roles - - - Get the ID as returned by the request to correlate - this result set and the request - - - Get the ID of the group - - - Get the dictionary containing the roles - - - Represents the Role to Member mappings for a group - - - Construct a new instance of the GroupRolesMembersReplyEventArgs class - The ID as returned by the request to correlate - this result set and the request - The ID of the group - The member to roles map - - - Get the ID as returned by the request to correlate - this result set and the request - - - Get the ID of the group - - - Get the member to roles map - - - Represents the titles for a group - - - Construct a new instance of the GroupTitlesReplyEventArgs class - The ID as returned by the request to correlate - this result set and the request - The ID of the group - The titles - - - Get the ID as returned by the request to correlate - this result set and the request - - - Get the ID of the group - - - Get the titles - - - Represents the summary data for a group - - - Construct a new instance of the GroupAccountSummaryReplyEventArgs class - The ID of the group - The summary data - - - Get the ID of the group - - - Get the summary data - - - A response to a group create request - - - Construct a new instance of the GroupCreatedReplyEventArgs class - The ID of the group - the success or faulure of the request - A string containing additional information - - - Get the ID of the group - - - true of the group was created successfully - - - A string containing the message - - - Represents a response to a request - - - Construct a new instance of the GroupOperationEventArgs class - The ID of the group - true of the request was successful - - - Get the ID of the group - - - true of the request was successful - - - Represents your agent leaving a group - - - Construct a new instance of the GroupDroppedEventArgs class - The ID of the group - - - Get the ID of the group - - - Represents a list of active group notices - - - Construct a new instance of the GroupNoticesListReplyEventArgs class - The ID of the group - The list containing active notices - - - Get the ID of the group - - - Get the notices list - - - Represents the profile of a group - - - Construct a new instance of the GroupProfileEventArgs class - The group profile - - - Get the group profile - - - - Provides notification of a group invitation request sent by another Avatar - - The invitation is raised when another avatar makes an offer for our avatar - to join a group. - - - The ID of the Avatar sending the group invitation - - - The name of the Avatar sending the group invitation - - - A message containing the request information which includes - the name of the group, the groups charter and the fee to join details - - - The Simulator - - - Set to true to accept invitation, false to decline - - - - A Wrapper around openjpeg to encode and decode images to and from byte arrays - - - - TGA Header size - - - OpenJPEG is not threadsafe, so this object is used to lock - during calls into unmanaged code - - - - Encode a object into a byte array - - The object to encode - true to enable lossless conversion, only useful for small images ie: sculptmaps - A byte array containing the encoded Image object - - - - Encode a object into a byte array - - The object to encode - a byte array of the encoded image - - - - Decode JPEG2000 data to an and - - - JPEG2000 encoded data - ManagedImage object to decode to - Image object to decode to - True if the decode succeeds, otherwise false - - - - - - - - - - - - - - - - - - - - - Encode a object into a byte array - - The source object to encode - true to enable lossless decoding - A byte array containing the source Bitmap object - - - - Defines the beginning and ending file positions of a layer in an - LRCP-progression JPEG2000 file - - - - - This structure is used to marshal both encoded and decoded images. - MUST MATCH THE STRUCT IN dotnet.h! - - - - - Information about a single packet in a JPEG2000 stream - - - - Packet start position - - - Packet header end position - - - Packet end position - - - - Represents a Landmark with RegionID and Position vector - - - - UUID of the Landmark target region - - - Local position of the target - - - Construct an Asset of type Landmark - - - - Construct an Asset object of type Landmark - - A unique specific to this asset - A byte array containing the raw asset data - - - - Encode the raw contents of a string with the specific Landmark format - - - - - Decode the raw asset data, populating the RegionID and Position - - true if the AssetData was successfully decoded to a UUID and Vector - - - Override the base classes AssetType - - - - Represents an that can be worn on an avatar - such as a Shirt, Pants, etc. - - - - Initializes a new instance of an AssetScriptBinary object - - - Initializes a new instance of an AssetScriptBinary object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - Override the base classes AssetType - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The ObservableDictionary class is used for storing key/value pairs. It has methods for firing - events to subscribers when items are added, removed, or changed. - - Key - Value - - - - A dictionary of callbacks to fire when specified action occurs - - - - - Register a callback to be fired when an action occurs - - The action - The callback to fire - - - - Unregister a callback - - The action - The callback to fire - - - - - - - - - - Internal dictionary that this class wraps around. Do not - modify or enumerate the contents of this dictionary without locking - - - - Initializes a new instance of the Class - with the specified key/value, has the default initial capacity. - - - - // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value. - public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(); - - - - - - Initializes a new instance of the Class - with the specified key/value, With its initial capacity specified. - - Initial size of dictionary - - - // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value, - // initially allocated room for 10 entries. - public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(10); - - - - - - Try to get entry from the with specified key - - Key to use for lookup - Value returned - if specified key exists, if not found - - - // find your avatar using the Simulator.ObjectsAvatars ObservableDictionary: - Avatar av; - if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) - Console.WriteLine("Found Avatar {0}", av.Name); - - - - - - - Finds the specified match. - - The match. - Matched value - - - // use a delegate to find a prim in the ObjectsPrimitives ObservableDictionary - // with the ID 95683496 - uint findID = 95683496; - Primitive findPrim = sim.ObjectsPrimitives.Find( - delegate(Primitive prim) { return prim.ID == findID; }); - - - - - Find All items in an - return matching items. - a containing found items. - - Find All prims within 20 meters and store them in a List - - int radius = 20; - List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( - delegate(Primitive prim) { - Vector3 pos = prim.Position; - return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); - } - ); - - - - - Find All items in an - return matching keys. - a containing found keys. - - Find All keys which also exist in another dictionary - - List<UUID> matches = myDict.FindAll( - delegate(UUID id) { - return myOtherDict.ContainsKey(id); - } - ); - - - - - Check if Key exists in Dictionary - Key to check for - if found, otherwise - - - Check if Value exists in Dictionary - Value to check for - if found, otherwise - - - - Adds the specified key to the dictionary, dictionary locking is not performed, - - - The key - The value - - - - Removes the specified key, dictionary locking is not performed - - The key. - if successful, otherwise - - - - Clear the contents of the dictionary - - - - - Enumerator for iterating dictionary entries - - - - - - Gets the number of Key/Value pairs contained in the - - - - - Indexer for the dictionary - - The key - The value - - - Describes tasks returned in LandStatReply - - - - Estate level administration and utilities - - - - Textures for each of the four terrain height levels - - - Upper/lower texture boundaries for each corner of the sim - - - - Constructor for EstateTools class - - - - - The event subscribers. null if no subcribers - - - Raises the TopCollidersReply event - A TopCollidersReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the TopScriptsReply event - A TopScriptsReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the EstateUsersReply event - A EstateUsersReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the EstateGroupsReply event - A EstateGroupsReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the EstateManagersReply event - A EstateManagersReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the EstateBansReply event - A EstateBansReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the EstateCovenantReply event - A EstateCovenantReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the EstateUpdateInfoReply event - A EstateUpdateInfoReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - - Requests estate information such as top scripts and colliders - - - - - - - - Requests estate settings, including estate manager and access/ban lists - - - Requests the "Top Scripts" list for the current region - - - Requests the "Top Colliders" list for the current region - - - - Set several estate specific configuration variables - - The Height of the waterlevel over the entire estate. Defaults to 20 - The maximum height change allowed above the baked terrain. Defaults to 4 - The minimum height change allowed below the baked terrain. Defaults to -4 - true to use - if True forces the sun position to the position in SunPosition - The current position of the sun on the estate, or when FixedSun is true the static position - the sun will remain. 6.0 = Sunrise, 30.0 = Sunset - - - - Request return of objects owned by specified avatar - - The Agents owning the primitives to return - specify the coverage and type of objects to be included in the return - true to perform return on entire estate - - - - - - - - - Used for setting and retrieving various estate panel settings - - EstateOwnerMessage Method field - List of parameters to include - - - - Kick an avatar from an estate - - Key of Agent to remove - - - - Ban an avatar from an estate - Key of Agent to remove - Ban user from this estate and all others owned by the estate owner - - - Unban an avatar from an estate - Key of Agent to remove - /// Unban user from this estate and all others owned by the estate owner - - - - Send a message dialog to everyone in an entire estate - - Message to send all users in the estate - - - - Send a message dialog to everyone in a simulator - - Message to send all users in the simulator - - - - Send an avatar back to their home location - - Key of avatar to send home - - - - Begin the region restart process - - - - - Cancels a region restart - - - - Estate panel "Region" tab settings - - - Estate panel "Debug" tab settings - - - Used for setting the region's terrain textures for its four height levels - - - - - - - Used for setting sim terrain texture heights - - - Requests the estate covenant - - - - Upload a terrain RAW file - - A byte array containing the encoded terrain data - The name of the file being uploaded - The Id of the transfer request - - - - Teleports all users home in current Estate - - - - - Remove estate manager - Key of Agent to Remove - removes manager to this estate and all others owned by the estate owner - - - - Add estate manager - Key of Agent to Add - Add agent as manager to this estate and all others owned by the estate owner - - - - Add's an agent to the estate Allowed list - Key of Agent to Add - Add agent as an allowed reisdent to All estates if true - - - - Removes an agent from the estate Allowed list - Key of Agent to Remove - Removes agent as an allowed reisdent from All estates if true - - - - - Add's a group to the estate Allowed list - Key of Group to Add - Add Group as an allowed group to All estates if true - - - - - Removes a group from the estate Allowed list - Key of Group to Remove - Removes Group as an allowed Group from All estates if true - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Used in the ReportType field of a LandStatRequest - - - Used by EstateOwnerMessage packets - - - Used by EstateOwnerMessage packets - - - - - - - - No flags set - - - Only return targets scripted objects - - - Only return targets objects if on others land - - - Returns target's scripted objects and objects on other parcels - - - Ground texture settings for each corner of the region - - - Used by GroundTextureHeightSettings - - - The high and low texture thresholds for each corner of the sim - - - Raised on LandStatReply when the report type is for "top colliders" - - - Construct a new instance of the TopCollidersReplyEventArgs class - The number of returned items in LandStatReply - Dictionary of Object UUIDs to tasks returned in LandStatReply - - - - The number of returned items in LandStatReply - - - - - A Dictionary of Object UUIDs to tasks returned in LandStatReply - - - - Raised on LandStatReply when the report type is for "top Scripts" - - - Construct a new instance of the TopScriptsReplyEventArgs class - The number of returned items in LandStatReply - Dictionary of Object UUIDs to tasks returned in LandStatReply - - - - The number of scripts returned in LandStatReply - - - - - A Dictionary of Object UUIDs to tasks returned in LandStatReply - - - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateBansReplyEventArgs class - The estate's identifier on the grid - The number of returned items in LandStatReply - User UUIDs banned - - - - The identifier of the estate - - - - - The number of returned itmes - - - - - List of UUIDs of Banned Users - - - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateUsersReplyEventArgs class - The estate's identifier on the grid - The number of users - Allowed users UUIDs - - - - The identifier of the estate - - - - - The number of returned items - - - - - List of UUIDs of Allowed Users - - - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateGroupsReplyEventArgs class - The estate's identifier on the grid - The number of Groups - Allowed Groups UUIDs - - - - The identifier of the estate - - - - - The number of returned items - - - - - List of UUIDs of Allowed Groups - - - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateManagersReplyEventArgs class - The estate's identifier on the grid - The number of Managers - Managers UUIDs - - - - The identifier of the estate - - - - - The number of returned items - - - - - List of UUIDs of the Estate's Managers - - - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateCovenantReplyEventArgs class - The Covenant ID - The timestamp - The estate's name - The Estate Owner's ID (can be a GroupID) - - - - The Covenant - - - - - The timestamp - - - - - The Estate name - - - - - The Estate Owner's ID (can be a GroupID) - - - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateUpdateInfoReplyEventArgs class - The estate's name - The Estate Owners ID (can be a GroupID) - The estate's identifier on the grid - - - - - The estate's name - - - - - The Estate Owner's ID (can be a GroupID) - - - - - The identifier of the estate on the grid - - - - - - - - Wrapper around a byte array that allows bit to be packed and unpacked - one at a time or by a variable amount. Useful for very tightly packed - data like LayerData packets - - - - - - - - Default constructor, initialize the bit packer / bit unpacker - with a byte array and starting position - - Byte array to pack bits in to or unpack from - Starting position in the byte array - - - - Pack a floating point value in to the data - - Floating point value to pack - - - - Pack part or all of an integer in to the data - - Integer containing the data to pack - Number of bits of the integer to pack - - - - Pack part or all of an unsigned integer in to the data - - Unsigned integer containing the data to pack - Number of bits of the integer to pack - - - - Pack a single bit in to the data - - Bit to pack - - - - - - - - - - - - - - - - - - - - - - - - - Unpacking a floating point value from the data - - Unpacked floating point value - - - - Unpack a variable number of bits from the data in to integer format - - Number of bits to unpack - An integer containing the unpacked bits - This function is only useful up to 32 bits - - - - Unpack a variable number of bits from the data in to unsigned - integer format - - Number of bits to unpack - An unsigned integer containing the unpacked bits - This function is only useful up to 32 bits - - - - Unpack a 16-bit signed integer - - 16-bit signed integer - - - - Unpack a 16-bit unsigned integer - - 16-bit unsigned integer - - - - Unpack a 32-bit signed integer - - 32-bit signed integer - - - - Unpack a 32-bit unsigned integer - - 32-bit unsigned integer - - - - - - - - - - Checks the instance back into the object pool - - - - - Returns an instance of the class that has been checked out of the Object Pool. - - - - - Creates a new instance of the ObjectPoolBase class. Initialize MUST be called - after using this constructor. - - - - - Creates a new instance of the ObjectPool Base class. - - The object pool is composed of segments, which - are allocated whenever the size of the pool is exceeded. The number of items - in a segment should be large enough that allocating a new segmeng is a rare - thing. For example, on a server that will have 10k people logged in at once, - the receive buffer object pool should have segment sizes of at least 1000 - byte arrays per segment. - - The minimun number of segments that may exist. - Perform a full GC.Collect whenever a segment is allocated, and then again after allocation to compact the heap. - The frequency which segments are checked to see if they're eligible for cleanup. - - - - Forces the segment cleanup algorithm to be run. This method is intended - primarly for use from the Unit Test libraries. - - - - - Responsible for allocate 1 instance of an object that will be stored in a segment. - - An instance of whatever objec the pool is pooling. - - - - Checks in an instance of T owned by the object pool. This method is only intended to be called - by the WrappedObject class. - - The segment from which the instance is checked out. - The instance of T to check back into the segment. - - - - Checks an instance of T from the pool. If the pool is not sufficient to - allow the checkout, a new segment is created. - - A WrappedObject around the instance of T. To check - the instance back into the segment, be sureto dispose the WrappedObject - when finished. - - - - The total number of segments created. Intended to be used by the Unit Tests. - - - - - The number of items that are in a segment. Items in a segment - are all allocated at the same time, and are hopefully close to - each other in the managed heap. - - - - - The minimum number of segments. When segments are reclaimed, - this number of segments will always be left alone. These - segments are allocated at startup. - - - - - The age a segment must be before it's eligible for cleanup. - This is used to prevent thrash, and typical values are in - the 5 minute range. - - - - - The frequence which the cleanup thread runs. This is typically - expected to be in the 5 minute range. - - - - = - - - Number of times we've received an unknown CAPS exception in series. - - - For exponential backoff on error. - - - - Represents a texture - - - - A object containing image data - - - - - - - - - Initializes a new instance of an AssetTexture object - - - - Initializes a new instance of an AssetTexture object - - A unique specific to this asset - A byte array containing the raw asset data - - - - Initializes a new instance of an AssetTexture object - - A object containing texture data - - - - Populates the byte array with a JPEG2000 - encoded image created from the data in - - - - - Decodes the JPEG2000 data in AssetData to the - object - - True if the decoding was successful, otherwise false - - - - Decodes the begin and end byte positions for each quality layer in - the image - - - - - Override the base classes AssetType - - - - A Name Value pair with additional settings, used in the protocol - primarily to transmit avatar names and active group in object packets - - - - - - - - - - - - - - - - - - - - Constructor that takes all the fields as parameters - - - - - - - - - - Constructor that takes a single line from a NameValue field - - - - - Type of the value - - - Unknown - - - String value - - - - - - - - - - - - - - - Deprecated - - - String value, but designated as an asset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Represents a single Voice Session to the Vivox service. - - - - - Close this session. - - - - - Look up an existing Participants in this session - - - - - - - Represents an Animation - - - - Default Constructor - - - - Construct an Asset object of type Animation - - A unique specific to this asset - A byte array containing the raw asset data - - - Override the base classes AssetType - - - - Constants for the archiving module - - - - - The location of the archive control file - - - - - Path for the assets held in an archive - - - - - Path for the prims file - - - - - Path for terrains. Technically these may be assets, but I think it's quite nice to split them out. - - - - - Path for region settings. - - - - - The character the separates the uuid from extension information in an archived asset filename - - - - - Extensions used for asset types in the archive - - - - - Represents an AssetScriptBinary object containing the - LSO compiled bytecode of an LSL script - - - - Initializes a new instance of an AssetScriptBinary object - - - Initializes a new instance of an AssetScriptBinary object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - - TODO: Encodes a scripts contents into a LSO Bytecode file - - - - - TODO: Decode LSO Bytecode into a string - - true - - - Override the base classes AssetType - - - - - - - - No report - - - Unknown report type - - - Bug report - - - Complaint report - - - Customer service report - - - - Bitflag field for ObjectUpdateCompressed data blocks, describing - which options are present for each object - - - - Unknown - - - Whether the object has a TreeSpecies - - - Whether the object has floating text ala llSetText - - - Whether the object has an active particle system - - - Whether the object has sound attached to it - - - Whether the object is attached to a root object or not - - - Whether the object has texture animation settings - - - Whether the object has an angular velocity - - - Whether the object has a name value pairs string - - - Whether the object has a Media URL set - - - - Specific Flags for MultipleObjectUpdate requests - - - - None - - - Change position of prims - - - Change rotation of prims - - - Change size of prims - - - Perform operation on link set - - - Scale prims uniformly, same as selecing ctrl+shift in the - viewer. Used in conjunction with Scale - - - - Special values in PayPriceReply. If the price is not one of these - literal value of the price should be use - - - - - Indicates that this pay option should be hidden - - - - - Indicates that this pay option should have the default value - - - - - Contains the variables sent in an object update packet for objects. - Used to track position and movement of prims and avatars - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Handles all network traffic related to prims and avatar positions and - movement. - - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ObjectProperties Event - A ObjectPropertiesEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ObjectPropertiesUpdated Event - A ObjectPropertiesUpdatedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ObjectPropertiesFamily Event - A ObjectPropertiesFamilyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarUpdate Event - A AvatarUpdateEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ObjectDataBlockUpdate Event - A ObjectDataBlockUpdateEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the KillObject Event - A KillObjectEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarSitChanged Event - A AvatarSitChangedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the PayPriceReply Event - A PayPriceReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - Reference to the GridClient object - - - Does periodic dead reckoning calculation to convert - velocity and acceleration to new positions for objects - - - - Construct a new instance of the ObjectManager class - - A reference to the instance - - - - Request information for a single object from a - you are currently connected to - - The the object is located - The Local ID of the object - - - - Request information for multiple objects contained in - the same simulator - - The the objects are located - An array containing the Local IDs of the objects - - - - Attempt to purchase an original object, a copy, or the contents of - an object - - The the object is located - The Local ID of the object - Whether the original, a copy, or the object - contents are on sale. This is used for verification, if the this - sale type is not valid for the object the purchase will fail - Price of the object. This is used for - verification, if it does not match the actual price the purchase - will fail - Group ID that will be associated with the new - purchase - Inventory folder UUID where the object or objects - purchased should be placed - - - BuyObject(Client.Network.CurrentSim, 500, SaleType.Copy, - 100, UUID.Zero, Client.Self.InventoryRootFolderUUID); - - - - - - Request prices that should be displayed in pay dialog. This will triggger the simulator - to send us back a PayPriceReply which can be handled by OnPayPriceReply event - - The the object is located - The ID of the object - The result is raised in the event - - - - Select a single object. This will cause the to send us - an which will raise the event - - The the object is located - The Local ID of the object - - - - - Select a single object. This will cause the to send us - an which will raise the event - - The the object is located - The Local ID of the object - if true, a call to is - made immediately following the request - - - - - Select multiple objects. This will cause the to send us - an which will raise the event - - The the objects are located - An array containing the Local IDs of the objects - Should objects be deselected immediately after selection - - - - - Select multiple objects. This will cause the to send us - an which will raise the event - - The the objects are located - An array containing the Local IDs of the objects - - - - - Update the properties of an object - - The the object is located - The Local ID of the object - true to turn the objects physical property on - true to turn the objects temporary property on - true to turn the objects phantom property on - true to turn the objects cast shadows property on - - - - Sets the sale properties of a single object - - The the object is located - The Local ID of the object - One of the options from the enum - The price of the object - - - - Sets the sale properties of multiple objects - - The the objects are located - An array containing the Local IDs of the objects - One of the options from the enum - The price of the object - - - - Deselect a single object - - The the object is located - The Local ID of the object - - - - Deselect multiple objects. - - The the objects are located - An array containing the Local IDs of the objects - - - - Perform a click action on an object - - The the object is located - The Local ID of the object - - - - Perform a click action (Grab) on a single object - - The the object is located - The Local ID of the object - The texture coordinates to touch - The surface coordinates to touch - The face of the position to touch - The region coordinates of the position to touch - The surface normal of the position to touch (A normal is a vector perpindicular to the surface) - The surface binormal of the position to touch (A binormal is a vector tangen to the surface - pointing along the U direction of the tangent space - - - - Create (rez) a new prim object in a simulator - - A reference to the object to place the object in - Data describing the prim object to rez - Group ID that this prim will be set to, or UUID.Zero if you - do not want the object to be associated with a specific group - An approximation of the position at which to rez the prim - Scale vector to size this prim - Rotation quaternion to rotate this prim - Due to the way client prim rezzing is done on the server, - the requested position for an object is only close to where the prim - actually ends up. If you desire exact placement you'll need to - follow up by moving the object after it has been created. This - function will not set textures, light and flexible data, or other - extended primitive properties - - - - Create (rez) a new prim object in a simulator - - A reference to the object to place the object in - Data describing the prim object to rez - Group ID that this prim will be set to, or UUID.Zero if you - do not want the object to be associated with a specific group - An approximation of the position at which to rez the prim - Scale vector to size this prim - Rotation quaternion to rotate this prim - Specify the - Due to the way client prim rezzing is done on the server, - the requested position for an object is only close to where the prim - actually ends up. If you desire exact placement you'll need to - follow up by moving the object after it has been created. This - function will not set textures, light and flexible data, or other - extended primitive properties - - - - Rez a Linden tree - - A reference to the object where the object resides - The size of the tree - The rotation of the tree - The position of the tree - The Type of tree - The of the group to set the tree to, - or UUID.Zero if no group is to be set - true to use the "new" Linden trees, false to use the old - - - - Rez grass and ground cover - - A reference to the object where the object resides - The size of the grass - The rotation of the grass - The position of the grass - The type of grass from the enum - The of the group to set the tree to, - or UUID.Zero if no group is to be set - - - - Set the textures to apply to the faces of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The texture data to apply - - - - Set the textures to apply to the faces of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The texture data to apply - A media URL (not used) - - - - Set the Light data on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A object containing the data to set - - - - Set the flexible data on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A object containing the data to set - - - - Set the sculptie texture and data on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A object containing the data to set - - - - Unset additional primitive parameters on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The extra parameters to set - - - - Link multiple prims into a linkset - - A reference to the object where the objects reside - An array which contains the IDs of the objects to link - The last object in the array will be the root object of the linkset TODO: Is this true? - - - - Delink/Unlink multiple prims from a linkset - - A reference to the object where the objects reside - An array which contains the IDs of the objects to delink - - - - Change the rotation of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new rotation of the object - - - - Set the name of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A string containing the new name of the object - - - - Set the name of multiple objects - - A reference to the object where the objects reside - An array which contains the IDs of the objects to change the name of - An array which contains the new names of the objects - - - - Set the description of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A string containing the new description of the object - - - - Set the descriptions of multiple objects - - A reference to the object where the objects reside - An array which contains the IDs of the objects to change the description of - An array which contains the new descriptions of the objects - - - - Attach an object to this avatar - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The point on the avatar the object will be attached - The rotation of the attached object - - - - Drop an attached object from this avatar - - A reference to the - object where the objects reside. This will always be the simulator the avatar is currently in - - The object's ID which is local to the simulator the object is in - - - - Detach an object from yourself - - A reference to the - object where the objects reside - - This will always be the simulator the avatar is currently in - - An array which contains the IDs of the objects to detach - - - - Change the position of an object, Will change position of entire linkset - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new position of the object - - - - Change the position of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new position of the object - if true, will change position of (this) child prim only, not entire linkset - - - - Change the Scale (size) of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new scale of the object - If true, will change scale of this prim only, not entire linkset - True to resize prims uniformly - - - - Change the Rotation of an object that is either a child or a whole linkset - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new scale of the object - If true, will change rotation of this prim only, not entire linkset - - - - Send a Multiple Object Update packet to change the size, scale or rotation of a primitive - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new rotation, size, or position of the target object - The flags from the Enum - - - - Deed an object (prim) to a group, Object must be shared with group which - can be accomplished with SetPermissions() - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The of the group to deed the object to - - - - Deed multiple objects (prims) to a group, Objects must be shared with group which - can be accomplished with SetPermissions() - - A reference to the object where the object resides - An array which contains the IDs of the objects to deed - The of the group to deed the object to - - - - Set the permissions on multiple objects - - A reference to the object where the objects reside - An array which contains the IDs of the objects to set the permissions on - The new Who mask to set - The new Permissions mark to set - TODO: What does this do? - - - - Request additional properties for an object - - A reference to the object where the object resides - - - - - Request additional properties for an object - - A reference to the object where the object resides - Absolute UUID of the object - Whether to require server acknowledgement of this request - - - - Set the ownership of a list of objects to the specified group - - A reference to the object where the objects reside - An array which contains the IDs of the objects to set the group id on - The Groups ID - - - - Update current URL of the previously set prim media - - UUID of the prim - Set current URL to this - Prim face number - Simulator in which prim is located - - - - Set object media - - UUID of the prim - Array the length of prims number of faces. Null on face indexes where there is - no media, on faces which contain the media - Simulatior in which prim is located - - - - Retrieve information about object media - - UUID of the primitive - Simulator where prim is located - Call this callback when done - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - A terse object update, used when a transformation matrix or - velocity/acceleration for an object changes but nothing else - (scale/position/rotation/acceleration/velocity) - - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - Setup construction data for a basic primitive shape - - Primitive shape to construct - Construction data that can be plugged into a - - - - - - - - - - - - - - - - - - - - Set the Shape data of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - Data describing the prim shape - - - - Set the Material data of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new material of the object - - - - - - - - - - - - - - - - - - - - - Raised when the simulator sends us data containing - A , Foliage or Attachment - - - - - Raised when the simulator sends us data containing - additional information - - - - - Raised when the simulator sends us data containing - Primitive.ObjectProperties for an object we are currently tracking - - - Raised when the simulator sends us data containing - additional and details - - - - Raised when the simulator sends us data containing - updated information for an - - - Raised when the simulator sends us data containing - and movement changes - - - Raised when the simulator sends us data containing - updates to an Objects DataBlock - - - Raised when the simulator informs us an - or is no longer within view - - - Raised when the simulator sends us data containing - updated sit information for our - - - Raised when the simulator sends us data containing - purchase price information for a - - - - Callback for getting object media data via CAP - - Indicates if the operation was succesfull - Object media version string - Array indexed on prim face of media entry data - - - Provides data for the event - The event occurs when the simulator sends - an containing a Primitive, Foliage or Attachment data - Note 1: The event will not be raised when the object is an Avatar - Note 2: It is possible for the to be - raised twice for the same object if for example the primitive moved to a new simulator, then returned to the current simulator or - if an Avatar crosses the border into a new simulator and returns to the current simulator - - - The following code example uses the , , and - properties to display new Primitives and Attachments on the window. - - // Subscribe to the event that gives us prim and foliage information - Client.Objects.ObjectUpdate += Objects_ObjectUpdate; - - - private void Objects_ObjectUpdate(object sender, PrimEventArgs e) - { - Console.WriteLine("Primitive {0} {1} in {2} is an attachment {3}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name, e.IsAttachment); - } - - - - - - - - - Construct a new instance of the PrimEventArgs class - - The simulator the object originated from - The Primitive - The simulator time dilation - The prim was not in the dictionary before this update - true if the primitive represents an attachment to an agent - - - Get the simulator the originated from - - - Get the details - - - true if the did not exist in the dictionary before this update (always true if object tracking has been disabled) - - - true if the is attached to an - - - Get the simulator Time Dilation - - - Provides data for the event - The event occurs when the simulator sends - an containing Avatar data - Note 1: The event will not be raised when the object is an Avatar - Note 2: It is possible for the to be - raised twice for the same avatar if for example the avatar moved to a new simulator, then returned to the current simulator - - - The following code example uses the property to make a request for the top picks - using the method in the class to display the names - of our own agents picks listings on the window. - - // subscribe to the AvatarUpdate event to get our information - Client.Objects.AvatarUpdate += Objects_AvatarUpdate; - Client.Avatars.AvatarPicksReply += Avatars_AvatarPicksReply; - - private void Objects_AvatarUpdate(object sender, AvatarUpdateEventArgs e) - { - // we only want our own data - if (e.Avatar.LocalID == Client.Self.LocalID) - { - // Unsubscribe from the avatar update event to prevent a loop - // where we continually request the picks every time we get an update for ourselves - Client.Objects.AvatarUpdate -= Objects_AvatarUpdate; - // make the top picks request through AvatarManager - Client.Avatars.RequestAvatarPicks(e.Avatar.ID); - } - } - - private void Avatars_AvatarPicksReply(object sender, AvatarPicksReplyEventArgs e) - { - // we'll unsubscribe from the AvatarPicksReply event since we now have the data - // we were looking for - Client.Avatars.AvatarPicksReply -= Avatars_AvatarPicksReply; - // loop through the dictionary and extract the names of the top picks from our profile - foreach (var pickName in e.Picks.Values) - { - Console.WriteLine(pickName); - } - } - - - - - - - - Construct a new instance of the AvatarUpdateEventArgs class - - The simulator the packet originated from - The data - The simulator time dilation - The avatar was not in the dictionary before this update - - - Get the simulator the object originated from - - - Get the data - - - Get the simulator time dilation - - - true if the did not exist in the dictionary before this update (always true if avatar tracking has been disabled) - - - Provides additional primitive data for the event - The event occurs when the simulator sends - an containing additional details for a Primitive, Foliage data or Attachment data - The event is also raised when a request is - made. - - - The following code example uses the , and - - properties to display new attachments and send a request for additional properties containing the name of the - attachment then display it on the window. - - // Subscribe to the event that provides additional primitive details - Client.Objects.ObjectProperties += Objects_ObjectProperties; - - // handle the properties data that arrives - private void Objects_ObjectProperties(object sender, ObjectPropertiesEventArgs e) - { - Console.WriteLine("Primitive Properties: {0} Name is {1}", e.Properties.ObjectID, e.Properties.Name); - } - - - - - - Construct a new instance of the ObjectPropertiesEventArgs class - - The simulator the object is located - The primitive Properties - - - Get the simulator the object is located - - - Get the primitive properties - - - Provides additional primitive data for the event - The event occurs when the simulator sends - an containing additional details for a Primitive or Foliage data that is currently - being tracked in the dictionary - The event is also raised when a request is - made and is enabled - - - - - Construct a new instance of the ObjectPropertiesUpdatedEvenrArgs class - - The simulator the object is located - The Primitive - The primitive Properties - - - Get the simulator the object is located - - - Get the primitive details - - - Get the primitive properties - - - Provides additional primitive data, permissions and sale info for the event - The event occurs when the simulator sends - an containing additional details for a Primitive, Foliage data or Attachment. This includes - Permissions, Sale info, and other basic details on an object - The event is also raised when a request is - made, the viewer equivalent is hovering the mouse cursor over an object - - - - Get the simulator the object is located - - - - - - - - - Provides primitive data containing updated location, velocity, rotation, textures for the event - The event occurs when the simulator sends updated location, velocity, rotation, etc - - - - Get the simulator the object is located - - - Get the primitive details - - - - - - - - - - - - - - Get the simulator the object is located - - - Get the primitive details - - - - - - - - - - - - - - - Provides notification when an Avatar, Object or Attachment is DeRezzed or moves out of the avatars view for the - event - - - Get the simulator the object is located - - - The LocalID of the object - - - - Provides updates sit position data - - - - Get the simulator the object is located - - - - - - - - - - - - - - - - - Get the simulator the object is located - - - - - - - - - - - - - Indicates if the operation was successful - - - - - Media version string - - - - - Array of media entries indexed by face number - - - - - - - - - - - - - - - - De-serialization constructor for the InventoryNode Class - - - - - Serialization handler for the InventoryNode Class - - - - - De-serialization handler for the InventoryNode Class - - - - - - - - - - - - - - - - - - - - - - - For inventory folder nodes specifies weather the folder needs to be - refreshed from the server - - - - - Main class to expose grid functionality to clients. All of the - classes needed for sending and receiving data are accessible through - this class. - - - - // Example minimum code required to instantiate class and - // connect to a simulator. - using System; - using System.Collections.Generic; - using System.Text; - using OpenMetaverse; - - namespace FirstBot - { - class Bot - { - public static GridClient Client; - static void Main(string[] args) - { - Client = new GridClient(); // instantiates the GridClient class - // to the global Client object - // Login to Simulator - Client.Network.Login("FirstName", "LastName", "Password", "FirstBot", "1.0"); - // Wait for a Keypress - Console.ReadLine(); - // Logout of simulator - Client.Network.Logout(); - } - } - } - - - - - Networking subsystem - - - Settings class including constant values and changeable - parameters for everything - - - Parcel (subdivided simulator lots) subsystem - - - Our own avatars subsystem - - - Other avatars subsystem - - - Estate subsystem - - - Friends list subsystem - - - Grid (aka simulator group) subsystem - - - Object subsystem - - - Group subsystem - - - Asset subsystem - - - Appearance subsystem - - - Inventory subsystem - - - Directory searches including classifieds, people, land - sales, etc - - - Handles land, wind, and cloud heightmaps - - - Handles sound-related networking - - - Throttling total bandwidth usage, or allocating bandwidth - for specific data stream types - - - - Default constructor - - - - - Return the full name of this instance - - Client avatars full name - - - - Class that handles the local asset cache - - - - - Default constructor - - A reference to the GridClient object - - - - Disposes cleanup timer - - - - - Only create timer when needed - - - - - Return bytes read from the local asset cache, null if it does not exist - - UUID of the asset we want to get - Raw bytes of the asset, or null on failure - - - - Returns ImageDownload object of the - image from the local image cache, null if it does not exist - - UUID of the image we want to get - ImageDownload object containing the image, or null on failure - - - - Constructs a file name of the cached asset - - UUID of the asset - String with the file name of the cahced asset - - - - Saves an asset to the local cache - - UUID of the asset - Raw bytes the asset consists of - Weather the operation was successfull - - - - Get the file name of the asset stored with gived UUID - - UUID of the asset - Null if we don't have that UUID cached on disk, file name if found in the cache folder - - - - Checks if the asset exists in the local cache - - UUID of the asset - True is the asset is stored in the cache, otherwise false - - - - Wipes out entire cache - - - - - Brings cache size to the 90% of the max size - - - - - Asynchronously brings cache size to the 90% of the max size - - - - - Adds up file sizes passes in a FileInfo array - - - - - Checks whether caching is enabled - - - - - Periodically prune the cache - - - - - Nicely formats file sizes - - Byte size we want to output - String with humanly readable file size - - - - Allows setting weather to periodicale prune the cache if it grows too big - Default is enabled, when caching is enabled - - - - - How long (in ms) between cache checks (default is 5 min.) - - - - - Helper class for sorting files by their last accessed time - - - - - Permissions for control of object media - - - - - Style of cotrols that shold be displayed to the user - - - - - Class representing media data for a single face - - - - Is display of the alternative image enabled - - - Should media auto loop - - - Shoule media be auto played - - - Auto scale media to prim face - - - Should viewer automatically zoom in on the face when clicked - - - Should viewer interpret first click as interaction with the media - or when false should the first click be treated as zoom in commadn - - - Style of controls viewer should display when - viewer media on this face - - - Starting URL for the media - - - Currently navigated URL - - - Media height in pixes - - - Media width in pixels - - - Who can controls the media - - - Who can interact with the media - - - Is URL whitelist enabled - - - Array of URLs that are whitelisted - - - - Serialize to OSD - - OSDMap with the serialized data - - - - Deserialize from OSD data - - Serialized OSD data - Deserialized object - - - - Class for controlling various system settings. - - Some values are readonly because they affect things that - happen when the GridClient object is initialized, so changing them at - runtime won't do any good. Non-readonly values may affect things that - happen at login or dynamically - - - Main grid login server - - - Beta grid login server - - - - InventoryManager requests inventory information on login, - GridClient initializes an Inventory store for main inventory. - - - - - InventoryManager requests library information on login, - GridClient initializes an Inventory store for the library. - - - - Number of milliseconds between sending pings to each sim - - - Number of milliseconds between sending camera updates - - - Number of milliseconds between updating the current - positions of moving, non-accelerating and non-colliding objects - - - Millisecond interval between ticks, where all ACKs are - sent out and the age of unACKed packets is checked - - - The initial size of the packet inbox, where packets are - stored before processing - - - Maximum size of packet that we want to send over the wire - - - The maximum value of a packet sequence number before it - rolls over back to one - - - The maximum size of the sequence number archive, used to - check for resent and/or duplicate packets - - - The relative directory where external resources are kept - - - Login server to connect to - - - IP Address the client will bind to - - - Use XML-RPC Login or LLSD Login, default is XML-RPC Login - - - Number of milliseconds before an asset transfer will time - out - - - Number of milliseconds before a teleport attempt will time - out - - - Number of milliseconds before NetworkManager.Logout() will - time out - - - Number of milliseconds before a CAPS call will time out - Setting this too low will cause web requests time out and - possibly retry repeatedly - - - Number of milliseconds for xml-rpc to timeout - - - Milliseconds before a packet is assumed lost and resent - - - Milliseconds without receiving a packet before the - connection to a simulator is assumed lost - - - Milliseconds to wait for a simulator info request through - the grid interface - - - Maximum number of queued ACKs to be sent before SendAcks() - is forced - - - Network stats queue length (seconds) - - - Enable/disable storing terrain heightmaps in the - TerrainManager - - - Enable/disable sending periodic camera updates - - - Enable/disable automatically setting agent appearance at - login and after sim crossing - - - Enable/disable automatically setting the bandwidth throttle - after connecting to each simulator - The default throttle uses the equivalent of the maximum - bandwidth setting in the official client. If you do not set a - throttle your connection will by default be throttled well below - the minimum values and you may experience connection problems - - - Enable/disable the sending of pings to monitor lag and - packet loss - - - Should we connect to multiple sims? This will allow - viewing in to neighboring simulators and sim crossings - (Experimental) - - - If true, all object update packets will be decoded in to - native objects. If false, only updates for our own agent will be - decoded. Registering an event handler will force objects for that - type to always be decoded. If this is disabled the object tracking - will have missing or partial prim and avatar information - - - If true, when a cached object check is received from the - server the full object info will automatically be requested - - - Whether to establish connections to HTTP capabilities - servers for simulators - - - Whether to decode sim stats - - - The capabilities servers are currently designed to - periodically return a 502 error which signals for the client to - re-establish a connection. Set this to true to log those 502 errors - - - If true, any reference received for a folder or item - the library is not aware of will automatically be fetched - - - If true, and SEND_AGENT_UPDATES is true, - AgentUpdate packets will continuously be sent out to give the bot - smoother movement and autopiloting - - - If true, currently visible avatars will be stored - in dictionaries inside Simulator.ObjectAvatars. - If false, a new Avatar or Primitive object will be created - each time an object update packet is received - - - If true, currently visible avatars will be stored - in dictionaries inside Simulator.ObjectPrimitives. - If false, a new Avatar or Primitive object will be created - each time an object update packet is received - - - If true, position and velocity will periodically be - interpolated (extrapolated, technically) for objects and - avatars that are being tracked by the library. This is - necessary to increase the accuracy of speed and position - estimates for simulated objects - - - - If true, utilization statistics will be tracked. There is a minor penalty - in CPU time for enabling this option. - - - - If true, parcel details will be stored in the - Simulator.Parcels dictionary as they are received - - - - If true, an incoming parcel properties reply will automatically send - a request for the parcel access list - - - - - if true, an incoming parcel properties reply will automatically send - a request for the traffic count. - - - - - If true, images, and other assets downloaded from the server - will be cached in a local directory - - - - Path to store cached texture data - - - Maximum size cached files are allowed to take on disk (bytes) - - - Default color used for viewer particle effects - - - Maximum number of times to resend a failed packet - - - Throttle outgoing packet rate - - - UUID of a texture used by some viewers to indentify type of client used - - - - Download textures using GetTexture capability when available - - - - The maximum number of concurrent texture downloads allowed - Increasing this number will not necessarily increase texture retrieval times due to - simulator throttles - - - - The Refresh timer inteval is used to set the delay between checks for stalled texture downloads - - This is a static variable which applies to all instances - - - - Textures taking longer than this value will be flagged as timed out and removed from the pipeline - - - - - Get or set the minimum log level to output to the console by default - - If the library is not compiled with DEBUG defined and this level is set to DEBUG - You will get no output on the console. This behavior can be overriden by creating - a logger configuration file for log4net - - - - Attach avatar names to log messages - - - Log packet retransmission info - - - Constructor - Reference to a GridClient object - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Cost of uploading an asset - Read-only since this value is dynamically fetched at login - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Login Request Parameters - - - - The URL of the Login Server - - - The number of milliseconds to wait before a login is considered - failed due to timeout - - - The request method - login_to_simulator is currently the only supported method - - - The Agents First name - - - The Agents Last name - - - A md5 hashed password - plaintext password will be automatically hashed - - - The agents starting location once logged in - Either "last", "home", or a string encoded URI - containing the simulator name and x/y/z coordinates e.g: uri:hooper&128&152&17 - - - A string containing the client software channel information - Second Life Release - - - The client software version information - The official viewer uses: Second Life Release n.n.n.n - where n is replaced with the current version of the viewer - - - A string containing the platform information the agent is running on - - - A string hash of the network cards Mac Address - - - Unknown or deprecated - - - A string hash of the first disk drives ID used to identify this clients uniqueness - - - A string containing the viewers Software, this is not directly sent to the login server but - instead is used to generate the Version string - - - A string representing the software creator. This is not directly sent to the login server but - is used by the library to generate the Version information - - - If true, this agent agrees to the Terms of Service of the grid its connecting to - - - Unknown - - - An array of string sent to the login server to enable various options - - - A randomly generated ID to distinguish between login attempts. This value is only used - internally in the library and is never sent over the wire - - - - Default constuctor, initializes sane default values - - - - - Instantiates new LoginParams object and fills in the values - - Instance of GridClient to read settings from - Login first name - Login last name - Password - Login channnel (application name) - Client version, should be application name + version number - - - - Instantiates new LoginParams object and fills in the values - - Instance of GridClient to read settings from - Login first name - Login last name - Password - Login channnel (application name) - Client version, should be application name + version number - URI of the login server - - - - The decoded data returned from the login server after a successful login - - - - true, false, indeterminate - - - Login message of the day - - - M or PG, also agent_region_access and agent_access_max - - - - Parse LLSD Login Reply Data - - An - contaning the login response data - XML-RPC logins do not require this as XML-RPC.NET - automatically populates the struct properly using attributes - - - - Reads in a byte array of an Animation Asset created by the SecondLife(tm) client. - - - - - Rotation Keyframe count (used internally) - - - - - Position Keyframe count (used internally) - - - - - Animation Priority - - - - - The animation length in seconds. - - - - - Expression set in the client. Null if [None] is selected - - - - - The time in seconds to start the animation - - - - - The time in seconds to end the animation - - - - - Loop the animation - - - - - Meta data. Ease in Seconds. - - - - - Meta data. Ease out seconds. - - - - - Meta Data for the Hand Pose - - - - - Number of joints defined in the animation - - - - - Contains an array of joints - - - - - Searialize an animation asset into it's joints/keyframes/meta data - - - - - - Variable length strings seem to be null terminated in the animation asset.. but.. - use with caution, home grown. - advances the index. - - The animation asset byte array - The offset to start reading - a string - - - - Read in a Joint from an animation asset byte array - Variable length Joint fields, yay! - Advances the index - - animation asset byte array - Byte Offset of the start of the joint - The Joint data serialized into the binBVHJoint structure - - - - Read Keyframes of a certain type - advance i - - Animation Byte array - Offset in the Byte Array. Will be advanced - Number of Keyframes - Scaling Min to pass to the Uint16ToFloat method - Scaling Max to pass to the Uint16ToFloat method - - - - - A Joint and it's associated meta data and keyframes - - - - - Name of the Joint. Matches the avatar_skeleton.xml in client distros - - - - - Joint Animation Override? Was the same as the Priority in testing.. - - - - - Array of Rotation Keyframes in order from earliest to latest - - - - - Array of Position Keyframes in order from earliest to latest - This seems to only be for the Pelvis? - - - - - A Joint Keyframe. This is either a position or a rotation. - - - - - Either a Vector3 position or a Vector3 Euler rotation - - - - - Poses set in the animation metadata for the hands. - - - - - Avatar profile flags - - - - - Represents an avatar (other than your own) - - - - Groups that this avatar is a member of - - - Positive and negative ratings - - - Avatar properties including about text, profile URL, image IDs and - publishing settings - - - Avatar interests including spoken languages, skills, and "want to" - choices - - - Movement control flags for avatars. Typically not set or used by - clients. To move your avatar, use Client.Self.Movement instead - - - - Contains the visual parameters describing the deformation of the avatar - - - - - Default constructor - - - - First name - - - Last name - - - Full name - - - Active group - - - - Positive and negative ratings - - - - Positive ratings for Behavior - - - Negative ratings for Behavior - - - Positive ratings for Appearance - - - Negative ratings for Appearance - - - Positive ratings for Building - - - Negative ratings for Building - - - Positive ratings given by this avatar - - - Negative ratings given by this avatar - - - - Avatar properties including about text, profile URL, image IDs and - publishing settings - - - - First Life about text - - - First Life image ID - - - - - - - - - - - - - - - Profile image ID - - - Flags of the profile - - - Web URL for this profile - - - Should this profile be published on the web - - - Avatar Online Status - - - Is this a mature profile - - - - - - - - - - Avatar interests including spoken languages, skills, and "want to" - choices - - - - Languages profile field - - - - - - - - - - - - - - - - Extract the avatar UUID encoded in a SIP URI - - - - - - - The type of bump-mapping applied to a face - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The level of shininess applied to a face - - - - - - - - - - - - - - - - - The texture mapping style used for a face - - - - - - - - - - - - - - - - - Flags in the TextureEntry block that describe which properties are - set - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Positional vector of the users position - - - Velocity vector of the position - - - At Orientation (X axis) of the position - - - Up Orientation (Y axis) of the position - - - Left Orientation (Z axis) of the position - - - - Image width - - - - - Image height - - - - - Image channel flags - - - - - Red channel data - - - - - Green channel data - - - - - Blue channel data - - - - - Alpha channel data - - - - - Bump channel data - - - - - Create a new blank image - - width - height - channel flags - - - - - - - - - - Convert the channels in the image. Channels are created or destroyed as required. - - new channel flags - - - - Resize or stretch the image using nearest neighbor (ugly) resampling - - new width - new height - - - - Create a byte array containing 32-bit RGBA data with a bottom-left - origin, suitable for feeding directly into OpenGL - - A byte array containing raw texture data - - - - pre-defined built in sounds - - - - - - - - - - - - - - - - - - - - - - - - - - - - coins - - - cash register bell - - - - - - - - - rubber - - - plastic - - - flesh - - - wood splintering? - - - glass break - - - metal clunk - - - whoosh - - - shake - - - - - - ding - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + Maximum bits per second for resending unacknowledged packets - - + + Maximum bits per second for LayerData terrain - - - A dictionary containing all pre-defined sounds - - A dictionary containing the pre-defined sounds, - where the key is the sounds ID, and the value is a string - containing a name to identify the purpose of the sound - - - - - - - - The avatar has no rights - - - The avatar can see the online status of the target avatar - - - The avatar can see the location of the target avatar on the map - - - The avatar can modify the ojects of the target avatar - - - - This class holds information about an avatar in the friends list. There are two ways - to interface to this class. The first is through the set of boolean properties. This is the typical - way clients of this class will use it. The second interface is through two bitflag properties, - TheirFriendsRights and MyFriendsRights - - - - - Used internally when building the initial list of friends at login time - - System ID of the avatar being prepesented - Rights the friend has to see you online and to modify your objects - Rights you have to see your friend online and to modify their objects - - - - FriendInfo represented as a string - - A string reprentation of both my rights and my friends rights - - - - System ID of the avatar - - - - - full name of the avatar - - - - - True if the avatar is online - - - - - True if the friend can see if I am online - - - - - True if the friend can see me on the map - - - - - True if the freind can modify my objects - - - - - True if I can see if my friend is online - - - - - True if I can see if my friend is on the map - - - - - True if I can modify my friend's objects - - - - - My friend's rights represented as bitmapped flags - - - - - My rights represented as bitmapped flags - - - - - This class is used to add and remove avatars from your friends list and to manage their permission. - - - - The event subscribers. null if no subcribers - - - Raises the FriendOnline event - A FriendInfoEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the FriendOffline event - A FriendInfoEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the FriendRightsUpdate event - A FriendInfoEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the FriendNames event - A FriendNamesEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the FriendshipOffered event - A FriendshipOfferedEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the FriendshipResponse event - A FriendshipResponseEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the FriendshipTerminated event - A FriendshipTerminatedEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the FriendFoundReply event - A FriendFoundReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - - A dictionary of key/value pairs containing known friends of this avatar. - - The Key is the of the friend, the value is a - object that contains detailed information including permissions you have and have given to the friend - - - - - A Dictionary of key/value pairs containing current pending frienship offers. - - The key is the of the avatar making the request, - the value is the of the request which is used to accept - or decline the friendship offer - - - - - Internal constructor - - A reference to the GridClient Object - - - - Accept a friendship request - - agentID of avatatar to form friendship with - imSessionID of the friendship request message - - - - Decline a friendship request - - of friend - imSessionID of the friendship request message - - - - Overload: Offer friendship to an avatar. - - System ID of the avatar you are offering friendship to - - - - Offer friendship to an avatar. - - System ID of the avatar you are offering friendship to - A message to send with the request - - - - Terminate a friendship with an avatar - - System ID of the avatar you are terminating the friendship with - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - Change the rights of a friend avatar. - - the of the friend - the new rights to give the friend - This method will implicitly set the rights to those passed in the rights parameter. - - - - Use to map a friends location on the grid. - - Friends UUID to find - - - - - Use to track a friends movement on the grid - - Friends Key - - - - Ask for a notification of friend's online status - - Friend's UUID - - - - This handles the asynchronous response of a RequestAvatarNames call. - - - names cooresponding to the the list of IDs sent the the RequestAvatarNames call. - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - Populate FriendList with data from the login reply - - true if login was successful - true if login request is requiring a redirect - A string containing the response to the login request - A string containing the reason for the request - A object containing the decoded - reply from the login server - - - Raised when the simulator sends notification one of the members in our friends list comes online - - - Raised when the simulator sends notification one of the members in our friends list goes offline - - - Raised when the simulator sends notification one of the members in our friends list grants or revokes permissions + + Maximum bits per second for LayerData wind data - - Raised when the simulator sends us the names on our friends list + + Maximum bits per second for LayerData clouds - - Raised when the simulator sends notification another agent is offering us friendship + + Unknown, includes object data - - Raised when a request we sent to friend another agent is accepted or declined + + Maximum bits per second for textures - - Raised when the simulator sends notification one of the members in our friends list has terminated - our friendship + + Maximum bits per second for downloaded assets - - Raised when the simulator sends the location of a friend we have - requested map location info for + + Maximum bits per second the entire connection, divided up + between invidiual streams using default multipliers - - Contains information on a member of our friends list - - - - Construct a new instance of the FriendInfoEventArgs class - - The FriendInfo - - - Get the FriendInfo - - - Contains Friend Names - - - - Construct a new instance of the FriendNamesEventArgs class - - A dictionary where the Key is the ID of the Agent, - and the Value is a string containing their name - - - A dictionary where the Key is the ID of the Agent, - and the Value is a string containing their name - - - Sent when another agent requests a friendship with our agent - - - - Construct a new instance of the FriendshipOfferedEventArgs class - - The ID of the agent requesting friendship - The name of the agent requesting friendship - The ID of the session, used in accepting or declining the - friendship offer - - - Get the ID of the agent requesting friendship - - - Get the name of the agent requesting friendship - - - Get the ID of the session, used in accepting or declining the - friendship offer - - - A response containing the results of our request to form a friendship with another agent - - - - Construct a new instance of the FriendShipResponseEventArgs class - - The ID of the agent we requested a friendship with - The name of the agent we requested a friendship with - true if the agent accepted our friendship offer - - - Get the ID of the agent we requested a friendship with - - - Get the name of the agent we requested a friendship with - - - true if the agent accepted our friendship offer - - - Contains data sent when a friend terminates a friendship with us - - - - Construct a new instance of the FrindshipTerminatedEventArgs class - - The ID of the friend who terminated the friendship with us - The name of the friend who terminated the friendship with us - - - Get the ID of the agent that terminated the friendship with us - - - Get the name of the agent that terminated the friendship with us - - - - Data sent in response to a request which contains the information to allow us to map the friends location - - - - - Construct a new instance of the FriendFoundReplyEventArgs class - - The ID of the agent we have requested location information for - The region handle where our friend is located - The simulator local position our friend is located - - - Get the ID of the agent we have received location information for - - - Get the region handle where our mapped friend is located - - - Get the simulator local position where our friend is located - - - - Return a decoded capabilities message as a strongly typed object - - A string containing the name of the capabilities message key - An to decode - A strongly typed object containing the decoded information from the capabilities message, or null - if no existing Message object exists for the specified event - - - - Represents an that represents an avatars body ie: Hair, Etc. - - - - Initializes a new instance of an AssetBodyPart object - - - Initializes a new instance of an AssetBodyPart object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - Override the base classes AssetType - - - - Archives assets - - - - - Archive assets - - - - - Archive the assets given to this archiver to the given archive. - - - - - - Write an assets metadata file to the given archive - - - - - - Write asset data files to the given archive - - - - - - - - - - - An instance of DelegateWrapper which calls InvokeWrappedDelegate, - which in turn calls the DynamicInvoke method of the wrapped - delegate - - - - - Callback used to call EndInvoke on the asynchronously - invoked DelegateWrapper - - - - - Executes the specified delegate with the specified arguments - asynchronously on a thread pool thread - - - - - - - Invokes the wrapped delegate synchronously - - - - - - - Calls EndInvoke on the wrapper and Close on the resulting WaitHandle - to prevent resource leaks - - - - - - Delegate to wrap another delegate and its arguments - - - - - - The event subscribers. null if no subcribers - - - Raises the LandPatchReceived event - A LandPatchReceivedEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - - Default constructor - - - - - Raised when the simulator responds sends - - - Simulator from that sent tha data - - - Sim coordinate of the patch - - - Sim coordinate of the patch - - - Size of tha patch - - - Heightmap for the patch - - - Size of the byte array used to store raw packet data - - - Raw packet data buffer - - - Length of the data to transmit - - - EndPoint of the remote host - - - - Create an allocated UDP packet buffer for receiving a packet - - - - - Create an allocated UDP packet buffer for sending a packet - - EndPoint of the remote host - - - - Create an allocated UDP packet buffer for sending a packet - - EndPoint of the remote host - Size of the buffer to allocate for packet data - - - - Object pool for packet buffers. This is used to allocate memory for all - incoming and outgoing packets, and zerocoding buffers for those packets - - - + - Initialize the object pool in client mode + Send an AgentThrottle packet to the current server using the + current values - Server to connect to - - - + - Initialize the object pool in server mode + Send an AgentThrottle packet to the specified server using the + current values - - - + - Returns a packet buffer with EndPoint set if the buffer is in - client mode, or with EndPoint set to null in server mode + Convert the current throttle values to a byte array that can be put + in an AgentThrottle packet - Initialized UDPPacketBuffer object - - - - Default constructor - - - - - Check a packet buffer out of the pool - - A packet buffer object - - - - - - Looking direction, must be a normalized vector - Up direction, must be a normalized vector - - - - Align the coordinate frame X and Y axis with a given rotation - around the Z axis in radians - - Absolute rotation around the Z axis in - radians - - - Origin position of this coordinate frame - - - X axis of this coordinate frame, or Forward/At in grid terms - - - Y axis of this coordinate frame, or Left in grid terms - - - Z axis of this coordinate frame, or Up in grid terms + Byte array containing all the throttle values @@ -22040,7 +3316,8 @@ Agent sitting on a motorcycle - + + Agent moving head side to side @@ -22052,7 +3329,8 @@ Agent taunting another - + + Agent giving peace sign @@ -22124,7 +3402,8 @@ Agent sitting on ground - + + Agent sleeping on side @@ -22136,7 +3415,8 @@ Agent inhaling smoke - + + Agent taking a picture @@ -22226,178 +3506,12623 @@ A dictionary containing all pre-defined animations - A dictionary containing the pre-defined animations, + A dictionary containing the pre-defined animations, where the key is the animations ID, and the value is a string containing a name to identify the purpose of the animation - + - Type of gesture step + Index of TextureEntry slots for avatar appearances - + - Base class for gesture steps + Bake layers for avatar appearance - + - Retururns what kind of gesture step this is + Default constructor + + A reference to our agent + + + + Contains information about a wearable inventory item - + + Inventory ItemID of the wearable + + + AssetID of the wearable asset + + + WearableType of the wearable + + + AssetType of the wearable + + + Asset data for the wearable + + - Describes animation step of a gesture + Data collected from visual params for each wearable + needed for the calculation of the color - + - If true, this step represents start of animation, otherwise animation stop + Holds a texture assetID and the data needed to bake this layer into + an outfit texture. Used to keep track of currently worn textures + and baking data - + + A texture AssetID + + + Asset data for the texture + + + Collection of alpha masks that needs applying + + + Tint that should be applied to the texture + + + Maximum number of concurrent downloads for wearable assets and textures + + + Maximum number of concurrent uploads for baked textures + + + Timeout for fetching inventory listings + + + Timeout for fetching a single wearable, or receiving a single packet response + + + Timeout for fetching a single texture + + + Timeout for uploading a single baked texture + + + Number of times to retry bake upload + + + When changing outfit, kick off rebake after + 20 seconds has passed since the last change + + + Total number of wearables for each avatar + + + Total number of baked textures on each avatar + + + Total number of wearables per bake layer + + + Total number of textures on an avatar, baked or not + + + Mapping between BakeType and AvatarTextureIndex + + + Map of what wearables are included in each bake + + + Magic values to finalize the cache check hashes for each + bake + + + Default avatar texture, used to detect when a custom + texture is not set for a face + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + A cache of wearables currently being worn + + + A cache of textures currently being worn + + + Incrementing serial number for AgentCachedTexture packets + + + Incrementing serial number for AgentSetAppearance packets + + + Indicates whether or not the appearance thread is currently + running, to prevent multiple appearance threads from running + simultaneously + + + Reference to our agent + + - Animation asset + Timer used for delaying rebake on changing outfit - + - Animation inventory name + Main appearance thread - + + Triggered when an AgentWearablesUpdate packet is received, + telling us what our avatar is currently wearing + request. + + + Raised when an AgentCachedTextureResponse packet is + received, giving a list of cached bakes that were found on the + simulator + request. + + - Returns what kind of gesture step this is + Raised when appearance data is sent to the simulator, also indicates + the main appearance thread is finished. + + request. + + + Triggered when the simulator requests the agent rebake its appearance. + + + + + + Returns true if AppearanceManager is busy and trying to set or change appearance will fail - + + Raises the AgentWearablesReply event + An AgentWearablesReplyEventArgs object containing the + data returned from the data server + + + Raises the CachedBakesReply event + An AgentCachedBakesReplyEventArgs object containing the + data returned from the data server AgentCachedTextureResponse + + + Raises the AppearanceSet event + An AppearanceSetEventArgs object indicating if the operatin was successfull + + + Raises the RebakeAvatarRequested event + An RebakeAvatarTexturesEventArgs object containing the + data returned from the data server + + - Describes sound step of a gesture + Obsolete method for setting appearance. This function no longer does anything. + Use RequestSetAppearance() to manually start the appearance thread - + - Sound asset + Obsolete method for setting appearance. This function no longer does anything. + Use RequestSetAppearance() to manually start the appearance thread + + Unused parameter + + + + Starts the appearance setting thread - + - Sound inventory name + Starts the appearance setting thread + + True to force rebaking, otherwise false + + + + Ask the server what textures our agent is currently wearing - + - Returns what kind of gesture step this is + Build hashes out of the texture assetIDs for each baking layer to + ask the simulator whether it has cached copies of each baked texture - + - Describes sound step of a gesture + Returns the AssetID of the asset that is currently being worn in a + given WearableType slot + + WearableType slot to get the AssetID for + The UUID of the asset being worn in the given slot, or + UUID.Zero if no wearable is attached to the given slot or wearables + have not been downloaded yet + + + + Add a wearable to the current outfit and set appearance + + Wearable to be added to the outfit + + + + Add a list of wearables to the current outfit and set appearance + + List of wearable inventory items to + be added to the outfit + + + + Remove a wearable from the current outfit and set appearance + + Wearable to be removed from the outfit + + + + Removes a list of wearables from the current outfit and set appearance + + List of wearable inventory items to + be removed from the outfit + + + + Replace the current outfit with a list of wearables and set appearance + + List of wearable inventory items that + define a new outfit + + + + Checks if an inventory item is currently being worn + + The inventory item to check against the agent + wearables + The WearableType slot that the item is being worn in, + or WearbleType.Invalid if it is not currently being worn + + + + Returns a copy of the agents currently worn wearables + + A copy of the agents currently worn wearables + Avoid calling this function multiple times as it will make + a copy of all of the wearable data each time + + + + Calls either or + depending on the value of + replaceItems + + List of wearable inventory items to add + to the outfit or become a new outfit + True to replace existing items with the + new list of items, false to add these items to the existing outfit + + + + Adds a list of attachments to our agent + + A List containing the attachments to add + If true, tells simulator to remove existing attachment + first + + + + Attach an item to our agent at a specific attach point + + A to attach + the on the avatar + to attach the item to + + + + Attach an item to our agent specifying attachment details + + The of the item to attach + The attachments owner + The name of the attachment + The description of the attahment + The to apply when attached + The of the attachment + The on the agent + to attach the item to + + + + Detach an item from our agent using an object + + An object + + + + Detach an item from our agent + + The inventory itemID of the item to detach + + + + Inform the sim which wearables are part of our current outfit - + - Text to output in chat + Replaces the Wearables collection with a list of new wearable items + + Wearable items to replace the Wearables collection with + + + + Calculates base color/tint for a specific wearable + based on its params + + All the color info gathered from wearable's VisualParams + passed as list of ColorParamInfo tuples + Base color/tint for the wearable + + + + Blocking method to populate the Wearables dictionary + + True on success, otherwise false + + + + Blocking method to populate the Textures array with cached bakes + + True on success, otherwise false + + + + Populates textures and visual params from a decoded asset + + Wearable to decode + + + + Blocking method to download and parse currently worn wearable assets + + True on success, otherwise false + + + + Get a list of all of the textures that need to be downloaded for a + single bake layer + + Bake layer to get texture AssetIDs for + A list of texture AssetIDs to download + + + + Helper method to lookup the TextureID for a single layer and add it + to a list if it is not already present + + + + + + + + + Blocking method to download all of the textures needed for baking + the given bake layers + + A list of layers that need baking + No return value is given because the baking will happen + whether or not all textures are successfully downloaded + + + + Blocking method to create and upload baked textures for all of the + missing bakes + + True on success, otherwise false + + + + Blocking method to create and upload a baked texture for a single + bake layer + + Layer to bake + True on success, otherwise false + + + + Blocking method to upload a baked texture + + Five channel JPEG2000 texture data to upload + UUID of the newly created asset on success, otherwise UUID.Zero + + + + Creates a dictionary of visual param values from the downloaded wearables + + A dictionary of visual param indices mapping to visual param + values for our agent that can be fed to the Baker class + + + + Create an AgentSetAppearance packet from Wearables data and the + Textures array and send it - + - Returns what kind of gesture step this is + Converts a WearableType to a bodypart or clothing WearableType + + A WearableType + AssetType.Bodypart or AssetType.Clothing or AssetType.Unknown + + + + Converts a BakeType to the corresponding baked texture slot in AvatarTextureIndex + + A BakeType + The AvatarTextureIndex slot that holds the given BakeType + + + + Gives the layer number that is used for morph mask + + >A BakeType + Which layer number as defined in BakeTypeToTextures is used for morph mask + + + + Converts a BakeType to a list of the texture slots that make up that bake + + A BakeType + A list of texture slots that are inputs for the given bake + + + Contains the Event data returned from the data server from an AgentWearablesRequest + + + Construct a new instance of the AgentWearablesReplyEventArgs class + + + Contains the Event data returned from the data server from an AgentCachedTextureResponse + + + Construct a new instance of the AgentCachedBakesReplyEventArgs class + + + Contains the Event data returned from an AppearanceSetRequest + + + + Triggered when appearance data is sent to the sim and + the main appearance thread is done. + Indicates whether appearance setting was successful + + + Indicates whether appearance setting was successful + + + Contains the Event data returned from the data server from an RebakeAvatarTextures + + + + Triggered when the simulator sends a request for this agent to rebake + its appearance + + The ID of the Texture Layer to bake + + + The ID of the Texture Layer to bake + + + + Class that handles the local asset cache - + - Describes sound step of a gesture + Default constructor + + A reference to the GridClient object + + + + Helper class for sorting files by their last accessed time - + - If true in this step we wait for all animations to finish + Allows setting weather to periodicale prune the cache if it grows too big + Default is enabled, when caching is enabled - + - If true gesture player should wait for the specified amount of time + How long (in ms) between cache checks (default is 5 min.) - + - Time in seconds to wait if WaitForAnimation is false + Disposes cleanup timer - + - Returns what kind of gesture step this is + Only create timer when needed - + - Describes the final step of a gesture + Return bytes read from the local asset cache, null if it does not exist + + UUID of the asset we want to get + Raw bytes of the asset, or null on failure + + + + Returns ImageDownload object of the + image from the local image cache, null if it does not exist + + UUID of the image we want to get + ImageDownload object containing the image, or null on failure + + + + Constructs a file name of the cached asset + + UUID of the asset + String with the file name of the cahced asset + + + + Saves an asset to the local cache + + UUID of the asset + Raw bytes the asset consists of + Weather the operation was successfull + + + + Get the file name of the asset stored with gived UUID + + UUID of the asset + Null if we don't have that UUID cached on disk, file name if found in the cache folder + + + + Checks if the asset exists in the local cache + + UUID of the asset + True is the asset is stored in the cache, otherwise false + + + + Wipes out entire cache - + - Returns what kind of gesture step this is + Brings cache size to the 90% of the max size - + - Represents a sequence of animations, sounds, and chat actions + Asynchronously brings cache size to the 90% of the max size - + - Keyboard key that triggers the gestyre + Adds up file sizes passes in a FileInfo array - + - Modifier to the trigger key + Checks whether caching is enabled - + - String that triggers playing of the gesture sequence + Periodically prune the cache - + + + Nicely formats file sizes + + Byte size we want to output + String with humanly readable file size + + - Text that replaces trigger in chat once gesture is triggered - + + OK + + + Transfer completed + + - Sequence of gesture steps - + - Constructs guesture asset - - - Constructs guesture asset - - A unique specific to this asset - A byte array containing the raw asset data + + Unknown error occurred - + + Equivalent to a 404 error + + + Client does not have permission for that resource + + + Unknown status + + - Encodes gesture asset suitable for uplaod - + - Decodes gesture assset into play sequence - true if the asset data was decoded successfully - + + Unknown + + + Virtually all asset transfers use this channel + + - Returns asset type + + + + + + Asset from the asset server + + + Inventory item + + + Estate asset, such as an estate covenant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Image file format + + + + + + + + Number of milliseconds passed since the last transfer + packet was received + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default constructor + + A reference to the GridClient object + + + + Callback used for various asset download requests + + Transfer information + Downloaded asset, null on fail + + + + Callback used upon competition of baked texture upload + + Asset UUID of the newly uploaded baked texture + + + Number of milliseconds to wait for a transfer header packet if out of order data was received + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + Texture download cache + + + Raised when the simulator responds sends + + + Raised during upload completes + + + Raised during upload with progres update + + + Fired when the simulator sends an InitiateDownloadPacket, used to download terrain .raw files + + + Fired when a texture is in the process of being downloaded by the TexturePipeline class + + + Raises the XferReceived event + A XferReceivedEventArgs object containing the + data returned from the simulator + + + Raises the AssetUploaded event + A AssetUploadedEventArgs object containing the + data returned from the simulator + + + Raises the UploadProgress event + A UploadProgressEventArgs object containing the + data returned from the simulator + + + Raises the InitiateDownload event + A InitiateDownloadEventArgs object containing the + data returned from the simulator + + + Raises the ImageReceiveProgress event + A ImageReceiveProgressEventArgs object containing the + data returned from the simulator + + + + Request an asset download + + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + The callback to fire when the simulator responds with the asset data + + + + Request an asset download + + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + Source location of the requested asset + The callback to fire when the simulator responds with the asset data + + + + Request an asset download + + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + Source location of the requested asset + UUID of the transaction + The callback to fire when the simulator responds with the asset data + + + + Request an asset download through the almost deprecated Xfer system + + Filename of the asset to request + Whether or not to delete the asset + off the server after it is retrieved + Use large transfer packets or not + UUID of the file to request, if filename is + left empty + Asset type of vFileID, or + AssetType.Unknown if filename is not empty + Sets the FilePath in the request to Cache + (4) if true, otherwise Unknown (0) is used + + + + + + + Use UUID.Zero if you do not have the + asset ID but have all the necessary permissions + The item ID of this asset in the inventory + Use UUID.Zero if you are not requesting an + asset from an object inventory + The owner of this asset + Asset type + Whether to prioritize this asset download or not + + + + + + Used to force asset data into the PendingUpload property, ie: for raw terrain uploads + + An AssetUpload object containing the data to upload to the simulator + + + + Request an asset be uploaded to the simulator + + The Object containing the asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired + + + + Request an asset be uploaded to the simulator + + The of the asset being uploaded + A byte array containing the encoded asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired + + + + Request an asset be uploaded to the simulator + + + + Asset type to upload this data as + A byte array containing the encoded asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired + + + + Initiate an asset upload + + The ID this asset will have if the + upload succeeds + Asset type to upload this data as + Raw asset data to upload + Whether to store this asset on the local + simulator or the grid-wide asset server + The tranaction id for the upload + The transaction ID of this transfer + + + + Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + A float indicating the requested priority for the transfer. Higher priority values tell the simulator + to prioritize the request before lower valued requests. An image already being transferred using the can have + its priority changed by resending the request with the new priority value + Number of quality layers to discard. + This controls the end marker of the data sent. Sending with value -1 combined with priority of 0 cancels an in-progress + transfer. + A bug exists in the Linden Simulator where a -1 will occasionally be sent with a non-zero priority + indicating an off-by-one error. + The packet number to begin the request at. A value of 0 begins the request + from the start of the asset texture + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request + + Request an image and fire a callback when the request is complete + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); + private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", + asset.AssetID, + asset.AssetData.Length); + } + } + + Request an image and use an inline anonymous method to handle the downloaded texture data + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, delegate(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", + asset.AssetID, + asset.AssetData.Length); + } + } + ); + + Request a texture, decode the texture to a bitmap image and apply it to a imagebox + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); + private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + ManagedImage imgData; + Image bitmap; + if (state == TextureRequestState.Finished) + { + OpenJPEG.DecodeToImage(assetTexture.AssetData, out imgData, out bitmap); + picInsignia.Image = bitmap; + } + } + } + + + + + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + + + + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + + + + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request + + + + Cancel a texture request + + The texture assets + + + + Lets TexturePipeline class fire the progress event + + The texture ID currently being downloaded + the number of bytes transferred + the total number of bytes expected + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Xfer data + + + Upload data + + + Filename used on the simulator + + + Filename used by the client + + + UUID of the image that is in progress + + + Number of bytes received so far + + + Image size in bytes + + + + Avatar profile flags + + + + + Represents an avatar (other than your own) + + + + + Default constructor + + + + + Positive and negative ratings + + + + Positive ratings for Behavior + + + Negative ratings for Behavior + + + Positive ratings for Appearance + + + Negative ratings for Appearance + + + Positive ratings for Building + + + Negative ratings for Building + + + Positive ratings given by this avatar + + + Negative ratings given by this avatar + + + + Avatar properties including about text, profile URL, image IDs and + publishing settings + + + + First Life about text + + + First Life image ID + + + + + + + + + + + + + + + + + + + Profile image ID + + + Flags of the profile + + + Web URL for this profile + + + Should this profile be published on the web + + + Avatar Online Status + + + Is this a mature profile + + + + + + + + + + + + Avatar interests including spoken languages, skills, and "want to" + choices + + + + Languages profile field + + + + + + + + + + + + + + + + + + + Groups that this avatar is a member of + + + Positive and negative ratings + + + Avatar properties including about text, profile URL, image IDs and + publishing settings + + + Avatar interests including spoken languages, skills, and "want to" + choices + + + Movement control flags for avatars. Typically not set or used by + clients. To move your avatar, use Client.Self.Movement instead + + + + Contains the visual parameters describing the deformation of the avatar + + + + First name + + + Last name + + + Full name + + + Active group + + + + Holds group information for Avatars such as those you might find in a profile + + + + true of Avatar accepts group notices + + + Groups Key + + + Texture Key for groups insignia + + + Name of the group + + + Powers avatar has in the group + + + Avatars Currently selected title + + + true of Avatar has chosen to list this in their profile + + + + Contains an animation currently being played by an agent + + + + The ID of the animation asset + + + A number to indicate start order of currently playing animations + On Linden Grids this number is unique per region, with OpenSim it is per client + + + + + + + + Holds group information on an individual profile pick + + + + + Retrieve friend status notifications, and retrieve avatar names and + profiles + + + + + Represents other avatars + + + + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + Raised when the simulator sends us data containing + an agents animation playlist + + + Raised when the simulator sends us data containing + the appearance information for an agent + + + Raised when the simulator sends us data containing + agent names/id values + + + Raised when the simulator sends us data containing + the interests listed in an agents profile + + + Raised when the simulator sends us data containing + profile property information for an agent + + + Raised when the simulator sends us data containing + the group membership an agent is a member of + + + Raised when the simulator sends us data containing + name/id pair + + + Raised when the simulator sends us data containing + the objects and effect when an agent is pointing at + + + Raised when the simulator sends us data containing + the objects and effect when an agent is looking at + + + Raised when the simulator sends us data containing + an agents viewer effect information + + + Raised when the simulator sends us data containing + the top picks from an agents profile + + + Raised when the simulator sends us data containing + the Pick details + + + Raised when the simulator sends us data containing + the classified ads an agent has placed + + + Raised when the simulator sends us data containing + the details of a classified ad + + + Raises the AvatarAnimation Event + An AvatarAnimationEventArgs object containing + the data sent from the simulator + + + Raises the AvatarAppearance Event + A AvatarAppearanceEventArgs object containing + the data sent from the simulator + + + Raises the UUIDNameReply Event + A UUIDNameReplyEventArgs object containing + the data sent from the simulator + + + Raises the AvatarInterestsReply Event + A AvatarInterestsReplyEventArgs object containing + the data sent from the simulator + + + Raises the AvatarPropertiesReply Event + A AvatarPropertiesReplyEventArgs object containing + the data sent from the simulator + + + Raises the AvatarGroupsReply Event + A AvatarGroupsReplyEventArgs object containing + the data sent from the simulator + + + Raises the AvatarPickerReply Event + A AvatarPickerReplyEventArgs object containing + the data sent from the simulator + + + Raises the ViewerEffectPointAt Event + A ViewerEffectPointAtEventArgs object containing + the data sent from the simulator + + + Raises the ViewerEffectLookAt Event + A ViewerEffectLookAtEventArgs object containing + the data sent from the simulator + + + Raises the ViewerEffect Event + A ViewerEffectEventArgs object containing + the data sent from the simulator + + + Raises the AvatarPicksReply Event + A AvatarPicksReplyEventArgs object containing + the data sent from the simulator + + + Raises the PickInfoReply Event + A PickInfoReplyEventArgs object containing + the data sent from the simulator + + + Raises the AvatarClassifiedReply Event + A AvatarClassifiedReplyEventArgs object containing + the data sent from the simulator + + + Raises the ClassifiedInfoReply Event + A ClassifiedInfoReplyEventArgs object containing + the data sent from the simulator + + + Tracks the specified avatar on your map + Avatar ID to track + + + + Request a single avatar name + + The avatar key to retrieve a name for + + + + Request a list of avatar names + + The avatar keys to retrieve names for + + + + Start a request for Avatar Properties + + + + + + + Search for an avatar (first name, last name) + + The name to search for + An ID to associate with this query + + + + Start a request for Avatar Picks + + UUID of the avatar + + + + Start a request for Avatar Classifieds + + UUID of the avatar + + + + Start a request for details of a specific profile pick + + UUID of the avatar + UUID of the profile pick + + + + Start a request for details of a specific profile classified + + UUID of the avatar + UUID of the profile classified + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Crossed region handler for message that comes across the EventQueue. Sent to an agent + when the agent crosses a sim border into a new region. + + The message key + the IMessage object containing the deserialized data sent from the simulator + The which originated the packet + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Provides data for the event + The event occurs when the simulator sends + the animation playlist for an agent + + The following code example uses the and + properties to display the animation playlist of an avatar on the window. + + // subscribe to the event + Client.Avatars.AvatarAnimation += Avatars_AvatarAnimation; + private void Avatars_AvatarAnimation(object sender, AvatarAnimationEventArgs e) + { + // create a dictionary of "known" animations from the Animations class using System.Reflection + Dictionary<UUID, string> systemAnimations = new Dictionary<UUID, string>(); + Type type = typeof(Animations); + System.Reflection.FieldInfo[] fields = type.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); + foreach (System.Reflection.FieldInfo field in fields) + { + systemAnimations.Add((UUID)field.GetValue(type), field.Name); + } + // find out which animations being played are known animations and which are assets + foreach (Animation animation in e.Animations) + { + if (systemAnimations.ContainsKey(animation.AnimationID)) + { + Console.WriteLine("{0} is playing {1} ({2}) sequence {3}", e.AvatarID, + systemAnimations[animation.AnimationID], animation.AnimationSequence); + } + else + { + Console.WriteLine("{0} is playing {1} (Asset) sequence {2}", e.AvatarID, + animation.AnimationID, animation.AnimationSequence); + } + } + } + + + + + Construct a new instance of the AvatarAnimationEventArgs class + + The ID of the agent + The list of animations to start + + + Get the ID of the agent + + + Get the list of animations to start + + + Provides data for the event + The event occurs when the simulator sends + the appearance data for an avatar + + The following code example uses the and + properties to display the selected shape of an avatar on the window. + + // subscribe to the event + Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; + // handle the data when the event is raised + void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) + { + Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") + } + + + + + Construct a new instance of the AvatarAppearanceEventArgs class + + The simulator request was from + The ID of the agent + true of the agent is a trial account + The default agent texture + The agents appearance layer textures + The for the agent + + + Get the Simulator this request is from of the agent + + + Get the ID of the agent + + + true if the agent is a trial account + + + Get the default agent texture + + + Get the agents appearance layer textures + + + Get the for the agent + + + Represents the interests from the profile of an agent + + + Get the ID of the agent + + + The properties of an agent + + + Get the ID of the agent + + + Get the ID of the agent + + + Get the ID of the agent + + + Get the ID of the avatar + + + + Reads in a byte array of an Animation Asset created by the SecondLife(tm) client. + + + + + Searialize an animation asset into it's joints/keyframes/meta data + + + + + + + Rotation Keyframe count (used internally) + + + + + Position Keyframe count (used internally) + + + + + Animation Priority + + + + + The animation length in seconds. + + + + + Expression set in the client. Null if [None] is selected + + + + + The time in seconds to start the animation + + + + + The time in seconds to end the animation + + + + + Loop the animation + + + + + Meta data. Ease in Seconds. + + + + + Meta data. Ease out seconds. + + + + + Meta Data for the Hand Pose + + + + + Number of joints defined in the animation + + + + + Contains an array of joints + + + + + Variable length strings seem to be null terminated in the animation asset.. but.. + use with caution, home grown. + advances the index. + + The animation asset byte array + The offset to start reading + a string + + + + Read in a Joint from an animation asset byte array + Variable length Joint fields, yay! + Advances the index + + animation asset byte array + Byte Offset of the start of the joint + The Joint data serialized into the binBVHJoint structure + + + + Read Keyframes of a certain type + advance i + + Animation Byte array + Offset in the Byte Array. Will be advanced + Number of Keyframes + Scaling Min to pass to the Uint16ToFloat method + Scaling Max to pass to the Uint16ToFloat method + + + + + + A Joint and it's associated meta data and keyframes + + + + + Name of the Joint. Matches the avatar_skeleton.xml in client distros + + + + + Joint Animation Override? Was the same as the Priority in testing.. + + + + + Array of Rotation Keyframes in order from earliest to latest + + + + + Array of Position Keyframes in order from earliest to latest + This seems to only be for the Pelvis? + + + + + A Joint Keyframe. This is either a position or a rotation. + + + + + Either a Vector3 position or a Vector3 Euler rotation + + + + + Poses set in the animation metadata for the hands. + + + + + Wrapper around a byte array that allows bit to be packed and unpacked + one at a time or by a variable amount. Useful for very tightly packed + data like LayerData packets + + + + + Default constructor, initialize the bit packer / bit unpacker + with a byte array and starting position + + Byte array to pack bits in to or unpack from + Starting position in the byte array + + + + + + + + + + + + + + + + Pack a floating point value in to the data + + Floating point value to pack + + + + Pack part or all of an integer in to the data + + Integer containing the data to pack + Number of bits of the integer to pack + + + + Pack part or all of an unsigned integer in to the data + + Unsigned integer containing the data to pack + Number of bits of the integer to pack + + + + Pack a single bit in to the data + + Bit to pack + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unpacking a floating point value from the data + + Unpacked floating point value + + + + Unpack a variable number of bits from the data in to integer format + + Number of bits to unpack + An integer containing the unpacked bits + This function is only useful up to 32 bits + + + + Unpack a variable number of bits from the data in to unsigned + integer format + + Number of bits to unpack + An unsigned integer containing the unpacked bits + This function is only useful up to 32 bits + + + + Unpack a 16-bit signed integer + + 16-bit signed integer + + + + Unpack a 16-bit unsigned integer + + 16-bit unsigned integer + + + + Unpack a 32-bit signed integer + + 32-bit signed integer + + + + Unpack a 32-bit unsigned integer + + 32-bit unsigned integer + + + + Capabilities is the name of the bi-directional HTTP REST protocol + used to communicate non real-time transactions such as teleporting or + group messaging + + + + + Default constructor + + + + + + + + + Triggered when an event is received via the EventQueueGet + capability + + Event name + Decoded event data + The simulator that generated the event + + + Reference to the simulator this system is connected to + + + Capabilities URI this system was initialized with + + + Whether the capabilities event queue is connected and + listening for incoming events + + + + Request the URI of a named capability + + Name of the capability to request + The URI of the requested capability, or String.Empty if + the capability does not exist + + + + Process any incoming events, check to see if we have a message created for the event, + + + + + + + + + Attempts to convert an LLSD structure to a known Packet type + + Event name, this must match an actual + packet name for a Packet to be successfully built + LLSD to convert to a Packet + A Packet on success, otherwise null + + + Origin position of this coordinate frame + + + X axis of this coordinate frame, or Forward/At in grid terms + + + Y axis of this coordinate frame, or Left in grid terms + + + Z axis of this coordinate frame, or Up in grid terms + + + + + Looking direction, must be a normalized vector + Up direction, must be a normalized vector + + + + Align the coordinate frame X and Y axis with a given rotation + around the Z axis in radians + + Absolute rotation around the Z axis in + radians + + + + Access to the data server which allows searching for land, events, people, etc + + + + + Constructs a new instance of the DirectoryManager class + + An instance of GridClient + + + Classified Ad categories + + + Classified is listed in the Any category + + + Classified is shopping related + + + Classified is + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Event Categories + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Query Flags used in many of the DirectoryManager methods to specify which query to execute and how to return the results. + Flags can be combined using the | (pipe) character, not all flags are available in all queries + + + + Query the People database + + + + + + + + + + + Query the Groups database + + + Query the Events database + + + Query the land holdings database for land owned by the currently connected agent + + + + + + + Query the land holdings database for land which is owned by a Group + + + Specifies the query should pre sort the results based upon traffic + when searching the Places database + + + + + + + + + + + + + + + + + + + Specifies the query should pre sort the results in an ascending order when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results using the SalePrice field when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results by calculating the average price/sq.m (SalePrice / Area) when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results using the ParcelSize field when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results using the Name field when searching the land sales database. + This flag is only used when searching the land sales database + + + When set, only parcels less than the specified Price will be included when searching the land sales database. + This flag is only used when searching the land sales database + + + When set, only parcels greater than the specified Size will be included when searching the land sales database. + This flag is only used when searching the land sales database + + + + + + + + + + + Include PG land in results. This flag is used when searching both the Groups, Events and Land sales databases + + + Include Mature land in results. This flag is used when searching both the Groups, Events and Land sales databases + + + Include Adult land in results. This flag is used when searching both the Groups, Events and Land sales databases + + + + + + + + Land types to search dataserver for + + + + Search Auction, Mainland and Estate + + + Land which is currently up for auction + + + Parcels which are on the mainland (Linden owned) continents + + + Parcels which are on privately owned simulators + + + + The content rating of the event + + + + Event is PG + + + Event is Mature + + + Event is Adult + + + + Classified Ad Options + + There appear to be two formats the flags are packed in. + This set of flags is for the newer style + + + + + + + + + + + + + + + + + + + + + + + + Classified ad query options + + + + Include all ads in results + + + Include PG ads in results + + + Include Mature ads in results + + + Include Adult ads in results + + + + The For Sale flag in PlacesReplyData + + + + Parcel is not listed for sale + + + Parcel is For Sale + + + + A classified ad on the grid + + + + UUID for this ad, useful for looking up detailed + information about it + + + The title of this classified ad + + + Flags that show certain options applied to the classified + + + Creation date of the ad + + + Expiration date of the ad + + + Price that was paid for this ad + + + Print the struct data as a string + A string containing the field name, and field value + + + + A parcel retrieved from the dataserver such as results from the + "For-Sale" listings or "Places" Search + + + + The unique dataserver parcel ID + This id is used to obtain additional information from the entry + by using the method + + + A string containing the name of the parcel + + + The size of the parcel + This field is not returned for Places searches + + + The price of the parcel + This field is not returned for Places searches + + + If True, this parcel is flagged to be auctioned + + + If true, this parcel is currently set for sale + + + Parcel traffic + + + Print the struct data as a string + A string containing the field name, and field value + + + + An Avatar returned from the dataserver + + + + Online status of agent + This field appears to be obsolete and always returns false + + + The agents first name + + + The agents last name + + + The agents + + + Print the struct data as a string + A string containing the field name, and field value + + + + Response to a "Groups" Search + + + + The Group ID + + + The name of the group + + + The current number of members + + + Print the struct data as a string + A string containing the field name, and field value + + + + Parcel information returned from a request + + Represents one of the following: + A parcel of land on the grid that has its Show In Search flag set + A parcel of land owned by the agent making the request + A parcel of land owned by a group the agent making the request is a member of + + In a request for Group Land, the First record will contain an empty record + + Note: This is not the same as searching the land for sale data source + + + + The ID of the Agent of Group that owns the parcel + + + The name + + + The description + + + The Size of the parcel + + + The billable Size of the parcel, for mainland + parcels this will match the ActualArea field. For Group owned land this will be 10 percent smaller + than the ActualArea. For Estate land this will always be 0 + + + Indicates the ForSale status of the parcel + + + The Gridwide X position + + + The Gridwide Y position + + + The Z position of the parcel, or 0 if no landing point set + + + The name of the Region the parcel is located in + + + The Asset ID of the parcels Snapshot texture + + + The calculated visitor traffic + + + The billing product SKU + Known values are: + 023Mainland / Full Region024Estate / Full Region027Estate / Openspace029Estate / Homestead129Mainland / Homestead (Linden Owned) + + + No longer used, will always be 0 + + + Get a SL URL for the parcel + A string, containing a standard SLURL + + + Print the struct data as a string + A string containing the field name, and field value + + + + An "Event" Listing summary + + + + The ID of the event creator + + + The name of the event + + + The events ID + + + A string containing the short date/time the event will begin + + + The event start time in Unixtime (seconds since epoch) + + + The events maturity rating + + + Print the struct data as a string + A string containing the field name, and field value + + + + The details of an "Event" + + + + The events ID + + + The ID of the event creator + + + The name of the event + + + The category + + + The events description + + + The short date/time the event will begin + + + The event start time in Unixtime (seconds since epoch) UTC adjusted + + + The length of the event in minutes + + + 0 if no cover charge applies + + + The cover charge amount in L$ if applicable + + + The name of the region where the event is being held + + + The gridwide location of the event + + + The maturity rating + + + Get a SL URL for the parcel where the event is hosted + A string, containing a standard SLURL + + + Print the struct data as a string + A string containing the field name, and field value + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raises the EventInfoReply event + An EventInfoReplyEventArgs object containing the + data returned from the data server + + + Raises the DirEventsReply event + An DirEventsReplyEventArgs object containing the + data returned from the data server + + + Raises the PlacesReply event + A PlacesReplyEventArgs object containing the + data returned from the data server + + + Raises the DirPlacesReply event + A DirPlacesReplyEventArgs object containing the + data returned from the data server + + + Raises the DirClassifiedsReply event + A DirClassifiedsReplyEventArgs object containing the + data returned from the data server + + + Raises the DirGroupsReply event + A DirGroupsReplyEventArgs object containing the + data returned from the data server + + + Raises the DirPeopleReply event + A DirPeopleReplyEventArgs object containing the + data returned from the data server + + + Raises the DirLandReply event + A DirLandReplyEventArgs object containing the + data returned from the data server + + + + Query the data server for a list of classified ads containing the specified string. + Defaults to searching for classified placed in any category, and includes PG, Adult and Mature + results. + Responses are sent 16 per response packet, there is no way to know how many results a query reply will contain however assuming + the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received + The event is raised when a response is received from the simulator + + A string containing a list of keywords to search for + A UUID to correlate the results when the event is raised + + + + Query the data server for a list of classified ads which contain specified keywords (Overload) + The event is raised when a response is received from the simulator + + A string containing a list of keywords to search for + The category to search + A set of flags which can be ORed to modify query options + such as classified maturity rating. + A UUID to correlate the results when the event is raised + + Search classified ads containing the key words "foo" and "bar" in the "Any" category that are either PG or Mature + + UUID searchID = StartClassifiedSearch("foo bar", ClassifiedCategories.Any, ClassifiedQueryFlags.PG | ClassifiedQueryFlags.Mature); + + + Responses are sent 16 at a time, there is no way to know how many results a query reply will contain however assuming + the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received + + + + + Starts search for places (Overloaded) + The event is raised when a response is received from the simulator + + Search text + Each request is limited to 100 places + being returned. To get the first 100 result entries of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + A UUID to correlate the results when the event is raised + + + + Queries the dataserver for parcels of land which are flagged to be shown in search + The event is raised when a response is received from the simulator + + A string containing a list of keywords to search for separated by a space character + A set of flags which can be ORed to modify query options + such as classified maturity rating. + The category to search + Each request is limited to 100 places + being returned. To get the first 100 result entries of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + A UUID to correlate the results when the event is raised + + Search places containing the key words "foo" and "bar" in the "Any" category that are either PG or Adult + + UUID searchID = StartDirPlacesSearch("foo bar", DirFindFlags.DwellSort | DirFindFlags.IncludePG | DirFindFlags.IncludeAdult, ParcelCategory.Any, 0); + + + Additional information on the results can be obtained by using the ParcelManager.InfoRequest method + + + + + Starts a search for land sales using the directory + The event is raised when a response is received from the simulator + + What type of land to search for. Auction, + estate, mainland, "first land", etc + The OnDirLandReply event handler must be registered before + calling this function. There is no way to determine how many + results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each query. + + + + Starts a search for land sales using the directory + The event is raised when a response is received from the simulator + + What type of land to search for. Auction, + estate, mainland, "first land", etc + Maximum price to search for + Maximum area to search for + Each request is limited to 100 parcels + being returned. To get the first 100 parcels of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + The OnDirLandReply event handler must be registered before + calling this function. There is no way to determine how many + results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each query. + + + + Send a request to the data server for land sales listings + + Flags sent to specify query options + Available flags: + Specify the parcel rating with one or more of the following: + IncludePG IncludeMature IncludeAdult + Specify the field to pre sort the results with ONLY ONE of the following: + PerMeterSort NameSort AreaSort PricesSort + Specify the order the results are returned in, if not specified the results are pre sorted in a Descending Order + SortAsc + Specify additional filters to limit the results with one or both of the following: + LimitByPrice LimitByArea + Flags can be combined by separating them with the | (pipe) character + Additional details can be found in + What type of land to search for. Auction, + Estate or Mainland + Maximum price to search for when the + DirFindFlags.LimitByPrice flag is specified in findFlags + Maximum area to search for when the + DirFindFlags.LimitByArea flag is specified in findFlags + Each request is limited to 100 parcels + being returned. To get the first 100 parcels of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + + The event will be raised with the response from the simulator + There is no way to determine how many results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each reply. + Any land set for sale to either anybody or specific to the connected agent will be included in the + results if the land is included in the query + + + + // request all mainland, any maturity rating that is larger than 512 sq.m + StartLandSearch(DirFindFlags.SortAsc | DirFindFlags.PerMeterSort | DirFindFlags.LimitByArea | DirFindFlags.IncludePG | DirFindFlags.IncludeMature | DirFindFlags.IncludeAdult, SearchTypeFlags.Mainland, 0, 512, 0); + + + + + + Search for Groups + + The name or portion of the name of the group you wish to search for + Start from the match number + + + + + + Search for Groups + + The name or portion of the name of the group you wish to search for + Start from the match number + Search flags + + + + + + Search the People directory for other avatars + + The name or portion of the name of the avatar you wish to search for + + + + + + + + Search Places for parcels of land you personally own + + + + + Searches Places for land owned by the specified group + + ID of the group you want to recieve land list for (You must be a member of the group) + Transaction (Query) ID which can be associated with results from your request. + + + + Search the Places directory for parcels that are listed in search and contain the specified keywords + + A string containing the keywords to search for + Transaction (Query) ID which can be associated with results from your request. + + + + Search Places - All Options + + One of the Values from the DirFindFlags struct, ie: AgentOwned, GroupOwned, etc. + One of the values from the SearchCategory Struct, ie: Any, Linden, Newcomer + A string containing a list of keywords to search for separated by a space character + String Simulator Name to search in + LLUID of group you want to recieve results for + Transaction (Query) ID which can be associated with results from your request. + Transaction (Query) ID which can be associated with results from your request. + + + + Search All Events with specifid searchText in all categories, includes PG, Mature and Adult + + A string containing a list of keywords to search for separated by a space character + Each request is limited to 100 entries + being returned. To get the first group of entries of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + UUID of query to correlate results in callback. + + + + Search Events + + A string containing a list of keywords to search for separated by a space character + One or more of the following flags: DateEvents, IncludePG, IncludeMature, IncludeAdult + from the Enum + Multiple flags can be combined by separating the flags with the | (pipe) character + "u" for in-progress and upcoming events, -or- number of days since/until event is scheduled + For example "0" = Today, "1" = tomorrow, "2" = following day, "-1" = yesterday, etc. + Each request is limited to 100 entries + being returned. To get the first group of entries of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + EventCategory event is listed under. + UUID of query to correlate results in callback. + + + Requests Event Details + ID of Event returned from the method + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming event message + The Unique Capabilities Key + The event message containing the data + The simulator the message originated from + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming event message + The Unique Capabilities Key + The event message containing the data + The simulator the message originated from + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Contains the Event data returned from the data server from an EventInfoRequest + + + Construct a new instance of the EventInfoReplyEventArgs class + A single EventInfo object containing the details of an event + + + + A single EventInfo object containing the details of an event + + + + Contains the "Event" detail data returned from the data server + + + Construct a new instance of the DirEventsReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing the "Events" returned by the search query + + + The ID returned by + + + A list of "Events" returned by the data server + + + Contains the "Event" list data returned from the data server + + + Construct a new instance of PlacesReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing the "Places" returned by the data server query + + + The ID returned by + + + A list of "Places" returned by the data server + + + Contains the places data returned from the data server + + + Construct a new instance of the DirPlacesReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing land data returned by the data server + + + The ID returned by + + + A list containing Places data returned by the data server + + + Contains the classified data returned from the data server + + + Construct a new instance of the DirClassifiedsReplyEventArgs class + A list of classified ad data returned from the data server + + + A list containing Classified Ads returned by the data server + + + Contains the group data returned from the data server + + + Construct a new instance of the DirGroupsReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list of groups data returned by the data server + + + The ID returned by + + + A list containing Groups data returned by the data server + + + Contains the people data returned from the data server + + + Construct a new instance of the DirPeopleReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list of people data returned by the data server + + + The ID returned by + + + A list containing People data returned by the data server + + + Contains the land sales data returned from the data server + + + Construct a new instance of the DirLandReplyEventArgs class + A list of parcels for sale returned by the data server + + + A list containing land forsale data returned by the data server + + + + Represends individual HTTP Download request + + + + Default constructor + + + Constructor + + + URI of the item to fetch + + + Timout specified in milliseconds + + + Download progress callback + + + Download completed callback + + + Accept the following content type + + + + Manages async HTTP downloads with a limit on maximum + concurrent downloads + + + + Default constructor + + + Maximum number of parallel downloads from a single endpoint + + + Client certificate + + + Cleanup method + + + Setup http download request + + + Check the queue for pending work + + + Enqueue a new HTPP download + + + Describes tasks returned in LandStatReply + + + + Estate level administration and utilities + + + + + Constructor for EstateTools class + + + + + + Used in the ReportType field of a LandStatRequest + + + Used by EstateOwnerMessage packets + + + Used by EstateOwnerMessage packets + + + + + + + No flags set + + + Only return targets scripted objects + + + Only return targets objects if on others land + + + Returns target's scripted objects and objects on other parcels + + + Ground texture settings for each corner of the region + + + Used by GroundTextureHeightSettings + + + The high and low texture thresholds for each corner of the sim + + + Textures for each of the four terrain height levels + + + Upper/lower texture boundaries for each corner of the sim + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raises the TopCollidersReply event + A TopCollidersReplyEventArgs object containing the + data returned from the data server + + + Raises the TopScriptsReply event + A TopScriptsReplyEventArgs object containing the + data returned from the data server + + + Raises the EstateUsersReply event + A EstateUsersReplyEventArgs object containing the + data returned from the data server + + + Raises the EstateGroupsReply event + A EstateGroupsReplyEventArgs object containing the + data returned from the data server + + + Raises the EstateManagersReply event + A EstateManagersReplyEventArgs object containing the + data returned from the data server + + + Raises the EstateBansReply event + A EstateBansReplyEventArgs object containing the + data returned from the data server + + + Raises the EstateCovenantReply event + A EstateCovenantReplyEventArgs object containing the + data returned from the data server + + + Raises the EstateUpdateInfoReply event + A EstateUpdateInfoReplyEventArgs object containing the + data returned from the data server + + + + Requests estate information such as top scripts and colliders + + + + + + + + + + + + Requests estate settings, including estate manager and access/ban lists + + + Requests the "Top Scripts" list for the current region + + + Requests the "Top Colliders" list for the current region + + + + Set several estate specific configuration variables + + The Height of the waterlevel over the entire estate. Defaults to 20 + The maximum height change allowed above the baked terrain. Defaults to 4 + The minimum height change allowed below the baked terrain. Defaults to -4 + true to use + if True forces the sun position to the position in SunPosition + The current position of the sun on the estate, or when FixedSun is true the static position + the sun will remain. 6.0 = Sunrise, 30.0 = Sunset + + + + Request return of objects owned by specified avatar + + The Agents owning the primitives to return + specify the coverage and type of objects to be included in the return + true to perform return on entire estate + + + + + + + + + + + + Used for setting and retrieving various estate panel settings + + EstateOwnerMessage Method field + List of parameters to include + + + + Kick an avatar from an estate + + Key of Agent to remove + + + + Ban an avatar from an estate + Key of Agent to remove + Ban user from this estate and all others owned by the estate owner + + + Unban an avatar from an estate + Key of Agent to remove + /// Unban user from this estate and all others owned by the estate owner + + + Send a message dialog to everyone in an entire estate + + Message to send all users in the estate + + + + Send a message dialog to everyone in a simulator + + Message to send all users in the simulator + + + + Send an avatar back to their home location + + Key of avatar to send home + + + + Begin the region restart process + + + + + Cancels a region restart + + + + Estate panel "Region" tab settings + + + Estate panel "Debug" tab settings + + + Used for setting the region's terrain textures for its four height levels + + + + + + + + + + + Used for setting sim terrain texture heights + + + Requests the estate covenant + + + + Upload a terrain RAW file + + A byte array containing the encoded terrain data + The name of the file being uploaded + The Id of the transfer request + + + + Teleports all users home in current Estate + + + + + Remove estate manager + Key of Agent to Remove + removes manager to this estate and all others owned by the estate owner + + + + Add estate manager + Key of Agent to Add + Add agent as manager to this estate and all others owned by the estate owner + + + + Add's an agent to the estate Allowed list + Key of Agent to Add + Add agent as an allowed reisdent to All estates if true + + + + Removes an agent from the estate Allowed list + Key of Agent to Remove + Removes agent as an allowed reisdent from All estates if true + + + + Add's a group to the estate Allowed list + Key of Group to Add + Add Group as an allowed group to All estates if true + + + + Removes a group from the estate Allowed list + Key of Group to Remove + Removes Group as an allowed Group from All estates if true + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised on LandStatReply when the report type is for "top colliders" + + + Construct a new instance of the TopCollidersReplyEventArgs class + The number of returned items in LandStatReply + Dictionary of Object UUIDs to tasks returned in LandStatReply + + + + The number of returned items in LandStatReply + + + + + A Dictionary of Object UUIDs to tasks returned in LandStatReply + + + + Raised on LandStatReply when the report type is for "top Scripts" + + + Construct a new instance of the TopScriptsReplyEventArgs class + The number of returned items in LandStatReply + Dictionary of Object UUIDs to tasks returned in LandStatReply + + + + The number of scripts returned in LandStatReply + + + + + A Dictionary of Object UUIDs to tasks returned in LandStatReply + + + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateBansReplyEventArgs class + The estate's identifier on the grid + The number of returned items in LandStatReply + User UUIDs banned + + + + The identifier of the estate + + + + + The number of returned itmes + + + + + List of UUIDs of Banned Users + + + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateUsersReplyEventArgs class + The estate's identifier on the grid + The number of users + Allowed users UUIDs + + + + The identifier of the estate + + + + + The number of returned items + + + + + List of UUIDs of Allowed Users + + + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateGroupsReplyEventArgs class + The estate's identifier on the grid + The number of Groups + Allowed Groups UUIDs + + + + The identifier of the estate + + + + + The number of returned items + + + + + List of UUIDs of Allowed Groups + + + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateManagersReplyEventArgs class + The estate's identifier on the grid + The number of Managers + Managers UUIDs + + + + The identifier of the estate + + + + + The number of returned items + + + + + List of UUIDs of the Estate's Managers + + + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateCovenantReplyEventArgs class + The Covenant ID + The timestamp + The estate's name + The Estate Owner's ID (can be a GroupID) + + + + The Covenant + + + + + The timestamp + + + + + The Estate name + + + + + The Estate Owner's ID (can be a GroupID) + + + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateUpdateInfoReplyEventArgs class + The estate's name + The Estate Owners ID (can be a GroupID) + The estate's identifier on the grid + + + + + + The estate's name + + + + + The Estate Owner's ID (can be a GroupID) + + + + + The identifier of the estate on the grid + + + + + + + + + Registers, unregisters, and fires events generated by incoming packets + + + + + Default constructor + + + + + + + Object that is passed to worker threads in the ThreadPool for + firing packet callbacks + + + + Callback to fire for this packet + + + Reference to the simulator that this packet came from + + + The packet that needs to be processed + + + Reference to the GridClient object + + + + Register an event handler + + Use PacketType.Default to fire this event on every + incoming packet + Packet type to register the handler for + Callback to be fired + True if this callback should be ran + asynchronously, false to run it synchronous + + + + Unregister an event handler + + Packet type to unregister the handler for + Callback to be unregistered + + + + Fire the events registered for this packet type + + Incoming packet type + Incoming packet + Simulator this packet was received from + + + + Registers, unregisters, and fires events generated by the Capabilities + event queue + + + + + Default constructor + + Reference to the GridClient object + + + + Object that is passed to worker threads in the ThreadPool for + firing CAPS callbacks + + + + Callback to fire for this packet + + + Name of the CAPS event + + + Strongly typed decoded data + + + Reference to the simulator that generated this event + + + Reference to the GridClient object + + + + Register an new event handler for a capabilities event sent via the EventQueue + + Use String.Empty to fire this event on every CAPS event + Capability event name to register the + handler for + Callback to fire + + + + Unregister a previously registered capabilities handler + + Capability event name unregister the + handler for + Callback to unregister + + + + Fire the events registered for this event type synchronously + + Capability name + Decoded event body + Reference to the simulator that + generated this event + + + + Fire the events registered for this event type asynchronously + + Capability name + Decoded event body + Reference to the simulator that + generated this event + + + + + + + The avatar has no rights + + + The avatar can see the online status of the target avatar + + + The avatar can see the location of the target avatar on the map + + + The avatar can modify the ojects of the target avatar + + + + This class holds information about an avatar in the friends list. There are two ways + to interface to this class. The first is through the set of boolean properties. This is the typical + way clients of this class will use it. The second interface is through two bitflag properties, + TheirFriendsRights and MyFriendsRights + + + + + Used internally when building the initial list of friends at login time + + System ID of the avatar being prepesented + Rights the friend has to see you online and to modify your objects + Rights you have to see your friend online and to modify their objects + + + + System ID of the avatar + + + + + full name of the avatar + + + + + True if the avatar is online + + + + + True if the friend can see if I am online + + + + + True if the friend can see me on the map + + + + + True if the freind can modify my objects + + + + + True if I can see if my friend is online + + + + + True if I can see if my friend is on the map + + + + + True if I can modify my friend's objects + + + + + My friend's rights represented as bitmapped flags + + + + + My rights represented as bitmapped flags + + + + + FriendInfo represented as a string + + A string reprentation of both my rights and my friends rights + + + + This class is used to add and remove avatars from your friends list and to manage their permission. + + + + + Internal constructor + + A reference to the GridClient Object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + + A dictionary of key/value pairs containing known friends of this avatar. + The Key is the of the friend, the value is a + object that contains detailed information including permissions you have and have given to the friend + + + + + A Dictionary of key/value pairs containing current pending frienship offers. + The key is the of the avatar making the request, + the value is the of the request which is used to accept + or decline the friendship offer + + + + Raised when the simulator sends notification one of the members in our friends list comes online + + + Raised when the simulator sends notification one of the members in our friends list goes offline + + + Raised when the simulator sends notification one of the members in our friends list grants or revokes permissions + + + Raised when the simulator sends us the names on our friends list + + + Raised when the simulator sends notification another agent is offering us friendship + + + Raised when a request we sent to friend another agent is accepted or declined + + + Raised when the simulator sends notification one of the members in our friends list has terminated + our friendship + + + Raised when the simulator sends the location of a friend we have + requested map location info for + + + Raises the FriendOnline event + A FriendInfoEventArgs object containing the + data returned from the data server + + + Raises the FriendOffline event + A FriendInfoEventArgs object containing the + data returned from the data server + + + Raises the FriendRightsUpdate event + A FriendInfoEventArgs object containing the + data returned from the data server + + + Raises the FriendNames event + A FriendNamesEventArgs object containing the + data returned from the data server + + + Raises the FriendshipOffered event + A FriendshipOfferedEventArgs object containing the + data returned from the data server + + + Raises the FriendshipResponse event + A FriendshipResponseEventArgs object containing the + data returned from the data server + + + Raises the FriendshipTerminated event + A FriendshipTerminatedEventArgs object containing the + data returned from the data server + + + Raises the FriendFoundReply event + A FriendFoundReplyEventArgs object containing the + data returned from the data server + + + + Accept a friendship request + + agentID of avatatar to form friendship with + imSessionID of the friendship request message + + + + Decline a friendship request + + + of friend + imSessionID of the friendship request message + + + + Overload: Offer friendship to an avatar. + + System ID of the avatar you are offering friendship to + + + + Offer friendship to an avatar. + + System ID of the avatar you are offering friendship to + A message to send with the request + + + + Terminate a friendship with an avatar + + System ID of the avatar you are terminating the friendship with + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Change the rights of a friend avatar. + + the of the friend + the new rights to give the friend + This method will implicitly set the rights to those passed in the rights parameter. + + + + Use to map a friends location on the grid. + + Friends UUID to find + + + + + + + Use to track a friends movement on the grid + + Friends Key + + + + Ask for a notification of friend's online status + + Friend's UUID + + + + This handles the asynchronous response of a RequestAvatarNames call. + + + + names cooresponding to the the list of IDs sent the the RequestAvatarNames call. + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Populate FriendList with data from the login reply + + true if login was successful + true if login request is requiring a redirect + A string containing the response to the login request + A string containing the reason for the request + A object containing the decoded + reply from the login server + + + Contains information on a member of our friends list + + + + Construct a new instance of the FriendInfoEventArgs class + + The FriendInfo + + + Get the FriendInfo + + + Contains Friend Names + + + + Construct a new instance of the FriendNamesEventArgs class + + A dictionary where the Key is the ID of the Agent, + and the Value is a string containing their name + + + A dictionary where the Key is the ID of the Agent, + and the Value is a string containing their name + + + Sent when another agent requests a friendship with our agent + + + + Construct a new instance of the FriendshipOfferedEventArgs class + + The ID of the agent requesting friendship + The name of the agent requesting friendship + The ID of the session, used in accepting or declining the + friendship offer + + + Get the ID of the agent requesting friendship + + + Get the name of the agent requesting friendship + + + Get the ID of the session, used in accepting or declining the + friendship offer + + + A response containing the results of our request to form a friendship with another agent + + + + Construct a new instance of the FriendShipResponseEventArgs class + + The ID of the agent we requested a friendship with + The name of the agent we requested a friendship with + true if the agent accepted our friendship offer + + + Get the ID of the agent we requested a friendship with + + + Get the name of the agent we requested a friendship with + + + true if the agent accepted our friendship offer + + + Contains data sent when a friend terminates a friendship with us + + + + Construct a new instance of the FrindshipTerminatedEventArgs class + + The ID of the friend who terminated the friendship with us + The name of the friend who terminated the friendship with us + + + Get the ID of the agent that terminated the friendship with us + + + Get the name of the agent that terminated the friendship with us + + + + Data sent in response to a request which contains the information to allow us to map the friends location + + + + + Construct a new instance of the FriendFoundReplyEventArgs class + + The ID of the agent we have requested location information for + The region handle where our friend is located + The simulator local position our friend is located + + + Get the ID of the agent we have received location information for + + + Get the region handle where our mapped friend is located + + + Get the simulator local position where our friend is located + + + + Main class to expose grid functionality to clients. All of the + classes needed for sending and receiving data are accessible through + this class. + + + + // Example minimum code required to instantiate class and + // connect to a simulator. + using System; + using System.Collections.Generic; + using System.Text; + using OpenMetaverse; + namespace FirstBot + { + class Bot + { + public static GridClient Client; + static void Main(string[] args) + { + Client = new GridClient(); // instantiates the GridClient class + // to the global Client object + // Login to Simulator + Client.Network.Login("FirstName", "LastName", "Password", "FirstBot", "1.0"); + // Wait for a Keypress + Console.ReadLine(); + // Logout of simulator + Client.Network.Logout(); + } + } + } + + + + + + Default constructor + + + + Networking subsystem + + + Settings class including constant values and changeable + parameters for everything + + + Parcel (subdivided simulator lots) subsystem + + + Our own avatars subsystem + + + Other avatars subsystem + + + Estate subsystem + + + Friends list subsystem + + + Grid (aka simulator group) subsystem + + + Object subsystem + + + Group subsystem + + + Asset subsystem + + + Appearance subsystem + + + Inventory subsystem + + + Directory searches including classifieds, people, land + sales, etc + + + Handles land, wind, and cloud heightmaps + + + Handles sound-related networking + + + Throttling total bandwidth usage, or allocating bandwidth + for specific data stream types + + + + Return the full name of this instance + + Client avatars full name + + + + Map layer request type + + + + Objects and terrain are shown + + + Only the terrain is shown, no objects + + + Overlay showing land for sale and for auction + + + + Type of grid item, such as telehub, event, populator location, etc. + + + + Telehub + + + PG rated event + + + Mature rated event + + + Popular location + + + Locations of avatar groups in a region + + + Land for sale + + + Classified ad + + + Adult rated event + + + Adult land for sale + + + + Information about a region on the grid map + + + + Sim X position on World Map + + + Sim Y position on World Map + + + Sim Name (NOTE: In lowercase!) + + + + + + + Appears to always be zero (None) + + + Sim's defined Water Height + + + + + + + UUID of the World Map image + + + Unique identifier for this region, a combination of the X + and Y position + + + + + + + + + + + + + + + + + + + + + + + + Visual chunk of the grid map + + + + + Base class for Map Items + + + + The Global X position of the item + + + The Global Y position of the item + + + Get the Local X position of the item + + + Get the Local Y position of the item + + + Get the Handle of the region + + + + Represents an agent or group of agents location + + + + + Represents a Telehub location + + + + + Represents a non-adult parcel of land for sale + + + + + Represents an Adult parcel of land for sale + + + + + Represents a PG Event + + + + + Represents a Mature event + + + + + Represents an Adult event + + + + + Manages grid-wide tasks such as the world map + + + + + Constructor + + Instance of GridClient object to associate with this GridManager instance + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + A dictionary of all the regions, indexed by region name + + + A dictionary of all the regions, indexed by region handle + + + Raised when the simulator sends a + containing the location of agents in the simulator + + + Raised when the simulator sends a Region Data in response to + a Map request + + + Raised when the simulator sends GridLayer object containing + a map tile coordinates and texture information + + + Raised when the simulator sends GridItems object containing + details on events, land sales at a specific location + + + Raised in response to a Region lookup + + + Unknown + + + Current direction of the sun + + + Current angular velocity of the sun + + + Current world time + + + Raises the CoarseLocationUpdate event + A CoarseLocationUpdateEventArgs object containing the + data sent by simulator + + + Raises the GridRegion event + A GridRegionEventArgs object containing the + data sent by simulator + + + Raises the GridLayer event + A GridLayerEventArgs object containing the + data sent by simulator + + + Raises the GridItems event + A GridItemEventArgs object containing the + data sent by simulator + + + Raises the RegionHandleReply event + A RegionHandleReplyEventArgs object containing the + data sent by simulator + + + + + + + + + + Request a map layer + + The name of the region + The type of layer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Request data for all mainland (Linden managed) simulators + + + + + Request the region handle for the specified region UUID + + UUID of the region to look up + + + + Get grid region information using the region name, this function + will block until it can find the region or gives up + + Name of sim you're looking for + Layer that you are requesting + Will contain a GridRegion for the sim you're + looking for if successful, otherwise an empty structure + True if the GridRegion was successfully fetched, otherwise + false + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Avatar group management + + + + Key of Group Member + + + Total land contribution + + + Online status information + + + Abilities that the Group Member has + + + Current group title + + + Is a group owner + + + + Role manager for a group + + + + Key of the group + + + Key of Role + + + Name of Role + + + Group Title associated with Role + + + Description of Role + + + Abilities Associated with Role + + + Returns the role's title + The role's title + + + + Class to represent Group Title + + + + Key of the group + + + ID of the role title belongs to + + + Group Title + + + Whether title is Active + + + Returns group title + + + + Represents a group on the grid + + + + Key of Group + + + Key of Group Insignia + + + Key of Group Founder + + + Key of Group Role for Owners + + + Name of Group + + + Text of Group Charter + + + Title of "everyone" role + + + Is the group open for enrolement to everyone + + + Will group show up in search + + + + + + + + + + + + + + + Is the group Mature + + + Cost of group membership + + + + + + + + + + + The total number of current members this group has + + + The number of roles this group has configured + + + Show this group in agent's profile + + + Returns the name of the group + A string containing the name of the group + + + + A group Vote + + + + Key of Avatar who created Vote + + + Text of the Vote proposal + + + Total number of votes + + + + A group proposal + + + + The Text of the proposal + + + The minimum number of members that must vote before proposal passes or failes + + + The required ration of yes/no votes required for vote to pass + The three options are Simple Majority, 2/3 Majority, and Unanimous + TODO: this should be an enum + + The duration in days votes are accepted + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Struct representing a group notice + + + + + + + + + + + + + + + + + + + + + + + + + + + Struct representing a group notice list entry + + + + Notice ID + + + Creation timestamp of notice + + + Agent name who created notice + + + Notice subject + + + Is there an attachment? + + + Attachment Type + + + + Struct representing a member of a group chat session and their settings + + + + The of the Avatar + + + True if user has voice chat enabled + + + True of Avatar has moderator abilities + + + True if a moderator has muted this avatars chat + + + True if a moderator has muted this avatars voice + + + + Role update flags + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Can send invitations to groups default role + + + Can eject members from group + + + Can toggle 'Open Enrollment' and change 'Signup fee' + + + Member is visible in the public member list + + + Can create new roles + + + Can delete existing roles + + + Can change Role names, titles and descriptions + + + Can assign other members to assigners role + + + Can assign other members to any role + + + Can remove members from roles + + + Can assign and remove abilities in roles + + + Can change group Charter, Insignia, 'Publish on the web' and which + members are publicly visible in group member listings + + + Can buy land or deed land to group + + + Can abandon group owned land to Governor Linden on mainland, or Estate owner for + private estates + + + Can set land for-sale information on group owned parcels + + + Can subdivide and join parcels + + + Can join group chat sessions + + + Can use voice chat in Group Chat sessions + + + Can moderate group chat sessions + + + Can toggle "Show in Find Places" and set search category + + + Can change parcel name, description, and 'Publish on web' settings + + + Can set the landing point and teleport routing on group land + + + Can change music and media settings + + + Can toggle 'Edit Terrain' option in Land settings + + + Can toggle various About Land > Options settings + + + Can always terraform land, even if parcel settings have it turned off + + + Can always fly while over group owned land + + + Can always rez objects on group owned land + + + Can always create landmarks for group owned parcels + + + Can set home location on any group owned parcel + + + Can modify public access settings for group owned parcels + + + Can manager parcel ban lists on group owned land + + + Can manage pass list sales information + + + Can eject and freeze other avatars on group owned land + + + Can return objects set to group + + + Can return non-group owned/set objects + + + Can return group owned objects + + + Can landscape using Linden plants + + + Can deed objects to group + + + Can move group owned objects + + + Can set group owned objects for-sale + + + Pay group liabilities and receive group dividends + + + Can send group notices + + + Can receive group notices + + + Can create group proposals + + + Can vote on group proposals + + + + Handles all network traffic related to reading and writing group + information + + + + + Construct a new instance of the GroupManager class + + A reference to the current instance + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + A reference to the current instance + + + Currently-active group members requests + + + Currently-active group roles requests + + + Currently-active group role-member requests + + + Dictionary keeping group members while request is in progress + + + Dictionary keeping mebmer/role mapping while request is in progress + + + Dictionary keeping GroupRole information while request is in progress + + + Caches group name lookups + + + Raised when the simulator sends us data containing + our current group membership + + + Raised when the simulator responds to a RequestGroupName + or RequestGroupNames request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when a response to a RequestGroupAccountSummary is returned + by the simulator + + + Raised when a request to create a group is successful + + + Raised when a request to join a group either + fails or succeeds + + + Raised when a request to leave a group either + fails or succeeds + + + Raised when A group is removed from the group server + + + Raised when a request to eject a member from a group either + fails or succeeds + + + Raised when the simulator sends us group notices + + + + Raised when another agent invites our avatar to join a group + + + Raises the CurrentGroups event + A CurrentGroupsEventArgs object containing the + data sent from the simulator + + + Raises the GroupNamesReply event + A GroupNamesEventArgs object containing the + data response from the simulator + + + Raises the GroupProfile event + An GroupProfileEventArgs object containing the + data returned from the simulator + + + Raises the GroupMembers event + A GroupMembersEventArgs object containing the + data returned from the simulator + + + Raises the GroupRolesDataReply event + A GroupRolesDataReplyEventArgs object containing the + data returned from the simulator + + + Raises the GroupRoleMembersReply event + A GroupRolesRoleMembersReplyEventArgs object containing the + data returned from the simulator + + + Raises the GroupTitlesReply event + A GroupTitlesReplyEventArgs object containing the + data returned from the simulator + + + Raises the GroupAccountSummary event + A GroupAccountSummaryReplyEventArgs object containing the + data returned from the simulator + + + Raises the GroupCreated event + An GroupCreatedEventArgs object containing the + data returned from the simulator + + + Raises the GroupJoined event + A GroupOperationEventArgs object containing the + result of the operation returned from the simulator + + + Raises the GroupLeft event + A GroupOperationEventArgs object containing the + result of the operation returned from the simulator + + + Raises the GroupDropped event + An GroupDroppedEventArgs object containing the + the group your agent left + + + Raises the GroupMemberEjected event + An GroupMemberEjectedEventArgs object containing the + data returned from the simulator + + + Raises the GroupNoticesListReply event + An GroupNoticesListReplyEventArgs object containing the + data returned from the simulator + + + Raises the GroupInvitation event + An GroupInvitationEventArgs object containing the + data returned from the simulator + + + + Request a current list of groups the avatar is a member of. + + CAPS Event Queue must be running for this to work since the results + come across CAPS. + + + + Lookup name of group based on groupID + + groupID of group to lookup name for. + + + + Request lookup of multiple group names + + List of group IDs to request. + + + Lookup group profile data such as name, enrollment, founder, logo, etc + Subscribe to OnGroupProfile event to receive the results. + group ID (UUID) + + + Request a list of group members. + Subscribe to OnGroupMembers event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Request group roles + Subscribe to OnGroupRoles event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Request members (members,role) role mapping for a group. + Subscribe to OnGroupRolesMembers event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Request a groups Titles + Subscribe to OnGroupTitles event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Begin to get the group account summary + Subscribe to the OnGroupAccountSummary event to receive the results. + group ID (UUID) + How long of an interval + Which interval (0 for current, 1 for last) + + + Invites a user to a group + The group to invite to + A list of roles to invite a person to + Key of person to invite + + + Set a group as the current active group + group ID (UUID) + + + Change the role that determines your active title + Group ID to use + Role ID to change to + + + Set this avatar's tier contribution + Group ID to change tier in + amount of tier to donate + + + + Save wheather agent wants to accept group notices and list this group in their profile + + Group + Accept notices from this group + List this group in the profile + + + Request to join a group + Subscribe to OnGroupJoined event for confirmation. + group ID (UUID) to join. + + + + Request to create a new group. If the group is successfully + created, L$100 will automatically be deducted + + Subscribe to OnGroupCreated event to receive confirmation. + Group struct containing the new group info + + + Update a group's profile and other information + Groups ID (UUID) to update. + Group struct to update. + + + Eject a user from a group + Group ID to eject the user from + Avatar's key to eject + + + Update role information + Modified role to be updated + + + Create a new group role + Group ID to update + Role to create + + + Delete a group role + Group ID to update + Role to delete + + + Remove an avatar from a role + Group ID to update + Role ID to be removed from + Avatar's Key to remove + + + Assign an avatar to a role + Group ID to update + Role ID to assign to + Avatar's ID to assign to role + + + Request the group notices list + Group ID to fetch notices for + + + Request a group notice by key + ID of group notice + + + Send out a group notice + Group ID to update + + GroupNotice structure containing notice data + + + Start a group proposal (vote) + The Group ID to send proposal to + + GroupProposal structure containing the proposal + + + Request to leave a group + Subscribe to OnGroupLeft event to receive confirmation + The group to leave + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Contains the current groups your agent is a member of + + + Construct a new instance of the CurrentGroupsEventArgs class + The current groups your agent is a member of + + + Get the current groups your agent is a member of + + + A Dictionary of group names, where the Key is the groups ID and the value is the groups name + + + Construct a new instance of the GroupNamesEventArgs class + The Group names dictionary + + + Get the Group Names dictionary + + + Represents the members of a group + + + + Construct a new instance of the GroupMembersReplyEventArgs class + + The ID of the request + The ID of the group + The membership list of the group + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the dictionary of members + + + Represents the roles associated with a group + + + Construct a new instance of the GroupRolesDataReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The dictionary containing the roles + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the dictionary containing the roles + + + Represents the Role to Member mappings for a group + + + Construct a new instance of the GroupRolesMembersReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The member to roles map + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the member to roles map + + + Represents the titles for a group + + + Construct a new instance of the GroupTitlesReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The titles + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the titles + + + Represents the summary data for a group + + + Construct a new instance of the GroupAccountSummaryReplyEventArgs class + The ID of the group + The summary data + + + Get the ID of the group + + + Get the summary data + + + A response to a group create request + + + Construct a new instance of the GroupCreatedReplyEventArgs class + The ID of the group + the success or faulure of the request + A string containing additional information + + + Get the ID of the group + + + true of the group was created successfully + + + A string containing the message + + + Represents a response to a request + + + Construct a new instance of the GroupOperationEventArgs class + The ID of the group + true of the request was successful + + + Get the ID of the group + + + true of the request was successful + + + Represents your agent leaving a group + + + Construct a new instance of the GroupDroppedEventArgs class + The ID of the group + + + Get the ID of the group + + + Represents a list of active group notices + + + Construct a new instance of the GroupNoticesListReplyEventArgs class + The ID of the group + The list containing active notices + + + Get the ID of the group + + + Get the notices list + + + Represents the profile of a group + + + Construct a new instance of the GroupProfileEventArgs class + The group profile + + + Get the group profile + + + + Provides notification of a group invitation request sent by another Avatar + + The invitation is raised when another avatar makes an offer for our avatar + to join a group. + + + The ID of the Avatar sending the group invitation + + + The name of the Avatar sending the group invitation + + + A message containing the request information which includes + the name of the group, the groups charter and the fee to join details + + + The Simulator + + + Set to true to accept invitation, false to decline + + + + Static helper functions and global variables + + + + + Passed to Logger.Log() to identify the severity of a log entry + + + + No logging information will be output + + + Non-noisy useful information, may be helpful in + debugging a problem + + + A non-critical error occurred. A warning will not + prevent the rest of the library from operating as usual, + although it may be indicative of an underlying issue + + + A critical error has occurred. Generally this will + be followed by the network layer shutting down, although the + stability of the library after an error is uncertain + + + Used for internal testing, this logging level can + generate very noisy (long and/or repetitive) messages. Don't + pass this to the Log() function, use DebugLog() instead. + + + + This header flag signals that ACKs are appended to the packet + + + This header flag signals that this packet has been sent before + + + This header flags signals that an ACK is expected for this packet + + + This header flag signals that the message is compressed using zerocoding + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Given an X/Y location in absolute (grid-relative) terms, a region + handle is returned along with the local X/Y location in that region + + The absolute X location, a number such as + 255360.35 + The absolute Y location, a number such as + 255360.35 + The sim-local X position of the global X + position, a value from 0.0 to 256.0 + The sim-local Y position of the global Y + position, a value from 0.0 to 256.0 + A 64-bit region handle that can be used to teleport to + + + + Converts a floating point number to a terse string format used for + transmitting numbers in wearable asset files + + Floating point number to convert to a string + A terse string representation of the input number + + + + Convert a variable length field (byte array) to a string, with a + field name prepended to each line of the output + + If the byte array has unprintable characters in it, a + hex dump will be written instead + The StringBuilder object to write to + The byte array to convert to a string + A field name to prepend to each line of output + + + + Decode a zerocoded byte array, used to decompress packets marked + with the zerocoded flag + + Any time a zero is encountered, the next byte is a count + of how many zeroes to expand. One zero is encoded with 0x00 0x01, + two zeroes is 0x00 0x02, three zeroes is 0x00 0x03, etc. The + first four bytes are copied directly to the output buffer. + + The byte array to decode + The length of the byte array to decode. This + would be the length of the packet up to (but not including) any + appended ACKs + The output byte array to decode to + The length of the output buffer + + + + Encode a byte array with zerocoding. Used to compress packets marked + with the zerocoded flag. Any zeroes in the array are compressed down + to a single zero byte followed by a count of how many zeroes to expand + out. A single zero becomes 0x00 0x01, two zeroes becomes 0x00 0x02, + three zeroes becomes 0x00 0x03, etc. The first four bytes are copied + directly to the output buffer. + + The byte array to encode + The length of the byte array to encode + The output byte array to encode to + The length of the output buffer + + + + Calculates the CRC (cyclic redundancy check) needed to upload inventory. + + Creation date + Sale type + Inventory type + Type + Asset ID + Group ID + Sale price + Owner ID + Creator ID + Item ID + Folder ID + Everyone mask (permissions) + Flags + Next owner mask (permissions) + Group mask (permissions) + Owner mask (permissions) + The calculated CRC + + + + Attempts to load a file embedded in the assembly + + The filename of the resource to load + A Stream for the requested file, or null if the resource + was not successfully loaded + + + + Attempts to load a file either embedded in the assembly or found in + a given search path + + The filename of the resource to load + An optional path that will be searched if + the asset is not found embedded in the assembly + A Stream for the requested file, or null if the resource + was not successfully loaded + + + + Converts a list of primitives to an object that can be serialized + with the LLSD system + + Primitives to convert to a serializable object + An object that can be serialized with LLSD + + + + Deserializes OSD in to a list of primitives + + Structure holding the serialized primitive list, + must be of the SDMap type + A list of deserialized primitives + + + + Converts a struct or class object containing fields only into a key value separated string + + The struct object + A string containing the struct fields as the keys, and the field value as the value separated + + + // Add the following code to any struct or class containing only fields to override the ToString() + // method to display the values of the passed object + /// Print the struct data as a string + ///A string containing the field name, and field value + public override string ToString() + { + return Helpers.StructToString(this); + } + + + + + + The InternalDictionary class is used through the library for storing key/value pairs. + It is intended to be a replacement for the generic Dictionary class and should + be used in its place. It contains several methods for allowing access to the data from + outside the library that are read only and thread safe. + + Key + Value + + + + Initializes a new instance of the Class + with the specified key/value, has the default initial capacity. + + + + // initialize a new InternalDictionary named testDict with a string as the key and an int as the value. + public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(); + + + + + + Initializes a new instance of the Class + with the specified key/value, has its initial valies copied from the specified + + + + to copy initial values from + + + // initialize a new InternalDictionary named testAvName with a UUID as the key and an string as the value. + // populates with copied values from example KeyNameCache Dictionary. + // create source dictionary + Dictionary<UUID, string> KeyNameCache = new Dictionary<UUID, string>(); + KeyNameCache.Add("8300f94a-7970-7810-cf2c-fc9aa6cdda24", "Jack Avatar"); + KeyNameCache.Add("27ba1e40-13f7-0708-3e98-5819d780bd62", "Jill Avatar"); + // Initialize new dictionary. + public InternalDictionary<UUID, string> testAvName = new InternalDictionary<UUID, string>(KeyNameCache); + + + + + + Initializes a new instance of the Class + with the specified key/value, With its initial capacity specified. + + Initial size of dictionary + + + // initialize a new InternalDictionary named testDict with a string as the key and an int as the value, + // initially allocated room for 10 entries. + public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(10); + + + + + Internal dictionary that this class wraps around. Do not + modify or enumerate the contents of this dictionary without locking + on this member + + + + Indexer for the dictionary + + The key + The value + + + + Gets the number of Key/Value pairs contained in the + + + + Try to get entry from with specified key + + Key to use for lookup + Value returned + + if specified key exists, if not found + + + // find your avatar using the Simulator.ObjectsAvatars InternalDictionary: + Avatar av; + if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) + Console.WriteLine("Found Avatar {0}", av.Name); + + + + + + + Finds the specified match. + + The match. + Matched value + + + // use a delegate to find a prim in the ObjectsPrimitives InternalDictionary + // with the ID 95683496 + uint findID = 95683496; + Primitive findPrim = sim.ObjectsPrimitives.Find( + delegate(Primitive prim) { return prim.ID == findID; }); + + + + + Find All items in an + return matching items. + a containing found items. + + Find All prims within 20 meters and store them in a List + + int radius = 20; + List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( + delegate(Primitive prim) { + Vector3 pos = prim.Position; + return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); + } + ); + + + + Find All items in an + return matching keys. + a containing found keys. + + Find All keys which also exist in another dictionary + + List<UUID> matches = myDict.FindAll( + delegate(UUID id) { + return myOtherDict.ContainsKey(id); + } + ); + + + + Perform an on each entry in an + + to perform + + + // Iterates over the ObjectsPrimitives InternalDictionary and prints out some information. + Client.Network.CurrentSim.ObjectsPrimitives.ForEach( + delegate(Primitive prim) + { + if (prim.Text != null) + { + Console.WriteLine("NAME={0} ID = {1} TEXT = '{2}'", + prim.PropertiesFamily.Name, prim.ID, prim.Text); + } + }); + + + + + Perform an on each key of an + + to perform + + + + Perform an on each KeyValuePair of an + + to perform + + + Check if Key exists in Dictionary + Key to check for + + if found, otherwise + + + Check if Value exists in Dictionary + Value to check for + + if found, otherwise + + + + Adds the specified key to the dictionary, dictionary locking is not performed, + + The key + The value + + + + Removes the specified key, dictionary locking is not performed + + The key. + + if successful, otherwise + + + + Exception class to identify inventory exceptions + + + + + Responsible for maintaining inventory structure. Inventory constructs nodes + and manages node children as is necessary to maintain a coherant hirarchy. + Other classes should not manipulate or create InventoryNodes explicitly. When + A node's parent changes (when a folder is moved, for example) simply pass + Inventory the updated InventoryFolder and it will make the appropriate changes + to its internal representation. + + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + + By using the bracket operator on this class, the program can get the + InventoryObject designated by the specified uuid. If the value for the corresponding + UUID is null, the call is equivelant to a call to RemoveNodeFor(this[uuid]). + If the value is non-null, it is equivelant to a call to UpdateNodeFor(value), + the uuid parameter is ignored. + + The UUID of the InventoryObject to get or set, ignored if set to non-null value. + The InventoryObject corresponding to uuid. + + + + The root folder of this avatars inventory + + + + + The default shared library folder + + + + + The root node of the avatars inventory + + + + + The root node of the default shared library + + + + Raises the InventoryObjectUpdated Event + A InventoryObjectUpdatedEventArgs object containing + the data sent from the simulator + + + Raises the InventoryObjectRemoved Event + A InventoryObjectRemovedEventArgs object containing + the data sent from the simulator + + + Raises the InventoryObjectAdded Event + A InventoryObjectAddedEventArgs object containing + the data sent from the simulator + + + + Returns the contents of the specified folder + + A folder's UUID + The contents of the folder corresponding to folder + When folder does not exist in the inventory + + + + Updates the state of the InventoryNode and inventory data structure that + is responsible for the InventoryObject. If the item was previously not added to inventory, + it adds the item, and updates structure accordingly. If it was, it updates the + InventoryNode, changing the parent node if item.parentUUID does + not match node.Parent.Data.UUID. + You can not set the inventory root folder using this method + + The InventoryObject to store + + + + Removes the InventoryObject and all related node data from Inventory. + + The InventoryObject to remove. + + + + Used to find out if Inventory contains the InventoryObject + specified by uuid. + + The UUID to check. + true if inventory contains uuid, false otherwise + + + + Saves the current inventory structure to a cache file + + Name of the cache file to save to + + + + Loads in inventory cache file into the inventory structure. Note only valid to call after login has been successful. + + Name of the cache file to load + The number of inventory items sucessfully reconstructed into the inventory node tree + + + Sort by name + + + Sort by date + + + Sort folders by name, regardless of whether items are + sorted by name or date + + + Place system folders at the top + + + + Possible destinations for DeRezObject request + + + + + + + + Copy from in-world to agent inventory + + + Derez to TaskInventory + + + + + + + Take Object + + + + + + + Delete Object + + + Put an avatar attachment into agent inventory + + + + + + + Return an object back to the owner's inventory + + + Return a deeded object back to the last owner's inventory + + + + Upper half of the Flags field for inventory items + + + + Indicates that the NextOwner permission will be set to the + most restrictive set of permissions found in the object set + (including linkset items and object inventory items) on next rez + + + Indicates that the object sale information has been + changed + + + If set, and a slam bit is set, indicates BaseMask will be overwritten on Rez + + + If set, and a slam bit is set, indicates OwnerMask will be overwritten on Rez + + + If set, and a slam bit is set, indicates GroupMask will be overwritten on Rez + + + If set, and a slam bit is set, indicates EveryoneMask will be overwritten on Rez + + + If set, and a slam bit is set, indicates NextOwnerMask will be overwritten on Rez + + + Indicates whether this object is composed of multiple + items or not + + + Indicates that the asset is only referenced by this + inventory item. If this item is deleted or updated to reference a + new assetID, the asset can be deleted + + + + Base Class for Inventory Items + + + + + Constructor, takes an itemID as a parameter + + The of the item + + + + + + + + + + of item/folder + + + + of parent folder + + + Name of item/folder + + + Item/Folder Owners + + + + + + + + + + Generates a number corresponding to the value of the object to support the use of a hash table, + suitable for use in hashing algorithms and data structures such as a hash table + + A Hashcode of all the combined InventoryBase fields + + + + Determine whether the specified object is equal to the current object + + InventoryBase object to compare against + true if objects are the same + + + + Determine whether the specified object is equal to the current object + + InventoryBase object to compare against + true if objects are the same + + + + An Item in Inventory + + + + + Construct a new InventoryItem object + + The of the item + + + + Construct a new InventoryItem object of a specific Type + + The type of item from + + of the item + + + + + + + + + The of this item + + + The combined of this item + + + The type of item from + + + The type of item from the enum + + + The of the creator of this item + + + A Description of this item + + + The s this item is set to or owned by + + + If true, item is owned by a group + + + The price this item can be purchased for + + + The type of sale from the enum + + + Combined flags from + + + Time and date this inventory item was created, stored as + UTC (Coordinated Universal Time) + + + Used to update the AssetID in requests sent to the server + + + The of the previous owner of the item + + + + Indicates inventory item is a link + + True if inventory item is a link to another inventory item + + + + + + + + + + Generates a number corresponding to the value of the object to support the use of a hash table. + Suitable for use in hashing algorithms and data structures such as a hash table + + A Hashcode of all the combined InventoryItem fields + + + + Compares an object + + The object to compare + true if comparison object matches + + + + Determine whether the specified object is equal to the current object + + The object to compare against + true if objects are the same + + + + Determine whether the specified object is equal to the current object + + The object to compare against + true if objects are the same + + + + InventoryTexture Class representing a graphical image + + + + + + Construct an InventoryTexture object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryTexture object from a serialization stream + + + + + InventorySound Class representing a playable sound + + + + + Construct an InventorySound object + + A which becomes the + objects AssetUUID + + + + Construct an InventorySound object from a serialization stream + + + + + InventoryCallingCard Class, contains information on another avatar + + + + + Construct an InventoryCallingCard object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryCallingCard object from a serialization stream + + + + + InventoryLandmark Class, contains details on a specific location + + + + + Construct an InventoryLandmark object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryLandmark object from a serialization stream + + + + + Landmarks use the InventoryItemFlags struct and will have a flag of 1 set if they have been visited + + + + + InventoryObject Class contains details on a primitive or coalesced set of primitives + + + + + Construct an InventoryObject object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryObject object from a serialization stream + + + + + Gets or sets the upper byte of the Flags value + + + + + Gets or sets the object attachment point, the lower byte of the Flags value + + + + + InventoryNotecard Class, contains details on an encoded text document + + + + + Construct an InventoryNotecard object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryNotecard object from a serialization stream + + + + + InventoryCategory Class + + TODO: Is this even used for anything? + + + + Construct an InventoryCategory object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryCategory object from a serialization stream + + + + + InventoryLSL Class, represents a Linden Scripting Language object + + + + + Construct an InventoryLSL object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryLSL object from a serialization stream + + + + + InventorySnapshot Class, an image taken with the viewer + + + + + Construct an InventorySnapshot object + + A which becomes the + objects AssetUUID + + + + Construct an InventorySnapshot object from a serialization stream + + + + + InventoryAttachment Class, contains details on an attachable object + + + + + Construct an InventoryAttachment object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryAttachment object from a serialization stream + + + + + Get the last AttachmentPoint this object was attached to + + + + + InventoryWearable Class, details on a clothing item or body part + + + + + Construct an InventoryWearable object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryWearable object from a serialization stream + + + + + The , Skin, Shape, Skirt, Etc + + + + + InventoryAnimation Class, A bvh encoded object which animates an avatar + + + + + Construct an InventoryAnimation object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryAnimation object from a serialization stream + + + + + InventoryGesture Class, details on a series of animations, sounds, and actions + + + + + Construct an InventoryGesture object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryGesture object from a serialization stream + + + + + A folder contains s and has certain attributes specific + to itself + + + + + Constructor + + UUID of the folder + + + + Construct an InventoryFolder object from a serialization stream + + + + The Preferred for a folder. + + + The Version of this folder + + + Number of child items this folder contains. + + + + + + + + + + Get Serilization data for this InventoryFolder object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tools for dealing with agents inventory + + + + + Default constructor + + Reference to the GridClient object + + + + Callback for inventory item creation finishing + + Whether the request to create an inventory + item succeeded or not + Inventory item being created. If success is + false this will be null + + + + Callback for an inventory item being create from an uploaded asset + + true if inventory item creation was successful + + + + + + + + + + + + + + + + Reply received when uploading an inventory asset + + Has upload been successful + Error message if upload failed + Inventory asset UUID + New asset UUID + + + + Delegate that is invoked when script upload is completed + + Has upload succeded (note, there still might be compile errors) + Upload status message + Is compilation successful + If compilation failed, list of error messages, null on compilation success + Script inventory UUID + Script's new asset UUID + + + Used for converting shadow_id to asset_id + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + Partial mapping of AssetTypes to folder names + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + an inventory object sent by another avatar or primitive + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + + Get this agents Inventory data + + + + Raises the ItemReceived Event + A ItemReceivedEventArgs object containing + the data sent from the simulator + + + Raises the FolderUpdated Event + A FolderUpdatedEventArgs object containing + the data sent from the simulator + + + Raises the InventoryObjectOffered Event + A InventoryObjectOfferedEventArgs object containing + the data sent from the simulator + + + Raises the TaskItemReceived Event + A TaskItemReceivedEventArgs object containing + the data sent from the simulator + + + Raises the FindObjectByPath Event + A FindObjectByPathEventArgs object containing + the data sent from the simulator + + + Raises the TaskInventoryReply Event + A TaskInventoryReplyEventArgs object containing + the data sent from the simulator + + + Raises the SaveAssetToInventory Event + A SaveAssetToInventoryEventArgs object containing + the data sent from the simulator + + + Raises the ScriptRunningReply Event + A ScriptRunningReplyEventArgs object containing + the data sent from the simulator + + + + Fetch an inventory item from the dataserver + + The items + The item Owners + a integer representing the number of milliseconds to wait for results + An object on success, or null if no item was found + Items will also be sent to the event + + + + Request A single inventory item + + The items + The item Owners + + + + + Request inventory items + + Inventory items to request + Owners of the inventory items + + + + + Get contents of a folder + + The of the folder to search + The of the folders owner + true to retrieve folders + true to retrieve items + sort order to return results in + a integer representing the number of milliseconds to wait for results + A list of inventory items matching search criteria within folder + + InventoryFolder.DescendentCount will only be accurate if both folders and items are + requested + + + + Request the contents of an inventory folder + + The folder to search + The folder owners + true to return s contained in folder + true to return s containd in folder + the sort order to return items in + + + + + Returns the UUID of the folder (category) that defaults to + containing 'type'. The folder is not necessarily only for that + type + + This will return the root folder if one does not exist + + + The UUID of the desired folder if found, the UUID of the RootFolder + if not found, or UUID.Zero on failure + + + + Find an object in inventory using a specific path to search + + The folder to begin the search in + The object owners + A string path to search + milliseconds to wait for a reply + Found items or if + timeout occurs or item is not found + + + + Find inventory items by path + + The folder to begin the search in + The object owners + A string path to search, folders/objects separated by a '/' + Results are sent to the event + + + + Search inventory Store object for an item or folder + + The folder to begin the search in + An array which creates a path to search + Number of levels below baseFolder to conduct searches + if True, will stop searching after first match is found + A list of inventory items found + + + + Move an inventory item or folder to a new location + + The item or folder to move + The to move item or folder to + + + + Move an inventory item or folder to a new location and change its name + + The item or folder to move + The to move item or folder to + The name to change the item or folder to + + + + Move and rename a folder + + The source folders + The destination folders + The name to change the folder to + + + + Update folder properties + + + of the folder to update + Sets folder's parent to + Folder name + Folder type + + + + Move a folder + + The source folders + The destination folders + + + + Move multiple folders, the keys in the Dictionary parameter, + to a new parents, the value of that folder's key. + + A Dictionary containing the + of the source as the key, and the + of the destination as the value + + + + Move an inventory item to a new folder + + The of the source item to move + The of the destination folder + + + + Move and rename an inventory item + + The of the source item to move + The of the destination folder + The name to change the folder to + + + + Move multiple inventory items to new locations + + A Dictionary containing the + of the source item as the key, and the + of the destination folder as the value + + + + Remove descendants of a folder + + The of the folder + + + + Remove a single item from inventory + + The of the inventory item to remove + + + + Remove a folder from inventory + + The of the folder to remove + + + + Remove multiple items or folders from inventory + + A List containing the s of items to remove + A List containing the s of the folders to remove + + + + Empty the Lost and Found folder + + + + + Empty the Trash folder + + + + + + + + + + + + + + Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. + + + + + + + + + + + + + + + + + + + Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. + + + + + + + + + + + + Creates a new inventory folder + + ID of the folder to put this folder in + Name of the folder to create + The UUID of the newly created folder + + + + Creates a new inventory folder + + ID of the folder to put this folder in + Name of the folder to create + Sets this folder as the default folder + for new assets of the specified type. Use AssetType.Unknown + to create a normal folder, otherwise it will likely create a + duplicate of an existing folder type + The UUID of the newly created folder + If you specify a preferred type of AsseType.Folder + it will create a new root folder which may likely cause all sorts + of strange problems + + + + Create an inventory item and upload asset data + + Asset data + Inventory item name + Inventory item description + Asset type + Inventory type + Put newly created inventory in this folder + Delegate that will receive feedback on success or failure + + + + Create an inventory item and upload asset data + + Asset data + Inventory item name + Inventory item description + Asset type + Inventory type + Put newly created inventory in this folder + Permission of the newly created item + (EveryoneMask, GroupMask, and NextOwnerMask of Permissions struct are supported) + Delegate that will receive feedback on success or failure + + + + Creates inventory link to another inventory item or folder + + Put newly created link in folder with this UUID + Inventory item or folder + Method to call upon creation of the link + + + + Creates inventory link to another inventory item + + Put newly created link in folder with this UUID + Original inventory item + Method to call upon creation of the link + + + + Creates inventory link to another inventory folder + + Put newly created link in folder with this UUID + Original inventory folder + Method to call upon creation of the link + + + + Creates inventory link to another inventory item or folder + + Put newly created link in folder with this UUID + Original item's UUID + Name + Description + Asset Type + Inventory Type + Transaction UUID + Method to call upon creation of the link + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Request a copy of an asset embedded within a notecard + + Usually UUID.Zero for copying an asset from a notecard + UUID of the notecard to request an asset from + Target folder for asset to go to in your inventory + UUID of the embedded asset + callback to run when item is copied to inventory + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Save changes to notecard embedded in object contents + + Encoded notecard asset data + Notecard UUID + Object's UUID + Called upon finish of the upload with status information + + + + Upload new gesture asset for an inventory gesture item + + Encoded gesture asset + Gesture inventory UUID + Callback whick will be called when upload is complete + + + + Update an existing script in an agents Inventory + + A byte[] array containing the encoded scripts contents + the itemID of the script + if true, sets the script content to run on the mono interpreter + + + + + + Update an existing script in an task Inventory + + A byte[] array containing the encoded scripts contents + the itemID of the script + UUID of the prim containting the script + if true, sets the script content to run on the mono interpreter + if true, sets the script to running + + + + + + Rez an object from inventory + + Simulator to place object in + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details + + + + Rez an object from inventory + + Simulator to place object in + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details + UUID of group to own the object + + + + Rez an object from inventory + + Simulator to place object in + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details + UUID of group to own the object + User defined queryID to correlate replies + If set to true, the CreateSelected flag + will be set on the rezzed object + + + + DeRez an object from the simulator to the agents Objects folder in the agents Inventory + + The simulator Local ID of the object + If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed + + + + DeRez an object from the simulator and return to inventory + + The simulator Local ID of the object + The type of destination from the enum + The destination inventory folders -or- + if DeRezzing object to a tasks Inventory, the Tasks + The transaction ID for this request which + can be used to correlate this request with other packets + If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed + + + + Rez an item from inventory to its previous simulator location + + + + + + + + + + + + + Give an inventory item to another avatar + + The of the item to give + The name of the item + The type of the item from the enum + The of the recipient + true to generate a beameffect during transfer + + + + Give an inventory Folder with contents to another avatar + + The of the Folder to give + The name of the folder + The type of the item from the enum + The of the recipient + true to generate a beameffect during transfer + + + + Copy or move an from agent inventory to a task (primitive) inventory + + The target object + The item to copy or move from inventory + + + For items with copy permissions a copy of the item is placed in the tasks inventory, + for no-copy items the object is moved to the tasks inventory + + + + Retrieve a listing of the items contained in a task (Primitive) + + The tasks + The tasks simulator local ID + milliseconds to wait for reply from simulator + A list containing the inventory items inside the task or null + if a timeout occurs + This request blocks until the response from the simulator arrives + or timeoutMS is exceeded + + + + Request the contents of a tasks (primitives) inventory from the + current simulator + + The LocalID of the object + + + + + Request the contents of a tasks (primitives) inventory + + The simulator Local ID of the object + A reference to the simulator object that contains the object + + + + + Move an item from a tasks (Primitive) inventory to the specified folder in the avatars inventory + + LocalID of the object in the simulator + UUID of the task item to move + The ID of the destination folder in this agents inventory + Simulator Object + Raises the event + + + + Remove an item from an objects (Prim) Inventory + + LocalID of the object in the simulator + UUID of the task item to remove + Simulator Object + You can confirm the removal by comparing the tasks inventory serial before and after the + request with the request combined with + the event + + + + Copy an InventoryScript item from the Agents Inventory into a primitives task inventory + + An unsigned integer representing a primitive being simulated + An which represents a script object from the agents inventory + true to set the scripts running state to enabled + A Unique Transaction ID + + The following example shows the basic steps necessary to copy a script from the agents inventory into a tasks inventory + and assumes the script exists in the agents inventory. + + uint primID = 95899503; // Fake prim ID + UUID scriptID = UUID.Parse("92a7fe8a-e949-dd39-a8d8-1681d8673232"); // Fake Script UUID in Inventory + Client.Inventory.FolderContents(Client.Inventory.FindFolderForType(AssetType.LSLText), Client.Self.AgentID, + false, true, InventorySortOrder.ByName, 10000); + Client.Inventory.RezScript(primID, (InventoryItem)Client.Inventory.Store[scriptID]); + + + + + Request the running status of a script contained in a task (primitive) inventory + + The ID of the primitive containing the script + The ID of the script + The event can be used to obtain the results of the + request + + + + + Send a request to set the running state of a script contained in a task (primitive) inventory + + The ID of the primitive containing the script + The ID of the script + true to set the script running, false to stop a running script + To verify the change you can use the method combined + with the event + + + + Create a CRC from an InventoryItem + + The source InventoryItem + A uint representing the source InventoryItem as a CRC + + + + Reverses a cheesy XORing with a fixed UUID to convert a shadow_id to an asset_id + + Obfuscated shadow_id value + Deobfuscated asset_id value + + + + Does a cheesy XORing with a fixed UUID to convert an asset_id to a shadow_id + + asset_id value to obfuscate + Obfuscated shadow_id value + + + + Wrapper for creating a new object + + The type of item from the enum + The of the newly created object + An object with the type and id passed + + + + Parse the results of a RequestTaskInventory() response + + A string which contains the data from the task reply + A List containing the items contained within the tasks inventory + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + UpdateCreateInventoryItem packets are received when a new inventory item + is created. This may occur when an object that's rezzed in world is + taken into inventory, when an item is created using the CreateInventoryItem + packet, or when an object is purchased + + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Set to true to accept offer, false to decline it + + + The folder to accept the inventory into, if null default folder for will be used + + + + Callback when an inventory object is accepted and received from a + task inventory. This is the callback in which you actually get + the ItemID, as in ObjectOfferedCallback it is null when received + from a task. + + + + + + + + + + + + + + + De-serialization constructor for the InventoryNode Class + + + + + De-serialization handler for the InventoryNode Class + + + + + + + + + + + + + + + + + + + + + For inventory folder nodes specifies weather the folder needs to be + refreshed from the server + + + + + Serialization handler for the InventoryNode Class + + + + + + + + + + + Singleton logging class for the entire library + + + + + Default constructor + + + + + Callback used for client apps to receive log messages from + the library + + Data being logged + The severity of the log entry from + + + log4net logging engine + + + Triggered whenever a message is logged. If this is left + null, log messages will go to the console + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Instance of the client + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Exception that was raised + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Instance of the client + Exception that was raised + + + + If the library is compiled with DEBUG defined, an event will be + fired if an OnLogMessage handler is registered and the + message will be sent to the logging engine + + The message to log at the DEBUG level to the + current logging engine + + + + If the library is compiled with DEBUG defined and + GridClient.Settings.DEBUG is true, an event will be + fired if an OnLogMessage handler is registered and the + message will be sent to the logging engine + + The message to log at the DEBUG level to the + current logging engine + Instance of the client + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Login Request Parameters + + + + + Default constuctor, initializes sane default values + + + + + Instantiates new LoginParams object and fills in the values + + Instance of GridClient to read settings from + Login first name + Login last name + Password + Login channnel (application name) + Client version, should be application name + version number + + + + Instantiates new LoginParams object and fills in the values + + Instance of GridClient to read settings from + Login first name + Login last name + Password + Login channnel (application name) + Client version, should be application name + version number + URI of the login server + + + The URL of the Login Server + + + The number of milliseconds to wait before a login is considered + failed due to timeout + + + The request method + login_to_simulator is currently the only supported method + + + The Agents First name + + + The Agents Last name + + + A md5 hashed password + plaintext password will be automatically hashed + + + The agents starting location once logged in + Either "last", "home", or a string encoded URI + containing the simulator name and x/y/z coordinates e.g: uri:hooper&128&152&17 + + + A string containing the client software channel information + Second Life Release + + + The client software version information + The official viewer uses: Second Life Release n.n.n.n + where n is replaced with the current version of the viewer + + + A string containing the platform information the agent is running on + + + A string hash of the network cards Mac Address + + + Unknown or deprecated + + + A string hash of the first disk drives ID used to identify this clients uniqueness + + + A string containing the viewers Software, this is not directly sent to the login server but + instead is used to generate the Version string + + + A string representing the software creator. This is not directly sent to the login server but + is used by the library to generate the Version information + + + If true, this agent agrees to the Terms of Service of the grid its connecting to + + + Unknown + + + An array of string sent to the login server to enable various options + + + A randomly generated ID to distinguish between login attempts. This value is only used + internally in the library and is never sent over the wire + + + + The decoded data returned from the login server after a successful login + + + + true, false, indeterminate + + + Login message of the day + + + M or PG, also agent_region_access and agent_access_max + + + + Parse LLSD Login Reply Data + + An + contaning the login response data + XML-RPC logins do not require this as XML-RPC.NET + automatically populates the struct properly using attributes + + + + Login Routines + + + NetworkManager is responsible for managing the network layer of + OpenMetaverse. It tracks all the server connections, serializes + outgoing traffic and deserializes incoming traffic, and provides + instances of delegates for network-related events. + + + + + Default constructor + + Reference to the GridClient object + + + + Explains why a simulator or the grid disconnected from us + + + + The client requested the logout or simulator disconnect + + + The server notified us that it is disconnecting + + + Either a socket was closed or network traffic timed out + + + The last active simulator shut down + + + + Holds a simulator reference and a decoded packet, these structs are put in + the packet inbox for event handling + + + + Reference to the simulator that this packet came from + + + Packet that needs to be processed + + + + Holds a simulator reference and a serialized packet, these structs are put in + the packet outbox for sending + + + + Reference to the simulator this packet is destined for + + + Packet that needs to be sent + + + Sequence number of the wrapped packet + + + Number of times this packet has been resent + + + Environment.TickCount when this packet was last sent over the wire + + + + + + + + + + + + + + + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + Seed CAPS URL returned from the login server + + + A list of packets obtained during the login process which + networkmanager will log but not process + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + All of the simulators we are currently connected to + + + Handlers for incoming capability events + + + Handlers for incoming packets + + + Incoming packets that are awaiting handling + + + Outgoing packets that are awaiting handling + + + Raised when the simulator sends us data containing + ... + + + Called when a reply is received from the login server, the + login sequence will block until this event returns + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Current state of logging in + + + Upon login failure, contains a short string key for the + type of login error that occurred + + + The raw XML-RPC reply from the login server, exactly as it + was received (minus the HTTP header) + + + During login this contains a descriptive version of + LoginStatusCode. After a successful login this will contain the + message of the day, and after a failed login a descriptive error + message will be returned + + + Unique identifier associated with our connections to + simulators + + + The simulator that the logged in avatar is currently + occupying + + + Shows whether the network layer is logged in to the + grid or not + + + Number of packets in the incoming queue + + + Number of packets in the outgoing queue + + + Raises the LoginProgress Event + A LoginProgressEventArgs object containing + the data sent from the simulator + + + + Generate sane default values for a login request + + Account first name + Account last name + Account password + Client application name + Client application version + A populated struct containing + sane defaults + + + + Simplified login that takes the most common and required fields + + Account first name + Account last name + Account password + Client application name + Client application version + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error + + + + Simplified login that takes the most common fields along with a + starting location URI, and can accept an MD5 string instead of a + plaintext password + + Account first name + Account last name + Account password or MD5 hash of the password + such as $1$1682a1e45e9f957dcdf0bb56eb43319c + Client application name + Starting location URI that can be built with + StartLocation() + Client application version + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error + + + + Login that takes a struct of all the values that will be passed to + the login server + + The values that will be passed to the login + server, all fields must be set even if they are String.Empty + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error + + + + Build a start location URI for passing to the Login function + + Name of the simulator to start in + X coordinate to start at + Y coordinate to start at + Z coordinate to start at + String with a URI that can be used to login to a specified + location + + + + Handles response from XML-RPC login replies + + + + + Handle response from LLSD login replies + + + + + + + + + + + Get current OS + + Either "Win" or "Linux" + + + + Get clients default Mac Address + + A string containing the first found Mac Address + + + Raises the PacketSent Event + A PacketSentEventArgs object containing + the data sent from the simulator + + + Raises the LoggedOut Event + A LoggedOutEventArgs object containing + the data sent from the simulator + + + Raises the SimConnecting Event + A SimConnectingEventArgs object containing + the data sent from the simulator + + + Raises the SimConnected Event + A SimConnectedEventArgs object containing + the data sent from the simulator + + + Raises the SimDisconnected Event + A SimDisconnectedEventArgs object containing + the data sent from the simulator + + + Raises the Disconnected Event + A DisconnectedEventArgs object containing + the data sent from the simulator + + + Raises the SimChanged Event + A SimChangedEventArgs object containing + the data sent from the simulator + + + Raises the EventQueueRunning Event + A EventQueueRunningEventArgs object containing + the data sent from the simulator + + + + Register an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library + + Packet type to trigger events for + Callback to fire when a packet of this type + is received + + + + Register an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library + + Packet type to trigger events for + Callback to fire when a packet of this type + is received + True if the callback should be ran + asynchronously. Only set this to false (synchronous for callbacks + that will always complete quickly) + If any callback for a packet type is marked as + asynchronous, all callbacks for that packet type will be fired + asynchronously + + + + Unregister an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library + + Packet type this callback is registered with + Callback to stop firing events for + + + + Register a CAPS event handler. This is a low level event interface + and should only be used if you are doing something not supported in + the library + + Name of the CAPS event to register a handler for + Callback to fire when a CAPS event is received + + + + Unregister a CAPS event handler. This is a low level event interface + and should only be used if you are doing something not supported in + the library + + Name of the CAPS event this callback is + registered with + Callback to stop firing events for + + + + Send a packet to the simulator the avatar is currently occupying + + Packet to send + + + + Send a packet to a specified simulator + + Packet to send + Simulator to send the packet to + + + + Connect to a simulator + + IP address to connect to + Port to connect to + Handle for this simulator, to identify its + location in the grid + Whether to set CurrentSim to this new + connection, use this if the avatar is moving in to this simulator + URL of the capabilities server to use for + this sim connection + A Simulator object on success, otherwise null + + + + Connect to a simulator + + IP address and port to connect to + Handle for this simulator, to identify its + location in the grid + Whether to set CurrentSim to this new + connection, use this if the avatar is moving in to this simulator + URL of the capabilities server to use for + this sim connection + A Simulator object on success, otherwise null + + + + Initiate a blocking logout request. This will return when the logout + handshake has completed or when Settings.LOGOUT_TIMEOUT + has expired and the network layer is manually shut down + + + + + Initiate the logout process. Check if logout succeeded with the + OnLogoutReply event, and if this does not fire the + Shutdown() function needs to be manually called + + + + + Close a connection to the given simulator + + + + + + + + + Shutdown will disconnect all the sims except for the current sim + first, and then kill the connection to CurrentSim. This should only + be called if the logout process times out on RequestLogout + Type of shutdown + + + + Shutdown will disconnect all the sims except for the current sim + first, and then kill the connection to CurrentSim. This should only + be called if the logout process times out on RequestLogout + Type of shutdown + Shutdown message + + + + Searches through the list of currently connected simulators to find + one attached to the given IPEndPoint + + IPEndPoint of the Simulator to search for + A Simulator reference on success, otherwise null + + + + Fire an event when an event queue connects for capabilities + + Simulator the event queue is attached to + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + A Name Value pair with additional settings, used in the protocol + primarily to transmit avatar names and active group in object packets + + + + + Constructor that takes all the fields as parameters + + + + + + + + + + + + + + + Constructor that takes a single line from a NameValue field + + + + + + Type of the value + + + Unknown + + + String value + + + + + + + + + + + + + + + + + + + Deprecated + + + String value, but designated as an asset + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No report + + + Unknown report type + + + Bug report + + + Complaint report + + + Customer service report + + + + Bitflag field for ObjectUpdateCompressed data blocks, describing + which options are present for each object + + + + Unknown + + + Whether the object has a TreeSpecies + + + Whether the object has floating text ala llSetText + + + Whether the object has an active particle system + + + Whether the object has sound attached to it + + + Whether the object is attached to a root object or not + + + Whether the object has texture animation settings + + + Whether the object has an angular velocity + + + Whether the object has a name value pairs string + + + Whether the object has a Media URL set + + + + Specific Flags for MultipleObjectUpdate requests + + + + None + + + Change position of prims + + + Change rotation of prims + + + Change size of prims + + + Perform operation on link set + + + Scale prims uniformly, same as selecing ctrl+shift in the + viewer. Used in conjunction with Scale + + + + Special values in PayPriceReply. If the price is not one of these + literal value of the price should be use + + + + + Indicates that this pay option should be hidden + + + + + Indicates that this pay option should have the default value + + + + + Contains the variables sent in an object update packet for objects. + Used to track position and movement of prims and avatars + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Handles all network traffic related to prims and avatar positions and + movement. + + + + + Construct a new instance of the ObjectManager class + + A reference to the instance + + + + Callback for getting object media data via CAP + + Indicates if the operation was succesfull + Object media version string + Array indexed on prim face of media entry data + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + Reference to the GridClient object + + + Does periodic dead reckoning calculation to convert + velocity and acceleration to new positions for objects + + + Raised when the simulator sends us data containing + A , Foliage or Attachment + + + + + Raised when the simulator sends us data containing + additional information + + + + + Raised when the simulator sends us data containing + Primitive.ObjectProperties for an object we are currently tracking + + + Raised when the simulator sends us data containing + additional and details + + + + Raised when the simulator sends us data containing + updated information for an + + + Raised when the simulator sends us data containing + and movement changes + + + Raised when the simulator sends us data containing + updates to an Objects DataBlock + + + Raised when the simulator informs us an + or is no longer within view + + + Raised when the simulator sends us data containing + updated sit information for our + + + Raised when the simulator sends us data containing + purchase price information for a + + + Raises the ObjectProperties Event + A ObjectPropertiesEventArgs object containing + the data sent from the simulator + + + Raises the ObjectPropertiesUpdated Event + A ObjectPropertiesUpdatedEventArgs object containing + the data sent from the simulator + + + Raises the ObjectPropertiesFamily Event + A ObjectPropertiesFamilyEventArgs object containing + the data sent from the simulator + + + Raises the AvatarUpdate Event + A AvatarUpdateEventArgs object containing + the data sent from the simulator + + + Raises the ObjectDataBlockUpdate Event + A ObjectDataBlockUpdateEventArgs object containing + the data sent from the simulator + + + Raises the KillObject Event + A KillObjectEventArgs object containing + the data sent from the simulator + + + Raises the AvatarSitChanged Event + A AvatarSitChangedEventArgs object containing + the data sent from the simulator + + + Raises the PayPriceReply Event + A PayPriceReplyEventArgs object containing + the data sent from the simulator + + + + Request information for a single object from a + you are currently connected to + + The the object is located + The Local ID of the object + + + + Request information for multiple objects contained in + the same simulator + + The the objects are located + An array containing the Local IDs of the objects + + + + Attempt to purchase an original object, a copy, or the contents of + an object + + The the object is located + The Local ID of the object + Whether the original, a copy, or the object + contents are on sale. This is used for verification, if the this + sale type is not valid for the object the purchase will fail + Price of the object. This is used for + verification, if it does not match the actual price the purchase + will fail + Group ID that will be associated with the new + purchase + Inventory folder UUID where the object or objects + purchased should be placed + + + BuyObject(Client.Network.CurrentSim, 500, SaleType.Copy, + 100, UUID.Zero, Client.Self.InventoryRootFolderUUID); + + + + + + Request prices that should be displayed in pay dialog. This will triggger the simulator + to send us back a PayPriceReply which can be handled by OnPayPriceReply event + + The the object is located + The ID of the object + The result is raised in the event + + + + Select a single object. This will cause the to send us + an which will raise the event + + The the object is located + The Local ID of the object + + + + + Select a single object. This will cause the to send us + an which will raise the event + + The the object is located + The Local ID of the object + if true, a call to is + made immediately following the request + + + + + Select multiple objects. This will cause the to send us + an which will raise the event + + The the objects are located + An array containing the Local IDs of the objects + Should objects be deselected immediately after selection + + + + + Select multiple objects. This will cause the to send us + an which will raise the event + + The the objects are located + An array containing the Local IDs of the objects + + + + + Update the properties of an object + + The the object is located + The Local ID of the object + true to turn the objects physical property on + true to turn the objects temporary property on + true to turn the objects phantom property on + true to turn the objects cast shadows property on + + + + Sets the sale properties of a single object + + The the object is located + The Local ID of the object + One of the options from the enum + The price of the object + + + + Sets the sale properties of multiple objects + + The the objects are located + An array containing the Local IDs of the objects + One of the options from the enum + The price of the object + + + + Deselect a single object + + The the object is located + The Local ID of the object + + + + Deselect multiple objects. + + The the objects are located + An array containing the Local IDs of the objects + + + + Perform a click action on an object + + The the object is located + The Local ID of the object + + + + Perform a click action (Grab) on a single object + + The the object is located + The Local ID of the object + The texture coordinates to touch + The surface coordinates to touch + The face of the position to touch + The region coordinates of the position to touch + The surface normal of the position to touch (A normal is a vector perpindicular to the surface) + The surface binormal of the position to touch (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space + + + + Create (rez) a new prim object in a simulator + + A reference to the object to place the object in + Data describing the prim object to rez + Group ID that this prim will be set to, or UUID.Zero if you + do not want the object to be associated with a specific group + An approximation of the position at which to rez the prim + Scale vector to size this prim + Rotation quaternion to rotate this prim + Due to the way client prim rezzing is done on the server, + the requested position for an object is only close to where the prim + actually ends up. If you desire exact placement you'll need to + follow up by moving the object after it has been created. This + function will not set textures, light and flexible data, or other + extended primitive properties + + + + Create (rez) a new prim object in a simulator + + A reference to the object to place the object in + Data describing the prim object to rez + Group ID that this prim will be set to, or UUID.Zero if you + do not want the object to be associated with a specific group + An approximation of the position at which to rez the prim + Scale vector to size this prim + Rotation quaternion to rotate this prim + Specify the + Due to the way client prim rezzing is done on the server, + the requested position for an object is only close to where the prim + actually ends up. If you desire exact placement you'll need to + follow up by moving the object after it has been created. This + function will not set textures, light and flexible data, or other + extended primitive properties + + + + Rez a Linden tree + + A reference to the object where the object resides + The size of the tree + The rotation of the tree + The position of the tree + The Type of tree + The of the group to set the tree to, + or UUID.Zero if no group is to be set + true to use the "new" Linden trees, false to use the old + + + + Rez grass and ground cover + + A reference to the object where the object resides + The size of the grass + The rotation of the grass + The position of the grass + The type of grass from the enum + The of the group to set the tree to, + or UUID.Zero if no group is to be set + + + + Set the textures to apply to the faces of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The texture data to apply + + + + Set the textures to apply to the faces of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The texture data to apply + A media URL (not used) + + + + Set the Light data on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set + + + + Set the flexible data on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set + + + + Set the sculptie texture and data on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set + + + + Unset additional primitive parameters on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The extra parameters to set + + + + Link multiple prims into a linkset + + A reference to the object where the objects reside + An array which contains the IDs of the objects to link + The last object in the array will be the root object of the linkset TODO: Is this true? + + + + Delink/Unlink multiple prims from a linkset + + A reference to the object where the objects reside + An array which contains the IDs of the objects to delink + + + + Change the rotation of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new rotation of the object + + + + Set the name of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A string containing the new name of the object + + + + Set the name of multiple objects + + A reference to the object where the objects reside + An array which contains the IDs of the objects to change the name of + An array which contains the new names of the objects + + + + Set the description of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A string containing the new description of the object + + + + Set the descriptions of multiple objects + + A reference to the object where the objects reside + An array which contains the IDs of the objects to change the description of + An array which contains the new descriptions of the objects + + + + Attach an object to this avatar + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The point on the avatar the object will be attached + The rotation of the attached object + + + + Drop an attached object from this avatar + + A reference to the + object where the objects reside. This will always be the simulator the avatar is currently in + + The object's ID which is local to the simulator the object is in + + + + Detach an object from yourself + + A reference to the + object where the objects reside + This will always be the simulator the avatar is currently in + + An array which contains the IDs of the objects to detach + + + + Change the position of an object, Will change position of entire linkset + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new position of the object + + + + Change the position of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new position of the object + if true, will change position of (this) child prim only, not entire linkset + + + + Change the Scale (size) of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new scale of the object + If true, will change scale of this prim only, not entire linkset + True to resize prims uniformly + + + + Change the Rotation of an object that is either a child or a whole linkset + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new scale of the object + If true, will change rotation of this prim only, not entire linkset + + + + Send a Multiple Object Update packet to change the size, scale or rotation of a primitive + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new rotation, size, or position of the target object + The flags from the Enum + + + + Deed an object (prim) to a group, Object must be shared with group which + can be accomplished with SetPermissions() + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The of the group to deed the object to + + + + Deed multiple objects (prims) to a group, Objects must be shared with group which + can be accomplished with SetPermissions() + + A reference to the object where the object resides + An array which contains the IDs of the objects to deed + The of the group to deed the object to + + + + Set the permissions on multiple objects + + A reference to the object where the objects reside + An array which contains the IDs of the objects to set the permissions on + The new Who mask to set + The new Permissions mark to set + TODO: What does this do? + + + + Request additional properties for an object + + A reference to the object where the object resides + + + + + + Request additional properties for an object + + A reference to the object where the object resides + Absolute UUID of the object + Whether to require server acknowledgement of this request + + + + Set the ownership of a list of objects to the specified group + + A reference to the object where the objects reside + An array which contains the IDs of the objects to set the group id on + The Groups ID + + + + Update current URL of the previously set prim media + + UUID of the prim + Set current URL to this + Prim face number + Simulator in which prim is located + + + + Set object media + + UUID of the prim + Array the length of prims number of faces. Null on face indexes where there is + no media, on faces which contain the media + Simulatior in which prim is located + + + + Retrieve information about object media + + UUID of the primitive + Simulator where prim is located + Call this callback when done + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + A terse object update, used when a transformation matrix or + velocity/acceleration for an object changes but nothing else + (scale/position/rotation/acceleration/velocity) + + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Setup construction data for a basic primitive shape + + Primitive shape to construct + Construction data that can be plugged into a + + + + + + + + + + + + + + + + + + + + + + + + Set the Shape data of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + Data describing the prim shape + + + + Set the Material data of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new material of the object + + + + + + + + + + + + + + + + + + + + + + + + + + + Provides data for the event + + The event occurs when the simulator sends + an containing a Primitive, Foliage or Attachment data + Note 1: The event will not be raised when the object is an Avatar + Note 2: It is possible for the to be + raised twice for the same object if for example the primitive moved to a new simulator, then returned to the current simulator or + if an Avatar crosses the border into a new simulator and returns to the current simulator + + + The following code example uses the , , and + properties to display new Primitives and Attachments on the window. + + // Subscribe to the event that gives us prim and foliage information + Client.Objects.ObjectUpdate += Objects_ObjectUpdate; + private void Objects_ObjectUpdate(object sender, PrimEventArgs e) + { + Console.WriteLine("Primitive {0} {1} in {2} is an attachment {3}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name, e.IsAttachment); + } + + + + + + + + Construct a new instance of the PrimEventArgs class + + The simulator the object originated from + The Primitive + The simulator time dilation + The prim was not in the dictionary before this update + true if the primitive represents an attachment to an agent + + + Get the simulator the originated from + + + Get the details + + + true if the did not exist in the dictionary before this update (always true if object tracking has been disabled) + + + true if the is attached to an + + + Get the simulator Time Dilation + + + Provides data for the event + + The event occurs when the simulator sends + an containing Avatar data + Note 1: The event will not be raised when the object is an Avatar + Note 2: It is possible for the to be + raised twice for the same avatar if for example the avatar moved to a new simulator, then returned to the current simulator + + + The following code example uses the property to make a request for the top picks + using the method in the class to display the names + of our own agents picks listings on the window. + + // subscribe to the AvatarUpdate event to get our information + Client.Objects.AvatarUpdate += Objects_AvatarUpdate; + Client.Avatars.AvatarPicksReply += Avatars_AvatarPicksReply; + private void Objects_AvatarUpdate(object sender, AvatarUpdateEventArgs e) + { + // we only want our own data + if (e.Avatar.LocalID == Client.Self.LocalID) + { + // Unsubscribe from the avatar update event to prevent a loop + // where we continually request the picks every time we get an update for ourselves + Client.Objects.AvatarUpdate -= Objects_AvatarUpdate; + // make the top picks request through AvatarManager + Client.Avatars.RequestAvatarPicks(e.Avatar.ID); + } + } + private void Avatars_AvatarPicksReply(object sender, AvatarPicksReplyEventArgs e) + { + // we'll unsubscribe from the AvatarPicksReply event since we now have the data + // we were looking for + Client.Avatars.AvatarPicksReply -= Avatars_AvatarPicksReply; + // loop through the dictionary and extract the names of the top picks from our profile + foreach (var pickName in e.Picks.Values) + { + Console.WriteLine(pickName); + } + } + + + + + + + Construct a new instance of the AvatarUpdateEventArgs class + + The simulator the packet originated from + The data + The simulator time dilation + The avatar was not in the dictionary before this update + + + Get the simulator the object originated from + + + Get the data + + + Get the simulator time dilation + + + true if the did not exist in the dictionary before this update (always true if avatar tracking has been disabled) + + + Provides additional primitive data for the event + + The event occurs when the simulator sends + an containing additional details for a Primitive, Foliage data or Attachment data + The event is also raised when a request is + made. + + + The following code example uses the , and + + properties to display new attachments and send a request for additional properties containing the name of the + attachment then display it on the window. + + // Subscribe to the event that provides additional primitive details + Client.Objects.ObjectProperties += Objects_ObjectProperties; + // handle the properties data that arrives + private void Objects_ObjectProperties(object sender, ObjectPropertiesEventArgs e) + { + Console.WriteLine("Primitive Properties: {0} Name is {1}", e.Properties.ObjectID, e.Properties.Name); + } + + + + + Construct a new instance of the ObjectPropertiesEventArgs class + + The simulator the object is located + The primitive Properties + + + Get the simulator the object is located + + + Get the primitive properties + + + Provides additional primitive data for the event + + The event occurs when the simulator sends + an containing additional details for a Primitive or Foliage data that is currently + being tracked in the dictionary + The event is also raised when a request is + made and is enabled + + + + + Construct a new instance of the ObjectPropertiesUpdatedEvenrArgs class + + The simulator the object is located + The Primitive + The primitive Properties + + + Get the simulator the object is located + + + Get the primitive details + + + Get the primitive properties + + + Provides additional primitive data, permissions and sale info for the event + + The event occurs when the simulator sends + an containing additional details for a Primitive, Foliage data or Attachment. This includes + Permissions, Sale info, and other basic details on an object + The event is also raised when a request is + made, the viewer equivalent is hovering the mouse cursor over an object + + + + Get the simulator the object is located + + + + + + + + + + + Provides primitive data containing updated location, velocity, rotation, textures for the event + + The event occurs when the simulator sends updated location, velocity, rotation, etc + + + + Get the simulator the object is located + + + Get the primitive details + + + + + + + + + + + + + + + Get the simulator the object is located + + + Get the primitive details + + + + + + + + + + + + + + + + + + + Provides notification when an Avatar, Object or Attachment is DeRezzed or moves out of the avatars view for the + event + + + Get the simulator the object is located + + + The LocalID of the object + + + + Provides updates sit position data + + + + Get the simulator the object is located + + + + + + + + + + + + + + + + + + + Get the simulator the object is located + + + + + + + + + + + + + + + + Indicates if the operation was successful + + + + + Media version string + + + + + Array of media entries indexed by face number + + + + + Create an allocated UDP packet buffer for receiving a packet + + + + + Create an allocated UDP packet buffer for sending a packet + + EndPoint of the remote host + + + + Create an allocated UDP packet buffer for sending a packet + + EndPoint of the remote host + Size of the buffer to allocate for packet data + + + Size of the byte array used to store raw packet data + + + Raw packet data buffer + + + Length of the data to transmit + + + EndPoint of the remote host + + + + Object pool for packet buffers. This is used to allocate memory for all + incoming and outgoing packets, and zerocoding buffers for those packets + + + + + Initialize the object pool in client mode + + Server to connect to + + + + + + + + Initialize the object pool in server mode + + + + + + + + + Returns a packet buffer with EndPoint set if the buffer is in + client mode, or with EndPoint set to null in server mode + + Initialized UDPPacketBuffer object + + + + Default constructor + + + + + Check a packet buffer out of the pool + + A packet buffer object + + + + Returns an instance of the class that has been checked out of the Object Pool. + + + + + Checks the instance back into the object pool + + + + + Creates a new instance of the ObjectPoolBase class. Initialize MUST be called + after using this constructor. + + + + + Creates a new instance of the ObjectPool Base class. + + The object pool is composed of segments, which + are allocated whenever the size of the pool is exceeded. The number of items + in a segment should be large enough that allocating a new segmeng is a rare + thing. For example, on a server that will have 10k people logged in at once, + the receive buffer object pool should have segment sizes of at least 1000 + byte arrays per segment. + + The minimun number of segments that may exist. + Perform a full GC.Collect whenever a segment is allocated, and then again after allocation to compact the heap. + The frequency which segments are checked to see if they're eligible for cleanup. + + + + The total number of segments created. Intended to be used by the Unit Tests. + + + + + The number of items that are in a segment. Items in a segment + are all allocated at the same time, and are hopefully close to + each other in the managed heap. + + + + + The minimum number of segments. When segments are reclaimed, + this number of segments will always be left alone. These + segments are allocated at startup. + + + + + The age a segment must be before it's eligible for cleanup. + This is used to prevent thrash, and typical values are in + the 5 minute range. + + + + + The frequence which the cleanup thread runs. This is typically + expected to be in the 5 minute range. + + + + + Forces the segment cleanup algorithm to be run. This method is intended + primarly for use from the Unit Test libraries. + + + + + Responsible for allocate 1 instance of an object that will be stored in a segment. + + An instance of whatever objec the pool is pooling. + + + + Checks in an instance of T owned by the object pool. This method is only intended to be called + by the WrappedObject class. + + The segment from which the instance is checked out. + The instance of T to check back into the segment. + + + + Checks an instance of T from the pool. If the pool is not sufficient to + allow the checkout, a new segment is created. + + A WrappedObject around the instance of T. To check + the instance back into the segment, be sureto dispose the WrappedObject + when finished. + + + + + + + + + + + + + + + + + + + + The ObservableDictionary class is used for storing key/value pairs. It has methods for firing + events to subscribers when items are added, removed, or changed. + + Key + Value + + + + Initializes a new instance of the Class + with the specified key/value, has the default initial capacity. + + + + // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value. + public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(); + + + + + + Initializes a new instance of the Class + with the specified key/value, With its initial capacity specified. + + Initial size of dictionary + + + // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value, + // initially allocated room for 10 entries. + public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(10); + + + + + + A dictionary of callbacks to fire when specified action occurs + + + + Internal dictionary that this class wraps around. Do not + modify or enumerate the contents of this dictionary without locking + + + + Indexer for the dictionary + + The key + The value + + + + Gets the number of Key/Value pairs contained in the + + + + Register a callback to be fired when an action occurs + + The action + The callback to fire + + + + Unregister a callback + + The action + The callback to fire + + + + + + + + + + + + Try to get entry from the with specified key + + Key to use for lookup + Value returned + + if specified key exists, if not found + + + // find your avatar using the Simulator.ObjectsAvatars ObservableDictionary: + Avatar av; + if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) + Console.WriteLine("Found Avatar {0}", av.Name); + + + + + + + Finds the specified match. + + The match. + Matched value + + + // use a delegate to find a prim in the ObjectsPrimitives ObservableDictionary + // with the ID 95683496 + uint findID = 95683496; + Primitive findPrim = sim.ObjectsPrimitives.Find( + delegate(Primitive prim) { return prim.ID == findID; }); + + + + + Find All items in an + return matching items. + a containing found items. + + Find All prims within 20 meters and store them in a List + + int radius = 20; + List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( + delegate(Primitive prim) { + Vector3 pos = prim.Position; + return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); + } + ); + + + + Find All items in an + return matching keys. + a containing found keys. + + Find All keys which also exist in another dictionary + + List<UUID> matches = myDict.FindAll( + delegate(UUID id) { + return myOtherDict.ContainsKey(id); + } + ); + + + + Check if Key exists in Dictionary + Key to check for + + if found, otherwise + + + Check if Value exists in Dictionary + Value to check for + + if found, otherwise + + + + Adds the specified key to the dictionary, dictionary locking is not performed, + + The key + The value + + + + Removes the specified key, dictionary locking is not performed + + The key. + + if successful, otherwise + + + + Clear the contents of the dictionary + + + + + Enumerator for iterating dictionary entries + + + + + + + A custom decoder callback + + The key of the object + the data to decode + A string represending the fieldData + + + + Add a custom decoder callback + + The key of the field to decode + The custom decode handler + + + + Remove a custom decoder callback + + The key of the field to decode + The custom decode handler + + + + Creates a formatted string containing the values of a Packet + + The Packet + A formatted string of values of the nested items in the Packet object + + + + Decode an IMessage object into a beautifully formatted string + + The IMessage object + Recursion level (used for indenting) + A formatted string containing the names and values of the source object + + + + Type of return to use when returning objects from a parcel + + + + + + + + Return objects owned by parcel owner + + + Return objects set to group + + + Return objects not owned by parcel owner or set to group + + + Return a specific list of objects on parcel + + + Return objects that are marked for-sale + + + + Blacklist/Whitelist flags used in parcels Access List + + + + Agent is denied access + + + Agent is granted access + + + + The result of a request for parcel properties + + + + No matches were found for the request + + + Request matched a single parcel + + + Request matched multiple parcels + + + + Flags used in the ParcelAccessListRequest packet to specify whether + we want the access list (whitelist), ban list (blacklist), or both + + + + Request the access list + + + Request the ban list + + + Request both White and Black lists + + + + Sequence ID in ParcelPropertiesReply packets (sent when avatar + tries to cross a parcel border) + + + + Parcel is currently selected + + + Parcel restricted to a group the avatar is not a + member of + + + Avatar is banned from the parcel + + + Parcel is restricted to an access list that the + avatar is not on + + + Response to hovering over a parcel + + + + The tool to use when modifying terrain levels + + + + Level the terrain + + + Raise the terrain + + + Lower the terrain + + + Smooth the terrain + + + Add random noise to the terrain + + + Revert terrain to simulator default + + + + The tool size to use when changing terrain levels + + + + Small + + + Medium + + + Large + + + + Reasons agent is denied access to a parcel on the simulator + + + + Agent is not denied, access is granted + + + Agent is not a member of the group set for the parcel, or which owns the parcel + + + Agent is not on the parcels specific allow list + + + Agent is on the parcels ban list + + + Unknown + + + Agent is not age verified and parcel settings deny access to non age verified avatars + + + + Parcel overlay type. This is used primarily for highlighting and + coloring which is why it is a single integer instead of a set of + flags + + These values seem to be poorly thought out. The first three + bits represent a single value, not flags. For example Auction (0x05) is + not a combination of OwnedByOther (0x01) and ForSale(0x04). However, + the BorderWest and BorderSouth values are bit flags that get attached + to the value stored in the first three bits. Bits four, five, and six + are unused + + + Public land + + + Land is owned by another avatar + + + Land is owned by a group + + + Land is owned by the current avatar + + + Land is for sale + + + Land is being auctioned + + + To the west of this area is a parcel border + + + To the south of this area is a parcel border + + + + Various parcel properties + + + + No flags set + + + Allow avatars to fly (a client-side only restriction) + + + Allow foreign scripts to run + + + This parcel is for sale + + + Allow avatars to create a landmark on this parcel + + + Allows all avatars to edit the terrain on this parcel + + + Avatars have health and can take damage on this parcel. + If set, avatars can be killed and sent home here + + + Foreign avatars can create objects here + + + All objects on this parcel can be purchased + + + Access is restricted to a group + + + Access is restricted to a whitelist + + + Ban blacklist is enabled + + + Unknown + + + List this parcel in the search directory + + + Allow personally owned parcels to be deeded to group + + + If Deeded, owner contributes required tier to group parcel is deeded to + + + Restrict sounds originating on this parcel to the + parcel boundaries + + + Objects on this parcel are sold when the land is + purchsaed + + + Allow this parcel to be published on the web + + + The information for this parcel is mature content + + + The media URL is an HTML page + + + The media URL is a raw HTML string + + + Restrict foreign object pushes + + + Ban all non identified/transacted avatars + + + Allow group-owned scripts to run + + + Allow object creation by group members or group + objects + + + Allow all objects to enter this parcel + + + Only allow group and owner objects to enter this parcel + + + Voice Enabled on this parcel + + + Use Estate Voice channel for Voice on this parcel + + + Deny Age Unverified Users + + + + Parcel ownership status + + + + Placeholder + + + Parcel is leased (owned) by an avatar or group + + + Parcel is in process of being leased (purchased) by an avatar or group + + + Parcel has been abandoned back to Governor Linden + + + + Category parcel is listed in under search + + + + No assigned category + + + Linden Infohub or public area + + + Adult themed area + + + Arts and Culture + + + Business + + + Educational + + + Gaming + + + Hangout or Club + + + Newcomer friendly + + + Parks and Nature + + + Residential + + + Shopping + + + Not Used? + + + Other + + + Not an actual category, only used for queries + + + + Type of teleport landing for a parcel + + + + Unset, simulator default + + + Specific landing point set for this parcel + + + No landing point set, direct teleports enabled for + this parcel + + + + Parcel Media Command used in ParcelMediaCommandMessage + + + + Stop the media stream and go back to the first frame + + + Pause the media stream (stop playing but stay on current frame) + + + Start the current media stream playing and stop when the end is reached + + + Start the current media stream playing, + loop to the beginning when the end is reached and continue to play + + + Specifies the texture to replace with video + If passing the key of a texture, it must be explicitly typecast as a key, + not just passed within double quotes. + + + Specifies the movie URL (254 characters max) + + + Specifies the time index at which to begin playing + + + Specifies a single agent to apply the media command to + + + Unloads the stream. While the stop command sets the texture to the first frame of the movie, + unload resets it to the real texture that the movie was replacing. + + + Turn on/off the auto align feature, similar to the auto align checkbox in the parcel media properties + (NOT to be confused with the "align" function in the textures view of the editor!) Takes TRUE or FALSE as parameter. + + + Allows a Web page or image to be placed on a prim (1.19.1 RC0 and later only). + Use "text/html" for HTML. + + + Resizes a Web page to fit on x, y pixels (1.19.1 RC0 and later only). + This might still not be working + + + Sets a description for the media being displayed (1.19.1 RC0 and later only). + + + + Some information about a parcel of land returned from a DirectoryManager search + + + + Global Key of record + + + Parcel Owners + + + Name field of parcel, limited to 128 characters + + + Description field of parcel, limited to 256 characters + + + Total Square meters of parcel + + + Total area billable as Tier, for group owned land this will be 10% less than ActualArea + + + True of parcel is in Mature simulator + + + Grid global X position of parcel + + + Grid global Y position of parcel + + + Grid global Z position of parcel (not used) + + + Name of simulator parcel is located in + + + Texture of parcels display picture + + + Float representing calculated traffic based on time spent on parcel by avatars + + + Sale price of parcel (not used) + + + Auction ID of parcel + + + + Parcel Media Information + + + + A byte, if 0x1 viewer should auto scale media to fit object + + + A boolean, if true the viewer should loop the media + + + The Asset UUID of the Texture which when applied to a + primitive will display the media + + + A URL which points to any Quicktime supported media type + + + A description of the media + + + An Integer which represents the height of the media + + + An integer which represents the width of the media + + + A string which contains the mime type of the media + + + + Parcel of land, a portion of virtual real estate in a simulator + + + + + Defalt constructor + + Local ID of this parcel + + + The total number of contiguous 4x4 meter blocks your agent owns within this parcel + + + The total number of contiguous 4x4 meter blocks contained in this parcel owned by a group or agent other than your own + + + Deprecated, Value appears to always be 0 + + + Simulator-local ID of this parcel + + + UUID of the owner of this parcel + + + Whether the land is deeded to a group or not + + + + + + + Date land was claimed + + + Appears to always be zero + + + This field is no longer used + + + Minimum corner of the axis-aligned bounding box for this + parcel + + + Maximum corner of the axis-aligned bounding box for this + parcel + + + Bitmap describing land layout in 4x4m squares across the + entire region + + + Total parcel land area + + + + + + + Maximum primitives across the entire simulator owned by the same agent or group that owns this parcel that can be used + + + Total primitives across the entire simulator calculated by combining the allowed prim counts for each parcel + owned by the agent or group that owns this parcel + + + Maximum number of primitives this parcel supports + + + Total number of primitives on this parcel + + + For group-owned parcels this indicates the total number of prims deeded to the group, + for parcels owned by an individual this inicates the number of prims owned by the individual + + + Total number of primitives owned by the parcel group on + this parcel, or for parcels owned by an individual with a group set the + total number of prims set to that group. + + + Total number of prims owned by other avatars that are not set to group, or not the parcel owner + + + A bonus multiplier which allows parcel prim counts to go over times this amount, this does not affect + the max prims per simulator. e.g: 117 prim parcel limit x 1.5 bonus = 175 allowed + + + Autoreturn value in minutes for others' objects + + + + + + + Sale price of the parcel, only useful if ForSale is set + The SalePrice will remain the same after an ownership + transfer (sale), so it can be used to see the purchase price after + a sale if the new owner has not changed it + + + Parcel Name + + + Parcel Description + + + URL For Music Stream + + + + + + + Price for a temporary pass + + + How long is pass valid for + + + + + + + Key of authorized buyer + + + Key of parcel snapshot + + + The landing point location + + + The landing point LookAt + + + The type of landing enforced from the enum + + + + + + + + + + + + + + + Access list of who is whitelisted on this + parcel + + + Access list of who is blacklisted on this + parcel + + + TRUE of region denies access to age unverified users + + + true to obscure (hide) media url + + + true to obscure (hide) music url + + + A struct containing media details + + + + Displays a parcel object in string format + + string containing key=value pairs of a parcel object + + + + Update the simulator with any local changes to this Parcel object + + Simulator to send updates to + Whether we want the simulator to confirm + the update with a reply packet or not + + + + Set Autoreturn time + + Simulator to send the update to + + + + Parcel (subdivided simulator lots) subsystem + + + + + Default constructor + + A reference to the GridClient object + + + + Parcel Accesslist + + + + Agents + + + + + + + Flags for specific entry in white/black lists + + + + Owners of primitives on parcel + + + + Prim Owners + + + True of owner is group + + + Total count of prims owned by OwnerID + + + true of OwnerID is currently online and is not a group + + + The date of the most recent prim left by OwnerID + + + + Called once parcel resource usage information has been collected + + Indicates if operation was successfull + Parcel resource usage information + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Thread sync lock object + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a Parcel Update request + + + Raised when the parcel your agent is located sends a ParcelMediaCommand + + + Raises the ParcelDwellReply event + A ParcelDwellReplyEventArgs object containing the + data returned from the simulator + + + Raises the ParcelInfoReply event + A ParcelInfoReplyEventArgs object containing the + data returned from the simulator + + + Raises the ParcelProperties event + A ParcelPropertiesEventArgs object containing the + data returned from the simulator + + + Raises the ParcelAccessListReply event + A ParcelAccessListReplyEventArgs object containing the + data returned from the simulator + + + Raises the ParcelObjectOwnersReply event + A ParcelObjectOwnersReplyEventArgs object containing the + data returned from the simulator + + + Raises the SimParcelsDownloaded event + A SimParcelsDownloadedEventArgs object containing the + data returned from the simulator + + + Raises the ForceSelectObjectsReply event + A ForceSelectObjectsReplyEventArgs object containing the + data returned from the simulator + + + Raises the ParcelMediaUpdateReply event + A ParcelMediaUpdateReplyEventArgs object containing the + data returned from the simulator + + + Raises the ParcelMediaCommand event + A ParcelMediaCommandEventArgs object containing the + data returned from the simulator + + + + Request basic information for a single parcel + + Simulator-local ID of the parcel + + + + Request properties of a single parcel + + Simulator containing the parcel + Simulator-local ID of the parcel + An arbitrary integer that will be returned + with the ParcelProperties reply, useful for distinguishing between + multiple simultaneous requests + + + + Request the access list for a single parcel + + Simulator containing the parcel + Simulator-local ID of the parcel + An arbitrary integer that will be returned + with the ParcelAccessList reply, useful for distinguishing between + multiple simultaneous requests + + + + + + Request properties of parcels using a bounding box selection + + Simulator containing the parcel + Northern boundary of the parcel selection + Eastern boundary of the parcel selection + Southern boundary of the parcel selection + Western boundary of the parcel selection + An arbitrary integer that will be returned + with the ParcelProperties reply, useful for distinguishing between + different types of parcel property requests + A boolean that is returned with the + ParcelProperties reply, useful for snapping focus to a single + parcel + + + + Request all simulator parcel properties (used for populating the Simulator.Parcels + dictionary) + + Simulator to request parcels from (must be connected) + + + + Request all simulator parcel properties (used for populating the Simulator.Parcels + dictionary) + + Simulator to request parcels from (must be connected) + If TRUE, will force a full refresh + Number of milliseconds to pause in between each request + + + + Request the dwell value for a parcel + + Simulator containing the parcel + Simulator-local ID of the parcel + + + + Send a request to Purchase a parcel of land + + The Simulator the parcel is located in + The parcels region specific local ID + true if this parcel is being purchased by a group + The groups + true to remove tier contribution if purchase is successful + The parcels size + The purchase price of the parcel + + + + + + Reclaim a parcel of land + + The simulator the parcel is in + The parcels region specific local ID + + + + Deed a parcel to a group + + The simulator the parcel is in + The parcels region specific local ID + The groups + + + + Request prim owners of a parcel of land. + + Simulator parcel is in + The parcels region specific local ID + + + + Return objects from a parcel + + Simulator parcel is in + The parcels region specific local ID + the type of objects to return, + A list containing object owners s to return + + + + Subdivide (split) a parcel + + + + + + + + + + + + + + + Join two parcels of land creating a single parcel + + + + + + + + + + + + + + + Get a parcels LocalID + + Simulator parcel is in + Vector3 position in simulator (Z not used) + 0 on failure, or parcel LocalID on success. + A call to Parcels.RequestAllSimParcels is required to populate map and + dictionary. + + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + LocalID of parcel, or -1 if using bounding box + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + true on successful request sent. + Settings.STORE_LAND_PATCHES must be true, + Parcel information must be downloaded using RequestAllSimParcels() + + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + west border of area to modify + south border of area to modify + east border of area to modify + north border of area to modify + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + true on successful request sent. + Settings.STORE_LAND_PATCHES must be true, + Parcel information must be downloaded using RequestAllSimParcels() + + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + LocalID of parcel, or -1 if using bounding box + west border of area to modify + south border of area to modify + east border of area to modify + north border of area to modify + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + How many meters + or - to lower, 1 = 1 meter + true on successful request sent. + Settings.STORE_LAND_PATCHES must be true, + Parcel information must be downloaded using RequestAllSimParcels() + + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + LocalID of parcel, or -1 if using bounding box + west border of area to modify + south border of area to modify + east border of area to modify + north border of area to modify + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + How many meters + or - to lower, 1 = 1 meter + Height at which the terraform operation is acting at + + + + Sends a request to the simulator to return a list of objects owned by specific owners + + Simulator local ID of parcel + Owners, Others, Etc + List containing keys of avatars objects to select; + if List is null will return Objects of type selectType + Response data is returned in the event + + + + Eject and optionally ban a user from a parcel + + target key of avatar to eject + true to also ban target + + + + Freeze or unfreeze an avatar over your land + + target key to freeze + true to freeze, false to unfreeze + + + + Abandon a parcel of land + + Simulator parcel is in + Simulator local ID of parcel + + + + Requests the UUID of the parcel in a remote region at a specified location + + Location of the parcel in the remote region + Remote region handle + Remote region UUID + If successful UUID of the remote parcel, UUID.Zero otherwise + + + + Retrieves information on resources used by the parcel + + UUID of the parcel + Should per object resource usage be requested + Callback invoked when the request is complete + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Contains a parcels dwell data returned from the simulator in response to an + + + + Construct a new instance of the ParcelDwellReplyEventArgs class + + The global ID of the parcel + The simulator specific ID of the parcel + The calculated dwell for the parcel + + + Get the global ID of the parcel + + + Get the simulator specific ID of the parcel + + + Get the calculated dwell + + + Contains basic parcel information data returned from the + simulator in response to an request + + + + Construct a new instance of the ParcelInfoReplyEventArgs class + + The object containing basic parcel info + + + Get the object containing basic parcel info + + + Contains basic parcel information data returned from the simulator in response to an request + + + + Construct a new instance of the ParcelPropertiesEventArgs class + + The object containing the details + The object containing the details + The result of the request + The number of primitieves your agent is + currently selecting and or sitting on in this parcel + The user assigned ID used to correlate a request with + these results + TODO: + + + Get the simulator the parcel is located in + + + Get the object containing the details + If Result is NoData, this object will not contain valid data + + + Get the result of the request + + + Get the number of primitieves your agent is + currently selecting and or sitting on in this parcel + + + Get the user assigned ID used to correlate a request with + these results + + + TODO: + + + Contains blacklist and whitelist data returned from the simulator in response to an request + + + + Construct a new instance of the ParcelAccessListReplyEventArgs class + + The simulator the parcel is located in + The user assigned ID used to correlate a request with + these results + The simulator specific ID of the parcel + TODO: + The list containing the white/blacklisted agents for the parcel + + + Get the simulator the parcel is located in + + + Get the user assigned ID used to correlate a request with + these results + + + Get the simulator specific ID of the parcel + + + TODO: + + + Get the list containing the white/blacklisted agents for the parcel + + + Contains blacklist and whitelist data returned from the + simulator in response to an request + + + + Construct a new instance of the ParcelObjectOwnersReplyEventArgs class + + The simulator the parcel is located in + The list containing prim ownership counts + + + Get the simulator the parcel is located in + + + Get the list containing prim ownership counts + + + Contains the data returned when all parcel data has been retrieved from a simulator + + + + Construct a new instance of the SimParcelsDownloadedEventArgs class + + The simulator the parcel data was retrieved from + The dictionary containing the parcel data + The multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. + + + Get the simulator the parcel data was retrieved from + + + A dictionary containing the parcel data where the key correlates to the ParcelMap entry + + + Get the multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. + + + Contains the data returned when a request + + + + Construct a new instance of the ForceSelectObjectsReplyEventArgs class + + The simulator the parcel data was retrieved from + The list of primitive IDs + true if the list is clean and contains the information + only for a given request + + + Get the simulator the parcel data was retrieved from + + + Get the list of primitive IDs + + + true if the list is clean and contains the information + only for a given request + + + Contains data when the media data for a parcel the avatar is on changes + + + + Construct a new instance of the ParcelMediaUpdateReplyEventArgs class + + the simulator the parcel media data was updated in + The updated media information + + + Get the simulator the parcel media data was updated in + + + Get the updated media information + + + Contains the media command for a parcel the agent is currently on + + + + Construct a new instance of the ParcelMediaCommandEventArgs class + + The simulator the parcel media command was issued in + + + + + The media command that was sent + + + + + Get the simulator the parcel media command was issued in + + + + + + + + + + + Get the media command that was sent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Class for controlling various system settings. + + Some values are readonly because they affect things that + happen when the GridClient object is initialized, so changing them at + runtime won't do any good. Non-readonly values may affect things that + happen at login or dynamically + + + Constructor + Reference to a GridClient object + + + Main grid login server + + + Beta grid login server + + + + InventoryManager requests inventory information on login, + GridClient initializes an Inventory store for main inventory. + + + + + InventoryManager requests library information on login, + GridClient initializes an Inventory store for the library. + + + + Number of milliseconds between sending pings to each sim + + + Number of milliseconds between sending camera updates + + + Number of milliseconds between updating the current + positions of moving, non-accelerating and non-colliding objects + + + Millisecond interval between ticks, where all ACKs are + sent out and the age of unACKed packets is checked + + + The initial size of the packet inbox, where packets are + stored before processing + + + Maximum size of packet that we want to send over the wire + + + The maximum value of a packet sequence number before it + rolls over back to one + + + The maximum size of the sequence number archive, used to + check for resent and/or duplicate packets + + + The relative directory where external resources are kept + + + Login server to connect to + + + IP Address the client will bind to + + + Use XML-RPC Login or LLSD Login, default is XML-RPC Login + + + Number of milliseconds before an asset transfer will time + out + + + Number of milliseconds before a teleport attempt will time + out + + + Number of milliseconds before NetworkManager.Logout() will + time out + + + Number of milliseconds before a CAPS call will time out + Setting this too low will cause web requests time out and + possibly retry repeatedly + + + Number of milliseconds for xml-rpc to timeout + + + Milliseconds before a packet is assumed lost and resent + + + Milliseconds without receiving a packet before the + connection to a simulator is assumed lost + + + Milliseconds to wait for a simulator info request through + the grid interface + + + Maximum number of queued ACKs to be sent before SendAcks() + is forced + + + Network stats queue length (seconds) + + + Enable/disable storing terrain heightmaps in the + TerrainManager + + + Enable/disable sending periodic camera updates + + + Enable/disable automatically setting agent appearance at + login and after sim crossing + + + Enable/disable automatically setting the bandwidth throttle + after connecting to each simulator + The default throttle uses the equivalent of the maximum + bandwidth setting in the official client. If you do not set a + throttle your connection will by default be throttled well below + the minimum values and you may experience connection problems + + + Enable/disable the sending of pings to monitor lag and + packet loss + + + Should we connect to multiple sims? This will allow + viewing in to neighboring simulators and sim crossings + (Experimental) + + + If true, all object update packets will be decoded in to + native objects. If false, only updates for our own agent will be + decoded. Registering an event handler will force objects for that + type to always be decoded. If this is disabled the object tracking + will have missing or partial prim and avatar information + + + If true, when a cached object check is received from the + server the full object info will automatically be requested + + + Whether to establish connections to HTTP capabilities + servers for simulators + + + Whether to decode sim stats + + + The capabilities servers are currently designed to + periodically return a 502 error which signals for the client to + re-establish a connection. Set this to true to log those 502 errors + + + If true, any reference received for a folder or item + the library is not aware of will automatically be fetched + + + If true, and SEND_AGENT_UPDATES is true, + AgentUpdate packets will continuously be sent out to give the bot + smoother movement and autopiloting + + + If true, currently visible avatars will be stored + in dictionaries inside Simulator.ObjectAvatars. + If false, a new Avatar or Primitive object will be created + each time an object update packet is received + + + If true, currently visible avatars will be stored + in dictionaries inside Simulator.ObjectPrimitives. + If false, a new Avatar or Primitive object will be created + each time an object update packet is received + + + If true, position and velocity will periodically be + interpolated (extrapolated, technically) for objects and + avatars that are being tracked by the library. This is + necessary to increase the accuracy of speed and position + estimates for simulated objects + + + + If true, utilization statistics will be tracked. There is a minor penalty + in CPU time for enabling this option. + + + + If true, parcel details will be stored in the + Simulator.Parcels dictionary as they are received + + + + If true, an incoming parcel properties reply will automatically send + a request for the parcel access list + + + + + if true, an incoming parcel properties reply will automatically send + a request for the traffic count. + + + + + If true, images, and other assets downloaded from the server + will be cached in a local directory + + + + Path to store cached texture data + + + Maximum size cached files are allowed to take on disk (bytes) + + + Default color used for viewer particle effects + + + Maximum number of times to resend a failed packet + + + Throttle outgoing packet rate + + + UUID of a texture used by some viewers to indentify type of client used + + + + Download textures using GetTexture capability when available + + + + The maximum number of concurrent texture downloads allowed + Increasing this number will not necessarily increase texture retrieval times due to + simulator throttles + + + + The Refresh timer inteval is used to set the delay between checks for stalled texture downloads + + This is a static variable which applies to all instances + + + + Textures taking longer than this value will be flagged as timed out and removed from the pipeline + + + + + Get or set the minimum log level to output to the console by default + If the library is not compiled with DEBUG defined and this level is set to DEBUG + You will get no output on the console. This behavior can be overriden by creating + a logger configuration file for log4net + + + + Attach avatar names to log messages + + + Log packet retransmission info + + + Cost of uploading an asset + Read-only since this value is dynamically fetched at login + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Simulator (region) properties @@ -22528,325 +16253,15 @@ - - - A public reference to the client that this Simulator object - is attached to - - - A Unique Cache identifier for this simulator - - - The capabilities for this simulator - - - - - - The current version of software this simulator is running - - - - - - A 64x64 grid of parcel coloring values. The values stored - in this array are of the type - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true if your agent has Estate Manager rights on this region - - - - - - - - - - - - Statistics information for this simulator and the - connection to the simulator, calculated by the simulator itself - and the library - - - The regions Unique ID - - - The physical data center the simulator is located - Known values are: - - Dallas - Chandler - SF - - - - - The CPU Class of the simulator - Most full mainland/estate sims appear to be 5, - Homesteads and Openspace appear to be 501 - - - The number of regions sharing the same CPU as this one - "Full Sims" appear to be 1, Homesteads appear to be 4 - - - The billing product name - Known values are: - - Mainland / Full Region (Sku: 023) - Estate / Full Region (Sku: 024) - Estate / Openspace (Sku: 027) - Estate / Homestead (Sku: 029) - Mainland / Homestead (Sku: 129) (Linden Owned) - Mainland / Linden Homes (Sku: 131) - - - - - The billing product SKU - Known values are: - - 023 Mainland / Full Region - 024 Estate / Full Region - 027 Estate / Openspace - 029 Estate / Homestead - 129 Mainland / Homestead (Linden Owned) - 131 Linden Homes / Full Region - - - - - The current sequence number for packets sent to this - simulator. Must be Interlocked before modifying. Only - useful for applications manipulating sequence numbers - - - - A thread-safe dictionary containing avatars in a simulator - - - - - A thread-safe dictionary containing primitives in a simulator - - - - - Provides access to an internal thread-safe dictionary containing parcel - information found in this simulator - - - - - Checks simulator parcel map to make sure it has downloaded all data successfully - - true if map is full (contains no 0's) - - - Used internally to track sim disconnections - - - Event that is triggered when the simulator successfully - establishes a connection - - - Whether this sim is currently connected or not. Hooked up - to the property Connected - - - Coarse locations of avatars in this simulator - - - AvatarPositions key representing TrackAgent target - - - Sequence numbers of packets we've received - (for duplicate checking) - - - Packets we sent out that need ACKs from the simulator - - - Sequence number for pause/resume - - - Indicates if UDP connection to the sim is fully established - - Reference to the GridClient object IPEndPoint of the simulator handle of the simulator - - - Called when this Simulator object is being destroyed - - - - - Attempt to connect to this simulator - - Whether to move our agent in to this sim or not - True if the connection succeeded or connection status is - unknown, false if there was a failure - - - - Initiates connection to the simulator - - - - - Disconnect from this simulator - - - - - Instructs the simulator to stop sending update (and possibly other) packets - - - - - Instructs the simulator to resume sending update packets (unpause) - - - - - Retrieve the terrain height at a given coordinate - - Sim X coordinate, valid range is from 0 to 255 - Sim Y coordinate, valid range is from 0 to 255 - The terrain height at the given point if the - lookup was successful, otherwise 0.0f - True if the lookup was successful, otherwise false - - - - Sends a packet - - Packet to be sent - - - - - - - - - Returns Simulator Name as a String - - - - - - - - - - - - - - - - - - - Sends out pending acknowledgements - - Number of ACKs sent - - - - Resend unacknowledged packets - - - - - Provides access to an internal thread-safe multidimensional array containing a x,y grid mapped - to each 64x64 parcel's LocalID. - - - - The IP address and port of the server - - - Whether there is a working connection to the simulator or - not - - - Coarse locations of avatars in this simulator - - - AvatarPositions key representing TrackAgent target - - - Indicates if UDP connection to the sim is fully established - Simulator Statistics @@ -22900,10 +16315,12 @@ ID of last Ping sent - + + - + + Current time dilation of this simulator @@ -22915,28 +16332,36 @@ Current Physics frames per second of simulator - + + - + + - + + - + + - + + - + + - + + - + + Total number of objects Simulator is simulating @@ -22954,13 +16379,16 @@ Number of Active scripts running in this simulator - + + - + + - + + Number of downloads pending @@ -22969,10 +16397,12 @@ Number of uploads pending - + + - + + Number of local uploads pending @@ -22980,1183 +16410,5475 @@ Unacknowledged bytes in queue - + + A public reference to the client that this Simulator object + is attached to + + + A Unique Cache identifier for this simulator + + + The capabilities for this simulator + + - Exception class to identify inventory exceptions - + + The current version of software this simulator is running + + - Responsible for maintaining inventory structure. Inventory constructs nodes - and manages node children as is necessary to maintain a coherant hirarchy. - Other classes should not manipulate or create InventoryNodes explicitly. When - A node's parent changes (when a folder is moved, for example) simply pass - Inventory the updated InventoryFolder and it will make the appropriate changes - to its internal representation. - + + A 64x64 grid of parcel coloring values. The values stored + in this array are of the type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true if your agent has Estate Manager rights on this region + + + + + + + + + + + + + + + Statistics information for this simulator and the + connection to the simulator, calculated by the simulator itself + and the library + + + The regions Unique ID + + + The physical data center the simulator is located + Known values are: + DallasChandlerSF + + + The CPU Class of the simulator + Most full mainland/estate sims appear to be 5, + Homesteads and Openspace appear to be 501 + + + The number of regions sharing the same CPU as this one + "Full Sims" appear to be 1, Homesteads appear to be 4 + + + The billing product name + Known values are: + Mainland / Full Region (Sku: 023)Estate / Full Region (Sku: 024)Estate / Openspace (Sku: 027)Estate / Homestead (Sku: 029)Mainland / Homestead (Sku: 129) (Linden Owned)Mainland / Linden Homes (Sku: 131) + + + The billing product SKU + Known values are: + 023 Mainland / Full Region024 Estate / Full Region027 Estate / Openspace029 Estate / Homestead129 Mainland / Homestead (Linden Owned)131 Linden Homes / Full Region + + + The current sequence number for packets sent to this + simulator. Must be Interlocked before modifying. Only + useful for applications manipulating sequence numbers + + + + A thread-safe dictionary containing avatars in a simulator + + + + + A thread-safe dictionary containing primitives in a simulator + + + + + Provides access to an internal thread-safe dictionary containing parcel + information found in this simulator + + + + Used internally to track sim disconnections + + + Event that is triggered when the simulator successfully + establishes a connection + + + Whether this sim is currently connected or not. Hooked up + to the property Connected + + + Coarse locations of avatars in this simulator + + + AvatarPositions key representing TrackAgent target + + + Sequence numbers of packets we've received + (for duplicate checking) + + + Packets we sent out that need ACKs from the simulator + + + Sequence number for pause/resume + + + Indicates if UDP connection to the sim is fully established + + + + Provides access to an internal thread-safe multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. + + + + The IP address and port of the server + + + Whether there is a working connection to the simulator or + not + + + Coarse locations of avatars in this simulator + + + AvatarPositions key representing TrackAgent target + + + Indicates if UDP connection to the sim is fully established + + + + Checks simulator parcel map to make sure it has downloaded all data successfully + + true if map is full (contains no 0's) + + + + Called when this Simulator object is being destroyed + + + + + Attempt to connect to this simulator + + Whether to move our agent in to this sim or not + True if the connection succeeded or connection status is + unknown, false if there was a failure + + + + Initiates connection to the simulator + + + + + Disconnect from this simulator + + + + + Instructs the simulator to stop sending update (and possibly other) packets + + + + + Instructs the simulator to resume sending update packets (unpause) + + + + + Retrieve the terrain height at a given coordinate + + Sim X coordinate, valid range is from 0 to 255 + Sim Y coordinate, valid range is from 0 to 255 + The terrain height at the given point if the + lookup was successful, otherwise 0.0f + True if the lookup was successful, otherwise false + + + + Sends a packet + + Packet to be sent + + + + + + + + Returns Simulator Name as a String + + + + + + + + + + + + + + + + + + + + + Sends out pending acknowledgements + + Number of ACKs sent + + + + Resend unacknowledged packets + + + + + + + + + Construct a new instance of the SoundManager class, used for playing and receiving + sound assets + + A reference to the current GridClient instance + + The event subscribers, null of no subscribers - - Raises the InventoryObjectUpdated Event - A InventoryObjectUpdatedEventArgs object containing - the data sent from the simulator - - + Thread sync lock object - + The event subscribers, null of no subscribers - - Raises the InventoryObjectRemoved Event - A InventoryObjectRemovedEventArgs object containing - the data sent from the simulator - - + Thread sync lock object - + The event subscribers, null of no subscribers - - Raises the InventoryObjectAdded Event - A InventoryObjectAddedEventArgs object containing - the data sent from the simulator - - + Thread sync lock object - - - Returns the contents of the specified folder - - A folder's UUID - The contents of the folder corresponding to folder - When folder does not exist in the inventory + + The event subscribers, null of no subscribers - - - Updates the state of the InventoryNode and inventory data structure that - is responsible for the InventoryObject. If the item was previously not added to inventory, - it adds the item, and updates structure accordingly. If it was, it updates the - InventoryNode, changing the parent node if item.parentUUID does - not match node.Parent.Data.UUID. - - You can not set the inventory root folder using this method - - The InventoryObject to store + + Thread sync lock object - - - Removes the InventoryObject and all related node data from Inventory. - - The InventoryObject to remove. + + Raised when the simulator sends us data containing + sound - - - Used to find out if Inventory contains the InventoryObject - specified by uuid. - - The UUID to check. - true if inventory contains uuid, false otherwise - - - - Saves the current inventory structure to a cache file - - Name of the cache file to save to - - - - Loads in inventory cache file into the inventory structure. Note only valid to call after login has been successful. - - Name of the cache file to load - The number of inventory items sucessfully reconstructed into the inventory node tree - - + Raised when the simulator sends us data containing ... - + Raised when the simulator sends us data containing ... - + Raised when the simulator sends us data containing ... - + + Raises the AttachedSound Event + A AttachedSoundEventArgs object containing + the data sent from the simulator + + + Raises the AttachedSoundGainChange Event + A AttachedSoundGainChangeEventArgs object containing + the data sent from the simulator + + + Raises the SoundTrigger Event + A SoundTriggerEventArgs object containing + the data sent from the simulator + + + Raises the PreloadSound Event + A PreloadSoundEventArgs object containing + the data sent from the simulator + + - The root folder of this avatars inventory + Plays a sound in the current region at full volume from avatar position + UUID of the sound to be played - + - The default shared library folder + Plays a sound in the current region at full volume + UUID of the sound to be played. + position for the sound to be played at. Normally the avatar. - + - The root node of the avatars inventory + Plays a sound in the current region + UUID of the sound to be played. + position for the sound to be played at. Normally the avatar. + volume of the sound, from 0.0 to 1.0 - + - The root node of the default shared library + Plays a sound in the specified sim + UUID of the sound to be played. + UUID of the sound to be played. + position for the sound to be played at. Normally the avatar. + volume of the sound, from 0.0 to 1.0 - + - By using the bracket operator on this class, the program can get the - InventoryObject designated by the specified uuid. If the value for the corresponding - UUID is null, the call is equivelant to a call to RemoveNodeFor(this[uuid]). - If the value is non-null, it is equivelant to a call to UpdateNodeFor(value), - the uuid parameter is ignored. + Play a sound asset - The UUID of the InventoryObject to get or set, ignored if set to non-null value. - The InventoryObject corresponding to uuid. + UUID of the sound to be played. + handle id for the sim to be played in. + position for the sound to be played at. Normally the avatar. + volume of the sound, from 0.0 to 1.0 - - - Holds group information for Avatars such as those you might find in a profile - - - - true of Avatar accepts group notices - - - Groups Key - - - Texture Key for groups insignia - - - Name of the group - - - Powers avatar has in the group - - - Avatars Currently selected title - - - true of Avatar has chosen to list this in their profile - - - - Contains an animation currently being played by an agent - - - - The ID of the animation asset - - - A number to indicate start order of currently playing animations - On Linden Grids this number is unique per region, with OpenSim it is per client - - - - - - - Holds group information on an individual profile pick - - - - - Retrieve friend status notifications, and retrieve avatar names and - profiles - - - - The event subscribers, null of no subscribers - - - Raises the AvatarAnimation Event - An AvatarAnimationEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarAppearance Event - A AvatarAppearanceEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the UUIDNameReply Event - A UUIDNameReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarInterestsReply Event - A AvatarInterestsReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarPropertiesReply Event - A AvatarPropertiesReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarGroupsReply Event - A AvatarGroupsReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarPickerReply Event - A AvatarPickerReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ViewerEffectPointAt Event - A ViewerEffectPointAtEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ViewerEffectLookAt Event - A ViewerEffectLookAtEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ViewerEffect Event - A ViewerEffectEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarPicksReply Event - A AvatarPicksReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the PickInfoReply Event - A PickInfoReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarClassifiedReply Event - A AvatarClassifiedReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ClassifiedInfoReply Event - A ClassifiedInfoReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - - Represents other avatars - - - - - Tracks the specified avatar on your map - Avatar ID to track - - - - Request a single avatar name - - The avatar key to retrieve a name for - - - - Request a list of avatar names - - The avatar keys to retrieve names for - - - - Start a request for Avatar Properties - - - - - - Search for an avatar (first name, last name) - - The name to search for - An ID to associate with this query - - - - Start a request for Avatar Picks - - UUID of the avatar - - - - Start a request for Avatar Classifieds - - UUID of the avatar - - - - Start a request for details of a specific profile pick - - UUID of the avatar - UUID of the profile pick - - - - Start a request for details of a specific profile classified - - UUID of the avatar - UUID of the profile classified - - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Provides data for the event + The event occurs when the simulator sends + the sound data which emits from an agents attachment + + The following code example shows the process to subscribe to the event + and a stub to handle the data passed from the simulator + + // Subscribe to the AttachedSound event + Client.Sound.AttachedSound += Sound_AttachedSound; + // process the data raised in the event here + private void Sound_AttachedSound(object sender, AttachedSoundEventArgs e) + { + // ... Process AttachedSoundEventArgs here ... + } + - + - Crossed region handler for message that comes across the EventQueue. Sent to an agent - when the agent crosses a sim border into a new region. + Construct a new instance of the SoundTriggerEventArgs class - The message key - the IMessage object containing the deserialized data sent from the simulator - The which originated the packet + Simulator where the event originated + The sound asset id + The ID of the owner + The ID of the object + The volume level + The - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Simulator where the event originated - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Get the sound asset id - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Get the ID of the owner - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Get the ID of the Object - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Get the volume level - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Get the - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Provides data for the event + The event occurs when an attached sound + changes its volume level - - Raised when the simulator sends us data containing - an agents animation playlist - - - Raised when the simulator sends us data containing - the appearance information for an agent - - - Raised when the simulator sends us data containing - agent names/id values - - - Raised when the simulator sends us data containing - the interests listed in an agents profile - - - Raised when the simulator sends us data containing - profile property information for an agent - - - Raised when the simulator sends us data containing - the group membership an agent is a member of - - - Raised when the simulator sends us data containing - name/id pair - - - Raised when the simulator sends us data containing - the objects and effect when an agent is pointing at - - - Raised when the simulator sends us data containing - the objects and effect when an agent is looking at - - - Raised when the simulator sends us data containing - an agents viewer effect information - - - Raised when the simulator sends us data containing - the top picks from an agents profile - - - Raised when the simulator sends us data containing - the Pick details - - - Raised when the simulator sends us data containing - the classified ads an agent has placed - - - Raised when the simulator sends us data containing - the details of a classified ad - - - Provides data for the event - The event occurs when the simulator sends - the animation playlist for an agent - - The following code example uses the and - properties to display the animation playlist of an avatar on the window. - - // subscribe to the event - Client.Avatars.AvatarAnimation += Avatars_AvatarAnimation; - - private void Avatars_AvatarAnimation(object sender, AvatarAnimationEventArgs e) - { - // create a dictionary of "known" animations from the Animations class using System.Reflection - Dictionary<UUID, string> systemAnimations = new Dictionary<UUID, string>(); - Type type = typeof(Animations); - System.Reflection.FieldInfo[] fields = type.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); - foreach (System.Reflection.FieldInfo field in fields) - { - systemAnimations.Add((UUID)field.GetValue(type), field.Name); - } - - // find out which animations being played are known animations and which are assets - foreach (Animation animation in e.Animations) - { - if (systemAnimations.ContainsKey(animation.AnimationID)) - { - Console.WriteLine("{0} is playing {1} ({2}) sequence {3}", e.AvatarID, - systemAnimations[animation.AnimationID], animation.AnimationSequence); - } - else - { - Console.WriteLine("{0} is playing {1} (Asset) sequence {2}", e.AvatarID, - animation.AnimationID, animation.AnimationSequence); - } - } - } - - - - + - Construct a new instance of the AvatarAnimationEventArgs class + Construct a new instance of the AttachedSoundGainChangedEventArgs class - The ID of the agent - The list of animations to start + Simulator where the event originated + The ID of the Object + The new volume level - - Get the ID of the agent + + Simulator where the event originated - - Get the list of animations to start + + Get the ID of the Object - - Provides data for the event - The event occurs when the simulator sends + + Get the volume level + + + Provides data for the event + + The event occurs when the simulator forwards + a request made by yourself or another agent to play either an asset sound or a built in sound + Requests to play sounds where the is not one of the built-in + will require sending a request to download the sound asset before it can be played + + + The following code example uses the , + and + properties to display some information on a sound request on the window. + + // subscribe to the event + Client.Sound.SoundTrigger += Sound_SoundTrigger; + // play the pre-defined BELL_TING sound + Client.Sound.SendSoundTrigger(Sounds.BELL_TING); + // handle the response data + private void Sound_SoundTrigger(object sender, SoundTriggerEventArgs e) + { + Console.WriteLine("{0} played the sound {1} at volume {2}", + e.OwnerID, e.SoundID, e.Gain); + } + + + + + Construct a new instance of the SoundTriggerEventArgs class + + Simulator where the event originated + The sound asset id + The ID of the owner + The ID of the object + The ID of the objects parent + The volume level + The regionhandle + The source position + + + Simulator where the event originated + + + Get the sound asset id + + + Get the ID of the owner + + + Get the ID of the Object + + + Get the ID of the objects parent + + + Get the volume level + + + Get the regionhandle + + + Get the source position + + + Provides data for the event + The event occurs when the simulator sends the appearance data for an avatar - The following code example uses the and - properties to display the selected shape of an avatar on the window. + The following code example uses the and + properties to display the selected shape of an avatar on the window. - // subscribe to the event - Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; - - // handle the data when the event is raised - void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) - { - Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") - } - - + // subscribe to the event + Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; + // handle the data when the event is raised + void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) + { + Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") + } + - + - Construct a new instance of the AvatarAppearanceEventArgs class + Construct a new instance of the PreloadSoundEventArgs class - The simulator request was from - The ID of the agent - true of the agent is a trial account - The default agent texture - The agents appearance layer textures - The for the agent + Simulator where the event originated + The sound asset id + The ID of the owner + The ID of the object - - Get the Simulator this request is from of the agent + + Simulator where the event originated - - Get the ID of the agent + + Get the sound asset id - - true if the agent is a trial account + + Get the ID of the owner - - Get the default agent texture + + Get the ID of the Object - - Get the agents appearance layer textures - - - Get the for the agent - - - Represents the interests from the profile of an agent - - - Get the ID of the agent - - - The properties of an agent - - - Get the ID of the agent - - - Get the ID of the agent - - - Get the ID of the agent - - - Get the ID of the avatar - - + - + pre-defined built in sounds - - OK - - - Transfer completed - - - - - - - - - Unknown error occurred - - - Equivalent to a 404 error - - - Client does not have permission for that resource - - - Unknown status - - + - - - - - - Unknown - - - Virtually all asset transfers use this channel - - + - - - - - - Asset from the asset server - - - Inventory item - - - Estate asset, such as an estate covenant - - + - - - - - - - - - - - + - - - - - - - - + - Image file format - + - - - Number of milliseconds passed since the last transfer - packet was received - - + - - + - - + + coins + + + cash register bell + + - - + - - + + rubber + + + plastic + + + flesh + + + wood splintering? + + + glass break + + + metal clunk + + + whoosh + + + shake + + - - - - - - - - - + + ding - + - - - Number of milliseconds to wait for a transfer header packet if out of order data was received + + + - - The event subscribers. null if no subcribers + + + - - Raises the XferReceived event - A XferReceivedEventArgs object containing the - data returned from the simulator + + + - - Thread sync lock object + + + - - The event subscribers. null if no subcribers + + + - - Raises the AssetUploaded event - A AssetUploadedEventArgs object containing the - data returned from the simulator + + + - - Thread sync lock object + + + - - The event subscribers. null if no subcribers + + + - - Raises the UploadProgress event - A UploadProgressEventArgs object containing the - data returned from the simulator + + + - - Thread sync lock object + + + - - The event subscribers. null if no subcribers + + + - - Raises the InitiateDownload event - A InitiateDownloadEventArgs object containing the - data returned from the simulator + + + - - Thread sync lock object + + + - - The event subscribers. null if no subcribers + + + A dictionary containing all pre-defined sounds + + A dictionary containing the pre-defined sounds, + where the key is the sounds ID, and the value is a string + containing a name to identify the purpose of the sound - - Raises the ImageReceiveProgress event - A ImageReceiveProgressEventArgs object containing the - data returned from the simulator + + X position of this patch - - Thread sync lock object + + Y position of this patch - - Texture download cache + + A 16x16 array of floats holding decompressed layer data - + + + Creates a LayerData packet for compressed land data given a full + simulator heightmap and an array of indices of patches to compress + + A 256 * 256 array of floating point values + specifying the height at each meter in the simulator + Array of indexes in the 16x16 grid of patches + for this simulator. For example if 1 and 17 are specified, patches + x=1,y=0 and x=1,y=1 are sent + + + + + + Add a patch of terrain to a BitPacker + + BitPacker to write the patch to + Heightmap of the simulator, must be a 256 * + 256 float array + X offset of the patch to create, valid values are + from 0 to 15 + Y offset of the patch to create, valid values are + from 0 to 15 + + Default constructor - A reference to the GridClient object + + - - - Request an asset download - - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - The callback to fire when the simulator responds with the asset data + + The event subscribers. null if no subcribers - - - Request an asset download - - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - Source location of the requested asset - The callback to fire when the simulator responds with the asset data + + Thread sync lock object - - - Request an asset download - - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - Source location of the requested asset - UUID of the transaction - The callback to fire when the simulator responds with the asset data - - - - Request an asset download through the almost deprecated Xfer system - - Filename of the asset to request - Whether or not to delete the asset - off the server after it is retrieved - Use large transfer packets or not - UUID of the file to request, if filename is - left empty - Asset type of vFileID, or - AssetType.Unknown if filename is not empty - Sets the FilePath in the request to Cache - (4) if true, otherwise Unknown (0) is used - - - - - - - Use UUID.Zero if you do not have the - asset ID but have all the necessary permissions - The item ID of this asset in the inventory - Use UUID.Zero if you are not requesting an - asset from an object inventory - The owner of this asset - Asset type - Whether to prioritize this asset download or not - - - - - Used to force asset data into the PendingUpload property, ie: for raw terrain uploads - - An AssetUpload object containing the data to upload to the simulator - - - - Request an asset be uploaded to the simulator - - The Object containing the asset data - If True, the asset once uploaded will be stored on the simulator - in which the client was connected in addition to being stored on the asset server - The of the transfer, can be used to correlate the upload with - events being fired - - - - Request an asset be uploaded to the simulator - - The of the asset being uploaded - A byte array containing the encoded asset data - If True, the asset once uploaded will be stored on the simulator - in which the client was connected in addition to being stored on the asset server - The of the transfer, can be used to correlate the upload with - events being fired - - - - Request an asset be uploaded to the simulator - - - Asset type to upload this data as - A byte array containing the encoded asset data - If True, the asset once uploaded will be stored on the simulator - in which the client was connected in addition to being stored on the asset server - The of the transfer, can be used to correlate the upload with - events being fired - - - - Initiate an asset upload - - The ID this asset will have if the - upload succeeds - Asset type to upload this data as - Raw asset data to upload - Whether to store this asset on the local - simulator or the grid-wide asset server - The tranaction id for the upload - The transaction ID of this transfer - - - - Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - A float indicating the requested priority for the transfer. Higher priority values tell the simulator - to prioritize the request before lower valued requests. An image already being transferred using the can have - its priority changed by resending the request with the new priority value - Number of quality layers to discard. - This controls the end marker of the data sent. Sending with value -1 combined with priority of 0 cancels an in-progress - transfer. - A bug exists in the Linden Simulator where a -1 will occasionally be sent with a non-zero priority - indicating an off-by-one error. - The packet number to begin the request at. A value of 0 begins the request - from the start of the asset texture - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - If true, the callback will be fired for each chunk of the downloaded image. - The callback asset parameter will contain all previously received chunks of the texture asset starting - from the beginning of the request - - Request an image and fire a callback when the request is complete - - Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); - - private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) - { - if(state == TextureRequestState.Finished) - { - Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", - asset.AssetID, - asset.AssetData.Length); - } - } - - Request an image and use an inline anonymous method to handle the downloaded texture data - - Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, delegate(TextureRequestState state, AssetTexture asset) - { - if(state == TextureRequestState.Finished) - { - Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", - asset.AssetID, - asset.AssetData.Length); - } - } - ); - - Request a texture, decode the texture to a bitmap image and apply it to a imagebox - - Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); - - private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) - { - if(state == TextureRequestState.Finished) - { - ManagedImage imgData; - Image bitmap; - - if (state == TextureRequestState.Finished) - { - OpenJPEG.DecodeToImage(assetTexture.AssetData, out imgData, out bitmap); - picInsignia.Image = bitmap; - } - } - } - - - - - - Overload: Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - - - - Overload: Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - - - - Overload: Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - If true, the callback will be fired for each chunk of the downloaded image. - The callback asset parameter will contain all previously received chunks of the texture asset starting - from the beginning of the request - - - - Cancel a texture request - - The texture assets - - - - Lets TexturePipeline class fire the progress event - - The texture ID currently being downloaded - the number of bytes transferred - the total number of bytes expected - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - + Raised when the simulator responds sends - - Raised during upload completes + + Raises the LandPatchReceived event + A LandPatchReceivedEventArgs object containing the + data returned from the simulator - - Raised during upload with progres update + + Simulator from that sent tha data - - Fired when the simulator sends an InitiateDownloadPacket, used to download terrain .raw files + + Sim coordinate of the patch - - Fired when a texture is in the process of being downloaded by the TexturePipeline class + + Sim coordinate of the patch - + + Size of tha patch + + + Heightmap for the patch + + - Callback used for various asset download requests + The current status of a texture request as it moves through the pipeline or final result of a texture request. - Transfer information - Downloaded asset, null on fail - + + The initial state given to a request. Requests in this state + are waiting for an available slot in the pipeline + + + A request that has been added to the pipeline and the request packet + has been sent to the simulator + + + A request that has received one or more packets back from the simulator + + + A request that has received all packets back from the simulator + + + A request that has taken longer than + to download OR the initial packet containing the packet information was never received + + + The texture request was aborted by request of the agent + + + The simulator replied to the request that it was not able to find the requested texture + + - Callback used upon competition of baked texture upload + Texture request download handler, allows a configurable number of download slots which manage multiple + concurrent texture downloads from the + This class makes full use of the internal + system for full texture downloads. + + + + Default constructor, Instantiates a new copy of the TexturePipeline class - Asset UUID of the newly uploaded baked texture + Reference to the instantiated object - - Xfer data + + + A request task containing information and status of a request as it is processed through the - - Upload data + + The current which identifies the current status of the request - - Filename used on the simulator + + The Unique Request ID, This is also the Asset ID of the texture being requested - - Filename used by the client + + The slot this request is occupying in the threadpoolSlots array - - UUID of the image that is in progress + + The ImageType of the request. - - Number of bytes received so far + + The callback to fire when the request is complete, will include + the and the + object containing the result data - - Image size in bytes + + If true, indicates the callback will be fired whenever new data is returned from the simulator. + This is used to progressively render textures as portions of the texture are received. + + + An object that maintains the data of an request thats in-process. + + + A dictionary containing all pending and in-process transfer requests where the Key is both the RequestID + and also the Asset Texture ID, and the value is an object containing the current state of the request and also + the asset data as it is being re-assembled + + + Holds the reference to the client object + + + Maximum concurrent texture requests allowed at a time + + + An array of objects used to manage worker request threads + + + An array of worker slots which shows the availablity status of the slot + + + The primary thread which manages the requests. + + + true if the TexturePipeline is currently running + + + A synchronization object used by the primary thread + + + A refresh timer used to increase the priority of stalled requests + + + Current number of pending and in-process transfers + + + + Initialize callbacks required for the TexturePipeline to operate + + + + + Shutdown the TexturePipeline and cleanup any callbacks or transfers + + + + + Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + A float indicating the requested priority for the transfer. Higher priority values tell the simulator + to prioritize the request before lower valued requests. An image already being transferred using the can have + its priority changed by resending the request with the new priority value + Number of quality layers to discard. + This controls the end marker of the data sent + The packet number to begin the request at. A value of 0 begins the request + from the start of the asset texture + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request + + + + Sends the actual request packet to the simulator + + The image to download + Type of the image to download, either a baked + avatar texture or a normal texture + Priority level of the download. Default is + 1,013,000.0f + Number of quality layers to discard. + This controls the end marker of the data sent + Packet number to start the download at. + This controls the start marker of the data sent + Sending a priority of 0 and a discardlevel of -1 aborts + download + + + + Cancel a pending or in process texture request + + The texture assets unique ID + + + + Master Download Thread, Queues up downloads in the threadpool + + + + + The worker thread that sends the request and handles timeouts + + A object containing the request details + + + + Handle responses from the simulator that tell us a texture we have requested is unable to be located + or no longer exists. This will remove the request from the pipeline and free up a slot if one is in use + + The sender + The EventArgs object containing the packet data + + + + Handles the remaining Image data that did not fit in the initial ImageData packet + + The sender + The EventArgs object containing the packet data + + + + Handle the initial ImageDataPacket sent from the simulator + + The sender + The EventArgs object containing the packet data + + + + + + + + Delegate to wrap another delegate and its arguments + + + + + + + + + An instance of DelegateWrapper which calls InvokeWrappedDelegate, + which in turn calls the DynamicInvoke method of the wrapped + delegate + + + + + Callback used to call EndInvoke on the asynchronously + invoked DelegateWrapper + + + + + Executes the specified delegate with the specified arguments + asynchronously on a thread pool thread + + + + + + + + + Invokes the wrapped delegate synchronously + + + + + + + + + Calls EndInvoke on the wrapper and Close on the resulting WaitHandle + to prevent resource leaks + + + + + + + + + + + Initialize the UDP packet handler in server mode + + Port to listening for incoming UDP packets on + + + + Initialize the UDP packet handler in client mode + + Remote UDP server to connect to + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Thrown when a packet could not be successfully deserialized + + + + + Default constructor + + + + + Constructor that takes an additional error message + + An error message to attach to this exception + + + + The header of a message template packet. Holds packet flags, sequence + number, packet ID, and any ACKs that will be appended at the end of + the packet + + + + + Convert the AckList to a byte array, used for packet serializing + + Reference to the target byte array + Beginning position to start writing to in the byte + array, will be updated with the ending position of the ACK list + + + + + + + + + + + + + + + + + + + + + + + + + + A block of data in a packet. Packets are composed of one or more blocks, + each block containing one or more fields + + + + Current length of the data in this packet + + + + Create a block from a byte array + + Byte array containing the serialized block + Starting position of the block in the byte array. + This will point to the data after the end of the block when the + call returns + + + + Serialize this block into a byte array + + Byte array to serialize this block into + Starting position in the byte array to serialize to. + This will point to the position directly after the end of the + serialized block when the call returns + + + A generic value, not an actual packet type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Operation to apply when applying color to texture + + + + + Information needed to translate visual param value to RGBA color + + + + + Construct VisualColorParam + + Operation to apply when applying color to texture + Colors + + + + Represents alpha blending and bump infor for a visual parameter + such as sleive length + + + + + Create new alhpa information for a visual param + + Stregth of the alpha to apply + File containing the alpha channel + Skip blending if parameter value is 0 + Use miltiply insted of alpha blending + + + Stregth of the alpha to apply + + + File containing the alpha channel + + + Skip blending if parameter value is 0 + + + Use miltiply insted of alpha blending + + + + A single visual characteristic of an avatar mesh, such as eyebrow height + + + + + Set all the values through the constructor + + Index of this visual param + Internal name + + + + + Displayable label of this characteristic + Displayable label for the minimum value of this characteristic + Displayable label for the maximum value of this characteristic + Default value + Minimum value + Maximum value + Is this param used for creation of bump layer? + Array of param IDs that are drivers for this parameter + Alpha blending/bump info + Color information + + + Index of this visual param + + + Internal name + + + Group ID this parameter belongs to + + + Name of the wearable this parameter belongs to + + + Displayable label of this characteristic + + + Displayable label for the minimum value of this characteristic + + + Displayable label for the maximum value of this characteristic + + + Default value + + + Minimum value + + + Maximum value + + + Is this param used for creation of bump layer? + + + Alpha blending/bump info + + + Color information + + + Array of param IDs that are drivers for this parameter + + + + Holds the Params array of all the avatar appearance parameters + + + + + Base class for all Asset types + + + + + Construct a new Asset object + + + + + Construct a new Asset object + + A unique specific to this asset + A byte array containing the raw asset data + + + A byte array containing the raw asset data + + + True if the asset it only stored on the server temporarily + + + A unique ID + + + The assets unique ID + + + + The "type" of asset, Notecard, Animation, etc + + + + + Regenerates the AssetData byte array from the properties + of the derived class. + + + + + Decodes the AssetData, placing it in appropriate properties of the derived + class. + + True if the asset decoding succeeded, otherwise false + + + + Constants for the archiving module + + + + + The location of the archive control file + + + + + Path for the assets held in an archive + + + + + Path for the prims file + + + + + Path for terrains. Technically these may be assets, but I think it's quite nice to split them out. + + + + + Path for region settings. + + + + + The character the separates the uuid from extension information in an archived asset filename + + + + + Extensions used for asset types in the archive + + + + + Archives assets + + + + + Archive assets + + + + + Archive the assets given to this archiver to the given archive. + + + + + + + Write an assets metadata file to the given archive + + + + + + + Write asset data files to the given archive + + + + + + + Temporary code to do the bare minimum required to read a tar archive for our purposes + + + + + Generate a tar reader which reads from the given stream. + + + + + + + Binary reader for the underlying stream + + + + + Used to trim off null chars + + + + + Used to trim off space chars + + + + + Read the next entry in the tar file. + + + + + + the data for the entry. Returns null if there are no more entries + + + + Read the next 512 byte chunk of data as a tar header. + + A tar header struct. null if we have reached the end of the archive. + + + + Read data following a header + + + + + + + + + Convert octal bytes to a decimal representation + + + + + + + + + + + + + Temporary code to produce a tar archive in tar v7 format + + + + + Binary writer for the underlying stream + + + + + Write a directory entry to the tar archive. We can only handle one path level right now! + + + + + + + Write a file to the tar archive + + + + + + + + + Write a file to the tar archive + + + + + + + + + Finish writing the raw tar archive data to a stream. The stream will be closed on completion. + + + + + Write a particular entry + + + + + + + + + + + Represents an Animation + + + + Default Constructor + + + + Construct an Asset object of type Animation + + A unique specific to this asset + A byte array containing the raw asset data + + + Override the base classes AssetType + + + + Represents an that represents an avatars body ie: Hair, Etc. + + + + Initializes a new instance of an AssetBodyPart object + + + Initializes a new instance of an AssetBodyPart object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + Override the base classes AssetType + + + + Represents an that can be worn on an avatar + such as a Shirt, Pants, etc. + + + + Initializes a new instance of an AssetScriptBinary object + + + Initializes a new instance of an AssetScriptBinary object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + Override the base classes AssetType + + + + Type of gesture step + + + + + Base class for gesture steps + + + + + Retururns what kind of gesture step this is + + + + + Describes animation step of a gesture + + + + + If true, this step represents start of animation, otherwise animation stop + + + + + Animation asset + + + + Animation inventory name + + + + + Returns what kind of gesture step this is + + + + + Describes sound step of a gesture + + + + + Sound asset + + + + Sound inventory name + + + + + Returns what kind of gesture step this is + + + + + Describes sound step of a gesture + + + + + Text to output in chat + + + + + Returns what kind of gesture step this is + + + + + Describes sound step of a gesture + + + + + If true in this step we wait for all animations to finish + + + + + If true gesture player should wait for the specified amount of time + + + + + Time in seconds to wait if WaitForAnimation is false + + + + + Returns what kind of gesture step this is + + + + + Describes the final step of a gesture + + + + + Returns what kind of gesture step this is + + + + + Represents a sequence of animations, sounds, and chat actions + + + + + Constructs guesture asset + + + + + Constructs guesture asset + + A unique specific to this asset + A byte array containing the raw asset data + + + + Keyboard key that triggers the gestyre + + + + + Modifier to the trigger key + + + + + String that triggers playing of the gesture sequence + + + + + Text that replaces trigger in chat once gesture is triggered + + + + + Sequence of gesture steps + + + + + Returns asset type + + + + + Encodes gesture asset suitable for uplaod + + + + + Decodes gesture assset into play sequence + + true if the asset data was decoded successfully + + + + Represents a Landmark with RegionID and Position vector + + + + Construct an Asset of type Landmark + + + + Construct an Asset object of type Landmark + + A unique specific to this asset + A byte array containing the raw asset data + + + UUID of the Landmark target region + + + Local position of the target + + + Override the base classes AssetType + + + + Encode the raw contents of a string with the specific Landmark format + + + + + Decode the raw asset data, populating the RegionID and Position + + true if the AssetData was successfully decoded to a UUID and Vector + + + + Represents a string of characters encoded with specific formatting properties + + + + Construct an Asset of type Notecard + + + + Construct an Asset object of type Notecard + + A unique specific to this asset + A byte array containing the raw asset data + + + A text string containing main text of the notecard + + + List of s embedded on the notecard + + + Override the base classes AssetType + + + + Encode the raw contents of a string with the specific Linden Text properties + + + + + Decode the raw asset data including the Linden Text properties + + true if the AssetData was successfully decoded + + + + A linkset asset, containing a parent primitive and zero or more children + + + + Initializes a new instance of an AssetPrim object + + + + Initializes a new instance of an AssetPrim object + + A unique specific to this asset + A byte array containing the raw asset data + + + + Only used internally for XML serialization/deserialization + + + + Override the base classes AssetType + + + + + + + + + + + + + + The deserialized form of a single primitive in a linkset asset + + + + + Represents an AssetScriptBinary object containing the + LSO compiled bytecode of an LSL script + + + + Initializes a new instance of an AssetScriptBinary object + + + Initializes a new instance of an AssetScriptBinary object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + Override the base classes AssetType + + + + TODO: Encodes a scripts contents into a LSO Bytecode file + + + + + TODO: Decode LSO Bytecode into a string + + true + + + + Represents an LSL Text object containing a string of UTF encoded characters + + + + Initializes a new AssetScriptText object + + + + Initializes a new AssetScriptText object with parameters + + A unique specific to this asset + A byte array containing the raw asset data + + + A string of characters represting the script contents + + + Override the base classes AssetType + + + + Encode a string containing the scripts contents into byte encoded AssetData + + + + + Decode a byte array containing the scripts contents into a string + + true if decoding is successful + + + + Represents a Sound Asset + + + + Initializes a new instance of an AssetSound object + + + Initializes a new instance of an AssetSound object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + Override the base classes AssetType + + + + TODO: Encodes a sound file + + + + + TODO: Decode a sound file + + true + + + + Represents a texture + + + + Initializes a new instance of an AssetTexture object + + + + Initializes a new instance of an AssetTexture object + + A unique specific to this asset + A byte array containing the raw asset data + + + + Initializes a new instance of an AssetTexture object + + A object containing texture data + + + A object containing image data + + + + + + + + + + + Override the base classes AssetType + + + + Populates the byte array with a JPEG2000 + encoded image created from the data in + + + + Decodes the JPEG2000 data in AssetData to the + object + True if the decoding was successful, otherwise false + + + + Decodes the begin and end byte positions for each quality layer in + the image + + + + + + + Represents a Wearable Asset, Clothing, Hair, Skin, Etc + + + + Initializes a new instance of an AssetWearable object + + + Initializes a new instance of an AssetWearable object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + A string containing the name of the asset + + + A string containing a short description of the asset + + + The Assets WearableType + + + The For-Sale status of the object + + + An Integer representing the purchase price of the asset + + + The of the assets creator + + + The of the assets current owner + + + The of the assets prior owner + + + The of the Group this asset is set to + + + True if the asset is owned by a + + + The Permissions mask of the asset + + + A Dictionary containing Key/Value pairs of the objects parameters + + + A Dictionary containing Key/Value pairs where the Key is the textures Index and the Value is the Textures + + + + Decode an assets byte encoded data to a string + + true if the asset data was decoded successfully + + + + Encode the assets string represantion into a format consumable by the asset server + + + + = + + + Number of times we've received an unknown CAPS exception in series. + + + For exponential backoff on error. @@ -24164,6 +21886,12 @@ in to a single texture, for avatar appearances + + + Default constructor + + Bake type + Final baked texture @@ -24179,11 +21907,23 @@ Bake type - - - Default constructor - - Bake type + + Final baked texture + + + Component layers + + + Width of the final baked image and scratchpad + + + Height of the final baked image and scratchpad + + + Bake type + + + Is this one of the 3 skin bakes @@ -24208,819 +21948,3847 @@ - Fills a baked layer as a solid *appearing* color. The colors are - subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from - compressing it too far since it seems to cause upload failures if + Fills a baked layer as a solid *appearing* color. The colors are + subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from + compressing it too far since it seems to cause upload failures if the image is a pure solid color Color of the base of this layer - Fills a baked layer as a solid *appearing* color. The colors are - subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from - compressing it too far since it seems to cause upload failures if + Fills a baked layer as a solid *appearing* color. The colors are + subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from + compressing it too far since it seems to cause upload failures if the image is a pure solid color Red value Green value Blue value - - Final baked texture - - - Component layers - - - Width of the final baked image and scratchpad - - - Height of the final baked image and scratchpad - - - Bake type - - - Is this one of the 3 skin bakes - - + - Represents a string of characters encoded with specific formatting properties + Create a new blank image + + width + height + channel flags + + + + + + + + + + Image width - - A text string containing main text of the notecard - - - List of s embedded on the notecard - - - Construct an Asset of type Notecard - - + - Construct an Asset object of type Notecard - - A unique specific to this asset - A byte array containing the raw asset data - - - - Encode the raw contents of a string with the specific Linden Text properties + Image height - + - Decode the raw asset data including the Linden Text properties - - true if the AssetData was successfully decoded - - - Override the base classes AssetType - - - - Add a custom decoder callback - - The key of the field to decode - The custom decode handler - - - - Remove a custom decoder callback - - The key of the field to decode - The custom decode handler - - - - Creates a formatted string containing the values of a Packet - - The Packet - A formatted string of values of the nested items in the Packet object - - - - Decode an IMessage object into a beautifully formatted string - - The IMessage object - Recursion level (used for indenting) - A formatted string containing the names and values of the source object - - - - A custom decoder callback - - The key of the object - the data to decode - A string represending the fieldData - - - - Registers, unregisters, and fires events generated by incoming packets + Image channel flags - - Reference to the GridClient object + + + Red channel data + - + + + Green channel data + + + + + Blue channel data + + + + + Alpha channel data + + + + + Bump channel data + + + + + Convert the channels in the image. Channels are created or destroyed as required. + + new channel flags + + + + Resize or stretch the image using nearest neighbor (ugly) resampling + + new width + new height + + + + Create a byte array containing 32-bit RGBA data with a bottom-left + origin, suitable for feeding directly into OpenGL + + A byte array containing raw texture data + + + + A Wrapper around openjpeg to encode and decode images to and from byte arrays + + + + + Defines the beginning and ending file positions of a layer in an + LRCP-progression JPEG2000 file + + + + + This structure is used to marshal both encoded and decoded images. + MUST MATCH THE STRUCT IN dotnet.h! + + + + + Information about a single packet in a JPEG2000 stream + + + + Packet start position + + + Packet header end position + + + Packet end position + + + TGA Header size + + + OpenJPEG is not threadsafe, so this object is used to lock + during calls into unmanaged code + + + + Encode a object into a byte array + + The object to encode + true to enable lossless conversion, only useful for small images ie: sculptmaps + A byte array containing the encoded Image object + + + + Encode a object into a byte array + + The object to encode + a byte array of the encoded image + + + + Decode JPEG2000 data to an and + + JPEG2000 encoded data + ManagedImage object to decode to + Image object to decode to + True if the decode succeeds, otherwise false + + + + + + + + + + + + + + + + + + + + + + + + + + Encode a object into a byte array + + The source object to encode + true to enable lossless decoding + A byte array containing the source Bitmap object + + + + Capability to load TGAs to Bitmap + + + + + Interface requirements for Messaging system + + + + + Abstract base for rendering plugins + + + + + Generates a basic mesh structure from a primitive + + Primitive to generate the mesh from + Level of detail to generate the mesh at + The generated mesh + + + + Generates a basic mesh structure from a sculpted primitive and + texture + + Sculpted primitive to generate the mesh from + Sculpt texture + Level of detail to generate the mesh at + The generated mesh + + + + Generates a series of faces, each face containing a mesh and + metadata + + Primitive to generate the mesh from + Level of detail to generate the mesh at + The generated mesh + + + + Generates a series of faces for a sculpted prim, each face + containing a mesh and metadata + + Sculpted primitive to generate the mesh from + Sculpt texture + Level of detail to generate the mesh at + The generated mesh + + + + Apply texture coordinate modifications from a + to a list of vertices + + Vertex list to modify texture coordinates for + Center-point of the face + Face texture parameters + + + + Sent to the client to indicate a teleport request has completed + + + + The of the agent + + + + + + + The simulators handle the agent teleported to + + + A Uri which contains a list of Capabilities the simulator supports + + + Indicates the level of access required + to access the simulator, or the content rating, or the simulators + map status + + + The IP Address of the simulator + + + The UDP Port the simulator will listen for UDP traffic on + + + Status flags indicating the state of the Agent upon arrival, Flying, etc. + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Sent to the viewer when a neighboring simulator is requesting the agent make a connection to it. + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent to the client which indicates a teleport request has failed + and contains some information on why it failed + + + + + + + + A string key of the reason the teleport failed e.g. CouldntTPCloser + Which could be used to look up a value in a dictionary or enum + + + The of the Agent + + + A string human readable message containing the reason + An example: Could not teleport closer to destination + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Contains a list of prim owner information for a specific parcel in a simulator + + + A Simulator will always return at least 1 entry + If agent does not have proper permission the OwnerID will be UUID.Zero + If agent does not have proper permission OR there are no primitives on parcel + the DataBlocksExtended map will not be sent from the simulator + + + + + Prim ownership information for a specified owner on a single parcel + + + + The of the prim owner, + UUID.Zero if agent has no permission to view prim owner information + + + The total number of prims + + + True if the OwnerID is a + + + True if the owner is online + This is no longer used by the LL Simulators + + + The date the most recent prim was rezzed + + + An Array of objects + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + The details of a single parcel in a region, also contains some regionwide globals + + + + Simulator-local ID of this parcel + + + Maximum corner of the axis-aligned bounding box for this + parcel + + + Minimum corner of the axis-aligned bounding box for this + parcel + + + Total parcel land area + + + + + + + Key of authorized buyer + + + Bitmap describing land layout in 4x4m squares across the + entire region + + + + + + + Date land was claimed + + + Appears to always be zero + + + Parcel Description + + + + + + + + + + + Total number of primitives owned by the parcel group on + this parcel + + + Whether the land is deeded to a group or not + + + + + + + Maximum number of primitives this parcel supports + + + The Asset UUID of the Texture which when applied to a + primitive will display the media + + + A URL which points to any Quicktime supported media type + + + A byte, if 0x1 viewer should auto scale media to fit object + + + URL For Music Stream + + + Parcel Name + + + Autoreturn value in minutes for others' objects + + + + + + + Total number of other primitives on this parcel + + + UUID of the owner of this parcel + + + Total number of primitives owned by the parcel owner on + this parcel + + + + + + + How long is pass valid for + + + Price for a temporary pass + + + + + + + + + + + + + + + + + + + True if the region denies access to age unverified users + + + + + + + This field is no longer used + + + The result of a request for parcel properties + + Sale price of the parcel, only useful if ForSale is set + The SalePrice will remain the same after an ownership + transfer (sale), so it can be used to see the purchase price after + a sale if the new owner has not changed it + + + + Number of primitives your avatar is currently + selecting and sitting on in this parcel + + + + + + + + + A number which increments by 1, starting at 0 for each ParcelProperties request. + Can be overriden by specifying the sequenceID with the ParcelPropertiesRequest being sent. + a Negative number indicates the action in has occurred. + + + + Maximum primitives across the entire simulator + + + Total primitives across the entire simulator + + + + + + + Key of parcel snapshot + + + Parcel ownership status + + + Total number of primitives on this parcel + + + + + + + + + + + A description of the media + + + An Integer which represents the height of the media + + + An integer which represents the width of the media + + + A boolean, if true the viewer should loop the media + + + A string which contains the mime type of the media + + + true to obscure (hide) media url + + + true to obscure (hide) music url + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + A message sent from the viewer to the simulator to updated a specific parcels settings + + + The of the agent authorized to purchase this + parcel of land or a NULL if the sale is authorized to anyone + + + true to enable auto scaling of the parcel media + + + The category of this parcel used when search is enabled to restrict + search results + + + A string containing the description to set + + + The of the which allows for additional + powers and restrictions. + + + The which specifies how avatars which teleport + to this parcel are handled + + + The LocalID of the parcel to update settings on + + + A string containing the description of the media which can be played + to visitors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + Base class used for the RemoteParcelRequest message + + + + A message sent from the viewer to the simulator to request information + on a remote parcel + + + + Local sim position of the parcel we are looking up + + + Region handle of the parcel we are looking up + + + Region of the parcel we are looking up + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to the viewer in response to a + which will contain parcel information + + + + The grid-wide unique parcel ID + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing a request for a remote parcel from a viewer, or a response + from the simulator to that request + + + + The request or response details block + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to an agent which contains + the groups the agent is in + + + + Group Details specific to the agent + + + true of the agent accepts group notices + + + The agents tier contribution to the group + + + The Groups + + + The of the groups insignia + + + The name of the group + + + The aggregate permissions the agent has in the group for all roles the agent + is assigned + + + An optional block containing additional agent specific information + + + true of the agent allows this group to be + listed in their profile + + + The Agent receiving the message + + + An array containing information + for each the agent is a member of + + + An array containing information + for each the agent is a member of + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the viewer to the simulator which + specifies the language and permissions for others to detect + the language specified + + + + A string containng the default language + to use for the agent + + + true of others are allowed to + know the language setting + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + An EventQueue message sent from the simulator to an agent when the agent + leaves a group + + + + An object containing the Agents UUID, and the Groups UUID + + + The ID of the Agent leaving the group + + + The GroupID the Agent is leaving + + + + An Array containing the AgentID and GroupID + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Base class for Asset uploads/results via Capabilities + + + + The request state + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the viewer to the simulator to request a temporary upload capability + which allows an asset to be uploaded + + + + The Capability URL sent by the simulator to upload the baked texture to + + + + A message sent from the simulator that will inform the agent the upload is complete, + and the UUID of the uploaded asset + + + + The uploaded texture asset ID + + + + A message sent from the viewer to the simulator to request a temporary + capability URI which is used to upload an agents baked appearance textures + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator which indicates the minimum version required for + using voice chat + + + + Major Version Required + + + Minor version required + + + The name of the region sending the version requrements + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to the viewer containing the + voice server URI + + + + The Parcel ID which the voice server URI applies + + + The name of the region + + + A uri containing the server/channel information + which the viewer can utilize to participate in voice conversations + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + + + + + + + + + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent by the viewer to the simulator to request a temporary + capability for a script contained with in a Tasks inventory to be updated + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to the viewer to indicate + a Tasks scripts status. + + + + The Asset ID of the script + + + True of the script is compiled/ran using the mono interpreter, false indicates it + uses the older less efficient lsl2 interprter + + + The Task containing the scripts + + + true of the script is in a running state + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing the request/response used for updating a gesture + contained with an agents inventory + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message request/response which is used to update a notecard contained within + a tasks inventory + + + + The of the Task containing the notecard asset to update + + + The notecard assets contained in the tasks inventory + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A reusable class containing a message sent from the viewer to the simulator to request a temporary uploader capability + which is used to update an asset in an agents inventory + + + + + The Notecard AssetID to replace + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing the request/response used for updating a notecard + contained with an agents inventory + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to the viewer which indicates + an error occurred while attempting to update a script in an agents or tasks + inventory + + + + true of the script was successfully compiled by the simulator + + + A string containing the error which occured while trying + to update the script + + + A new AssetID assigned to the script + + + + A message sent from the viewer to the simulator + requesting the update of an existing script contained + within a tasks inventory + + + + if true, set the script mode to running + + + The scripts InventoryItem ItemID to update + + + A lowercase string containing either "mono" or "lsl2" which + specifies the script is compiled and ran on the mono runtime, or the older + lsl runtime + + + The tasks which contains the script to update + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing either the request or response used in updating a script inside + a tasks inventory + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Response from the simulator to notify the viewer the upload is completed, and + the UUID of the script asset and its compiled status + + + + The uploaded texture asset ID + + + true of the script was compiled successfully + + + + A message sent from a viewer to the simulator requesting a temporary uploader capability + used to update a script contained in an agents inventory + + + + The existing asset if of the script in the agents inventory to replace + + + The language of the script + Defaults to lsl version 2, "mono" might be another possible option + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing either the request or response used in updating a script inside + an agents inventory + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Base class for Map Layers via Capabilities + + + + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Sent by an agent to the capabilities server to request map layers + + + + + A message sent from the simulator to the viewer which contains an array of map images and their grid coordinates + + + + + An object containing map location details + + + + The Asset ID of the regions tile overlay + + + The grid location of the southern border of the map tile + + + The grid location of the western border of the map tile + + + The grid location of the eastern border of the map tile + + + The grid location of the northern border of the map tile + + + An array containing LayerData items + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + New as of 1.23 RC1, no details yet. + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + A string containing the method used + + + + A request sent from an agent to the Simulator to begin a new conference. + Contains a list of Agents which will be included in the conference + + + + An array containing the of the agents invited to this conference + + + The conferences Session ID + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A moderation request sent from a conference moderator + Contains an agent and an optional action to take + + + + The Session ID + + + + + + + A list containing Key/Value pairs, known valid values: + key: text value: true/false - allow/disallow specified agents ability to use text in session + key: voice value: true/false - allow/disallow specified agents ability to use voice in session + + "text" or "voice" + + + + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the agent to the simulator which tells the + simulator we've accepted a conference invitation + + + + The conference SessionID + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Key of sender + + + Name of sender + + + Key of destination avatar + + + ID of originating estate + + + Key of originating region + + + Coordinates in originating region + + + Instant message type + + + Group IM session toggle + + + Key of IM session, for Group Messages, the groups UUID + + + Timestamp of the instant message + + + Instant message text + + + Whether this message is held for offline avatars + + + Context specific packed data + + + Is this invitation for voice group/conference chat + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Sent from the simulator to the viewer. + When an agent initially joins a session the AgentUpdatesBlock object will contain a list of session members including + a boolean indicating they can use voice chat in this session, a boolean indicating they are allowed to moderate + this session, and lastly a string which indicates another agent is entering the session with the Transition set to "ENTER" + During the session lifetime updates on individuals are sent. During the update the booleans sent during the initial join are + excluded with the exception of the Transition field. This indicates a new user entering or exiting the session with + the string "ENTER" or "LEAVE" respectively. + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + An EventQueue message sent when the agent is forcibly removed from a chatterbox session + + + + + A string containing the reason the agent was removed + + + + + The ChatterBoxSession's SessionID + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the viewer to the simulator which + specifies that the user has changed current URL + of the specific media on a prim face + + + + + New URL + + + + + Prim UUID where navigation occured + + + + + Face index + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Base class used for the ObjectMedia message + + + + Message used to retrive prim media data + + + + + Prim UUID + + + + + Requested operation, either GET or UPDATE + + + + + Serialize object + + Serialized object as OSDMap + + + + Deserialize the message + + An containing the data + + + + Message used to update prim media data + + + + + Prim UUID + + + + + Array of media entries indexed by face number + + + + + Media version string + + + + + Serialize object + + Serialized object as OSDMap + + + + Deserialize the message + + An containing the data + + + + Message used to update prim media data + + + + + Prim UUID + + + + + Array of media entries indexed by face number + + + + + Requested operation, either GET or UPDATE + + + + + Serialize object + + Serialized object as OSDMap + + + + Deserialize the message + + An containing the data + + + + Message for setting or getting per face MediaEntry + + + + The request or response details block + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Details about object resource usage + + + Object UUID + + + Object name + + + Indicates if object is group owned + + + Locatio of the object + + + Object owner + + + Resource usage, keys are resource names, values are resource usage for that specific resource + + + + Deserializes object from OSD + + An containing the data + + + + Makes an instance based on deserialized data + + + serialized data + Instance containg deserialized data + + + Details about parcel resource usage + + + Parcel UUID + + + Parcel local ID + + + Parcel name + + + Indicates if parcel is group owned + + + Parcel owner + + + Array of containing per object resource usage + + + + Deserializes object from OSD + + An containing the data + + + + Makes an instance based on deserialized data + + + serialized data + Instance containg deserialized data + + + Resource usage base class, both agent and parcel resource + usage contains summary information + + + Summary of available resources, keys are resource names, + values are resource usage for that specific resource + + + Summary resource usage, keys are resource names, + values are resource usage for that specific resource + + + + Serializes object + + + serialized data + + + + Deserializes object from OSD + + An containing the data + + + Agent resource usage + + + Per attachment point object resource usage + + + + Deserializes object from OSD + + An containing the data + + + + Makes an instance based on deserialized data + + + serialized data + Instance containg deserialized data + + + + Detects which class handles deserialization of this message + + An containing the data + Object capable of decoding this message + + + Request message for parcel resource usage + + + UUID of the parel to request resource usage info + + + + Serializes object + + + serialized data + + + + Deserializes object from OSD + + An containing the data + + + Response message for parcel resource usage + + + URL where parcel resource usage details can be retrieved + + + URL where parcel resource usage summary can be retrieved + + + + Serializes object + + + serialized data + + + + Deserializes object from OSD + + An containing the data + + + + Detects which class handles deserialization of this message + + An containing the data + Object capable of decoding this message + + + Parcel resource usage + + + Array of containing per percal resource usage + + + + Deserializes object from OSD + + An containing the data + + + + Return a decoded capabilities message as a strongly typed object + + A string containing the name of the capabilities message key + An to decode + A strongly typed object containing the decoded information from the capabilities message, or null + if no existing Message object exists for the specified event + + + + Permissions for control of object media + + + + + Style of cotrols that shold be displayed to the user + + + + + Class representing media data for a single face + + + + Is display of the alternative image enabled + + + Should media auto loop + + + Shoule media be auto played + + + Auto scale media to prim face + + + Should viewer automatically zoom in on the face when clicked + + + Should viewer interpret first click as interaction with the media + or when false should the first click be treated as zoom in commadn + + + Style of controls viewer should display when + viewer media on this face + + + Starting URL for the media + + + Currently navigated URL + + + Media height in pixes + + + Media width in pixels + + + Who can controls the media + + + Who can interact with the media + + + Is URL whitelist enabled + + + Array of URLs that are whitelisted + + + + Serialize to OSD + + OSDMap with the serialized data + + + + Deserialize from OSD data + + Serialized OSD data + Deserialized object + + + + Particle system specific enumerators, flags and methods. + + + Default constructor - - + - Register an event handler - - Use PacketType.Default to fire this event on every - incoming packet - Packet type to register the handler for - Callback to be fired - True if this callback should be ran - asynchronously, false to run it synchronous - - - - Unregister an event handler - - Packet type to unregister the handler for - Callback to be unregistered - - - - Fire the events registered for this packet type - - Incoming packet type - Incoming packet - Simulator this packet was received from - - - - Object that is passed to worker threads in the ThreadPool for - firing packet callbacks + Complete structure for the particle system - - Callback to fire for this packet - - - Reference to the simulator that this packet came from - - - The packet that needs to be processed - - + - Registers, unregisters, and fires events generated by the Capabilities - event queue + Decodes a byte[] array into a ParticleSystem Object + + ParticleSystem object + Start position for BitPacker + + + + Particle source pattern - - Reference to the GridClient object + + None - + + Drop particles from source position with no force + + + "Explode" particles in all directions + + + Particles shoot across a 2D area + + + Particles shoot across a 3D Cone + + + Inverse of AngleCone (shoot particles everywhere except the 3D cone defined + + + + Particle Data Flags + + + + None + + + Interpolate color and alpha from start to end + + + Interpolate scale from start to end + + + Bounce particles off particle sources Z height + + + velocity of particles is dampened toward the simulators wind + + + Particles follow the source + + + Particles point towards the direction of source's velocity + + + Target of the particles + + + Particles are sent in a straight line + + + Particles emit a glow + + + used for point/grab/touch + + + + Particle Flags Enum + + + + None + + + Acceleration and velocity for particles are + relative to the object rotation + + + Particles use new 'correct' angle parameters + + + Particle Flags + There appears to be more data packed in to this area + for many particle systems. It doesn't appear to be flag values + and serialization breaks unless there is a flag for every + possible bit so it is left as an unsigned integer + + + + pattern of particles + + + A representing the maximimum age (in seconds) particle will be displayed + Maximum value is 30 seconds + + + A representing the number of seconds, + from when the particle source comes into view, + or the particle system's creation, that the object will emits particles; + after this time period no more particles are emitted + + + A in radians that specifies where particles will not be created + + + A in radians that specifies where particles will be created + + + A representing the number of seconds between burts. + + + A representing the number of meters + around the center of the source where particles will be created. + + + A representing in seconds, the minimum speed between bursts of new particles + being emitted + + + A representing in seconds the maximum speed of new particles being emitted. + + + A representing the maximum number of particles emitted per burst + + + A which represents the velocity (speed) from the source which particles are emitted + + + A which represents the Acceleration from the source which particles are emitted + + + The Key of the texture displayed on the particle + + + The Key of the specified target object or avatar particles will follow + + + Flags of particle from + + + Max Age particle system will emit particles for + + + The the particle has at the beginning of its lifecycle + + + The the particle has at the ending of its lifecycle + + + A that represents the starting X size of the particle + Minimum value is 0, maximum value is 4 + + + A that represents the starting Y size of the particle + Minimum value is 0, maximum value is 4 + + + A that represents the ending X size of the particle + Minimum value is 0, maximum value is 4 + + + A that represents the ending Y size of the particle + Minimum value is 0, maximum value is 4 + + + + Generate byte[] array from particle data + + Byte array + + + + Parameters used to construct a visual representation of a primitive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Attachment point to an avatar + + + + + + + + + + + + + + + + + + + + Information on the flexible properties of a primitive + + + Default constructor - Reference to the GridClient object - + - Register an new event handler for a capabilities event sent via the EventQueue - Use String.Empty to fire this event on every CAPS event - Capability event name to register the - handler for - Callback to fire + + + + - + - Unregister a previously registered capabilities handler - - Capability event name unregister the - handler for - Callback to unregister - - - - Fire the events registered for this event type synchronously - - Capability name - Decoded event body - Reference to the simulator that - generated this event - - - - Fire the events registered for this event type asynchronously - - Capability name - Decoded event body - Reference to the simulator that - generated this event - - - - Object that is passed to worker threads in the ThreadPool for - firing CAPS callbacks - - Callback to fire for this packet - - - Name of the CAPS event - - - Strongly typed decoded data - - - Reference to the simulator that generated this event - - + - Represends individual HTTP Download request - - URI of the item to fetch - - - Timout specified in milliseconds - - - Download progress callback - - - Download completed callback - - - Accept the following content type - - - Default constructor - - - Constructor - - + - Manages async HTTP downloads with a limit on maximum - concurrent downloads - - Default constructor - - - Cleanup method - - - Setup http download request - - - Check the queue for pending work - - - Enqueue a new HTPP download - - - Maximum number of parallel downloads from a single endpoint - - - Client certificate - - + - Index of TextureEntry slots for avatar appearances - + - Bake layers for avatar appearance - - Maximum number of concurrent downloads for wearable assets and textures - - - Maximum number of concurrent uploads for baked textures - - - Timeout for fetching inventory listings - - - Timeout for fetching a single wearable, or receiving a single packet response - - - Timeout for fetching a single texture - - - Timeout for uploading a single baked texture - - - Number of times to retry bake upload - - - When changing outfit, kick off rebake after - 20 seconds has passed since the last change - - - Total number of wearables for each avatar - - - Total number of baked textures on each avatar - - - Total number of wearables per bake layer - - - Total number of textures on an avatar, baked or not - - - Mapping between BakeType and AvatarTextureIndex - - - Map of what wearables are included in each bake - - - Magic values to finalize the cache check hashes for each - bake - - - Default avatar texture, used to detect when a custom - texture is not set for a face - - - The event subscribers. null if no subcribers - - - Raises the AgentWearablesReply event - An AgentWearablesReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the CachedBakesReply event - An AgentCachedBakesReplyEventArgs object containing the - data returned from the data server AgentCachedTextureResponse - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the AppearanceSet event - An AppearanceSetEventArgs object indicating if the operatin was successfull - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the RebakeAvatarRequested event - An RebakeAvatarTexturesEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - A cache of wearables currently being worn - - - A cache of textures currently being worn - - - Incrementing serial number for AgentCachedTexture packets - - - Incrementing serial number for AgentSetAppearance packets - - - Indicates whether or not the appearance thread is currently - running, to prevent multiple appearance threads from running - simultaneously - - - Reference to our agent - - + - Timer used for delaying rebake on changing outfit - + - Main appearance thread + + + + + + + + + + + + + Information on the light properties of a primitive - + Default constructor - A reference to our agent - + + + + + + + + + - Obsolete method for setting appearance. This function no longer does anything. - Use RequestSetAppearance() to manually start the appearance thread - + - Obsolete method for setting appearance. This function no longer does anything. - Use RequestSetAppearance() to manually start the appearance thread - - Unused parameter - - - - Starts the appearance setting thread - + - Starts the appearance setting thread - - True to force rebaking, otherwise false - - - - Ask the server what textures our agent is currently wearing - + - Build hashes out of the texture assetIDs for each baking layer to - ask the simulator whether it has cached copies of each baked texture - + - Returns the AssetID of the asset that is currently being worn in a - given WearableType slot - - WearableType slot to get the AssetID for - The UUID of the asset being worn in the given slot, or - UUID.Zero if no wearable is attached to the given slot or wearables - have not been downloaded yet - - - - Add a wearable to the current outfit and set appearance - - Wearable to be added to the outfit - - - - Add a list of wearables to the current outfit and set appearance - - List of wearable inventory items to - be added to the outfit - - - - Remove a wearable from the current outfit and set appearance - - Wearable to be removed from the outfit - - - - Removes a list of wearables from the current outfit and set appearance - - List of wearable inventory items to - be removed from the outfit - - - - Replace the current outfit with a list of wearables and set appearance - - List of wearable inventory items that - define a new outfit - - - - Checks if an inventory item is currently being worn - - The inventory item to check against the agent - wearables - The WearableType slot that the item is being worn in, - or WearbleType.Invalid if it is not currently being worn - - - - Returns a copy of the agents currently worn wearables - - A copy of the agents currently worn wearables - Avoid calling this function multiple times as it will make - a copy of all of the wearable data each time - - - - Calls either or - depending on the value of - replaceItems - - List of wearable inventory items to add - to the outfit or become a new outfit - True to replace existing items with the - new list of items, false to add these items to the existing outfit - - - - Adds a list of attachments to our agent - - A List containing the attachments to add - If true, tells simulator to remove existing attachment - first - - - - Attach an item to our agent at a specific attach point - - A to attach - the on the avatar - to attach the item to - - - - Attach an item to our agent specifying attachment details - - The of the item to attach - The attachments owner - The name of the attachment - The description of the attahment - The to apply when attached - The of the attachment - The on the agent - to attach the item to - - - - Detach an item from our agent using an object - - An object - - - - Detach an item from our agent - - The inventory itemID of the item to detach - - - - Inform the sim which wearables are part of our current outfit - + - Replaces the Wearables collection with a list of new wearable items - Wearable items to replace the Wearables collection with + + - + - Calculates base color/tint for a specific wearable - based on its params - All the color info gathered from wearable's VisualParams - passed as list of ColorParamInfo tuples - Base color/tint for the wearable + + - + - Blocking method to populate the Wearables dictionary - - True on success, otherwise false - - - - Blocking method to populate the Textures array with cached bakes - - True on success, otherwise false - - - - Populates textures and visual params from a decoded asset - - Wearable to decode - - - - Blocking method to download and parse currently worn wearable assets - - True on success, otherwise false - - - - Get a list of all of the textures that need to be downloaded for a - single bake layer - - Bake layer to get texture AssetIDs for - A list of texture AssetIDs to download - - - - Helper method to lookup the TextureID for a single layer and add it - to a list if it is not already present - - - - - - - Blocking method to download all of the textures needed for baking - the given bake layers - - A list of layers that need baking - No return value is given because the baking will happen - whether or not all textures are successfully downloaded - - - - Blocking method to create and upload baked textures for all of the - missing bakes - - True on success, otherwise false - - - - Blocking method to create and upload a baked texture for a single - bake layer - - Layer to bake - True on success, otherwise false - - - - Blocking method to upload a baked texture - - Five channel JPEG2000 texture data to upload - UUID of the newly created asset on success, otherwise UUID.Zero - - - - Creates a dictionary of visual param values from the downloaded wearables - - A dictionary of visual param indices mapping to visual param - values for our agent that can be fed to the Baker class - - - - Create an AgentSetAppearance packet from Wearables data and the - Textures array and send it + Information on the sculpt properties of a sculpted primitive - + - Converts a WearableType to a bodypart or clothing WearableType - - A WearableType - AssetType.Bodypart or AssetType.Clothing or AssetType.Unknown - - - - Converts a BakeType to the corresponding baked texture slot in AvatarTextureIndex - - A BakeType - The AvatarTextureIndex slot that holds the given BakeType - - - - Gives the layer number that is used for morph mask - - >A BakeType - Which layer number as defined in BakeTypeToTextures is used for morph mask - - - - Converts a BakeType to a list of the texture slots that make up that bake - - A BakeType - A list of texture slots that are inputs for the given bake - - - Triggered when an AgentWearablesUpdate packet is received, - telling us what our avatar is currently wearing - request. - - - Raised when an AgentCachedTextureResponse packet is - received, giving a list of cached bakes that were found on the - simulator - request. - - - - Raised when appearance data is sent to the simulator, also indicates - the main appearance thread is finished. - - request. - - - - Triggered when the simulator requests the agent rebake its appearance. - - - - - - Returns true if AppearanceManager is busy and trying to set or change appearance will fail + Default constructor - + - Contains information about a wearable inventory item + + + + + + + + + Render inside out (inverts the normals). - - Inventory ItemID of the wearable - - - AssetID of the wearable asset - - - WearableType of the wearable - - - AssetType of the wearable - - - Asset data for the wearable - - + - Data collected from visual params for each wearable - needed for the calculation of the color + Render an X axis mirror of the sculpty. - + - Holds a texture assetID and the data needed to bake this layer into - an outfit texture. Used to keep track of currently worn textures - and baking data + Extended properties to describe an object - - A texture AssetID - - - Asset data for the texture - - - Collection of alpha masks that needs applying - - - Tint that should be applied to the texture - - - Contains the Event data returned from the data server from an AgentWearablesRequest - - - Construct a new instance of the AgentWearablesReplyEventArgs class - - - Contains the Event data returned from the data server from an AgentCachedTextureResponse - - - Construct a new instance of the AgentCachedBakesReplyEventArgs class - - - Contains the Event data returned from an AppearanceSetRequest - - + - Triggered when appearance data is sent to the sim and - the main appearance thread is done. - Indicates whether appearance setting was successful - - - Indicates whether appearance setting was successful - - - Contains the Event data returned from the data server from an RebakeAvatarTextures - - - - Triggered when the simulator sends a request for this agent to rebake - its appearance + Default constructor - The ID of the Texture Layer to bake - - The ID of the Texture Layer to bake + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set the properties that are set in an ObjectPropertiesFamily packet + + + that has + been partially filled by an ObjectPropertiesFamily packet + + + + Texture animation mode + + + + Disable texture animation + + + Enable texture animation + + + Loop when animating textures + + + Animate in reverse direction + + + Animate forward then reverse + + + Slide texture smoothly instead of frame-stepping + + + Rotate texture instead of using frames + + + Scale texture instead of using frames + + + + A single textured face. Don't instantiate this class yourself, use the + methods in TextureEntry + + + + + Contains the definition for individual faces + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + In the future this will specify whether a webpage is + attached to this face + + + + + + + + + + + + + + Represents all of the texturable faces for an object + + Grid objects have infinite faces, with each face + using the properties of the default face unless set otherwise. So if + you have a TextureEntry with a default texture uuid of X, and face 18 + has a texture UUID of Y, every face would be textured with X except for + face 18 that uses Y. In practice however, primitives utilize a maximum + of nine faces + + + + Constructor that takes a default texture UUID + + Texture UUID to use as the default texture + + + + Constructor that takes a TextureEntryFace for the + default face + + Face to use as the default face + + + + Constructor that creates the TextureEntry class from a byte array + + Byte array containing the TextureEntry field + Starting position of the TextureEntry field in + the byte array + Length of the TextureEntry field, in bytes + + + + + + + + + + + + This will either create a new face if a custom face for the given + index is not defined, or return the custom face for that index if + it already exists + + The index number of the face to create or + retrieve + A TextureEntryFace containing all the properties for that + face + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Controls the texture animation of a particular prim + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Current version of the media data for the prim + + + + + Array of media entries indexed by face number + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Foliage type for this primitive. Only applicable if this + primitive is foliage + + + Unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Identifies the owner if audio or a particle system is + active + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Uses basic heuristics to estimate the primitive shape + + + + Packs PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew + parameters in to signed eight bit values + + Floating point parameter to pack + Signed eight bit value containing the packed parameter + + + + Unpacks PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew + parameters from signed eight bit integers to floating point values + + Signed eight bit value to unpack + Unpacked floating point value + + + + The type of bump-mapping applied to a face + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The level of shininess applied to a face + + + + + + + + + + + + + + + + + + + + + The texture mapping style used for a face + + + + + + + + + + + + + + + + + + + + + Flags in the TextureEntry block that describe which properties are + set + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Level of Detail mesh + + + + + Constructor for default logging settings + + + + Enable logging + + + The folder where any logs will be created + + + This will be prepended to beginning of each log file + + + The suffix or extension to be appended to each log file + + + + 0: NONE - No logging + 1: ERROR - Log errors only + 2: WARNING - Log errors and warnings + 3: INFO - Log errors, warnings and info + 4: DEBUG - Log errors, warnings, info and debug + + + + Audio Properties Events are sent after audio capture is started. These events are used to display a microphone VU meter + + + Event for most mundane request reposnses. + + + + Response to Connector.Create request + + + Response to Aux.GetCaptureDevices request + + + Response to Aux.GetRenderDevices request + + + Audio Properties Events are sent after audio capture is started. + These events are used to display a microphone VU meter + + + Response to Account.Login request + + + This event message is sent whenever the login state of the + particular Account has transitioned from one value to another + + + + List of audio input devices + + + + + List of audio output devices + + + + + Set audio test mode + + + + + This is used to login a specific user account(s). It may only be called after + Connector initialization has completed successfully + + Handle returned from successful Connector �create� request + User's account name + User's account password + Values may be �AutoAnswer� or �VerifyAnswer� + "" + This is an integer that specifies how often + the daemon will send participant property events while in a channel. If this is not set + the default will be �on state change�, which means that the events will be sent when + the participant starts talking, stops talking, is muted, is unmuted. + The valid values are: + 0 � Never + 5 � 10 times per second + 10 � 5 times per second + 50 � 1 time per second + 100 � on participant state change (this is the default) + false + + + + + + This is used to logout a user session. It should only be called with a valid AccountHandle. + + Handle returned from successful Connector �login� request + + + + + + This is used to get a list of audio devices that can be used for capture (input) of voice. + + + + + + + This is used to get a list of audio devices that can be used for render (playback) of voice. + + + + + This command is used to select the render device. + + The name of the device as returned by the Aux.GetRenderDevices command. + + + + This command is used to select the capture device. + + The name of the device as returned by the Aux.GetCaptureDevices command. + + + + This command is used to start the audio capture process which will cause + AuxAudioProperty Events to be raised. These events can be used to display a + microphone VU meter for the currently selected capture device. This command + should not be issued if the user is on a call. + + (unused but required) + + + + + + This command is used to stop the audio capture process. + + + + + + + This command is used to set the mic volume while in the audio tuning process. + Once an acceptable mic level is attained, the application must issue a + connector set mic volume command to have that level be used while on voice + calls. + + the microphone volume (-100 to 100 inclusive) + + + + + + This command is used to set the speaker volume while in the audio tuning + process. Once an acceptable speaker level is attained, the application must + issue a connector set speaker volume command to have that level be used while + on voice calls. + + the speaker volume (-100 to 100 inclusive) + + + + + + This is used to initialize and stop the Connector as a whole. The Connector + Create call must be completed successfully before any other requests are made + (typically during application initialization). The shutdown should be called + when the application is shutting down to gracefully release resources + + A string value indicting the Application name + URL for the management server + LoggingSettings + + + + + + + + Shutdown Connector -- Should be called when the application is shutting down + to gracefully release resources + + Handle returned from successful Connector �create� request + + + + Mute or unmute the microphone + + Handle returned from successful Connector �create� request + true (mute) or false (unmute) + + + + Mute or unmute the speaker + + Handle returned from successful Connector �create� request + true (mute) or false (unmute) + + + + Set microphone volume + + Handle returned from successful Connector �create� request + The level of the audio, a number between -100 and 100 where + 0 represents �normal� speaking volume + + + + Set local speaker volume + + Handle returned from successful Connector �create� request + The level of the audio, a number between -100 and 100 where + 0 represents �normal� speaking volume + + + + Start up the Voice service. + + + + + Handle miscellaneous request status + + + + + + ///If something goes wrong, we log it. + + + Cleanup oject resources + + + + + Request voice cap when changing regions + + + + + Handle a change in session state + + + + + Close a voice session + + + + + + + Locate a Session context from its handle + + Creates the session context if it does not exist. + + + + Handle completion of main voice cap request. + + + + + + + + + + + Daemon has started so connect to it. + + + + + The daemon TCP connection is open. + + + + + Handle creation of the Connector. + + + + + Handle response to audio output device query + + + + + Handle response to audio input device query + + + + + Set voice channel for new parcel + + + + + Request info from a parcel capability Uri. + + + + + + + Receive parcel voice cap + + + + + + + + + + + Tell Vivox where we are standing + + This has to be called when we move or turn. + + + + Start and stop updating out position. + + + + + + + Starts a thread that keeps the daemon running + + + + + + + + + Stops the daemon and the thread keeping it running + + + + + + + + + + + + + + + Create a Session + Sessions typically represent a connection to a media session with one or more + participants. This is used to generate an �outbound� call to another user or + channel. The specifics depend on the media types involved. A session handle is + required to control the local user functions within the session (or remote + users if the current account has rights to do so). Currently creating a + session automatically connects to the audio media, there is no need to call + Session.Connect at this time, this is reserved for future use. + + Handle returned from successful Connector �create� request + This is the URI of the terminating point of the session (ie who/what is being called) + This is the display name of the entity being called (user or channel) + Only needs to be supplied when the target URI is password protected + This indicates the format of the password as passed in. This can either be + �ClearText� or �SHA1UserName�. If this element does not exist, it is assumed to be �ClearText�. If it is + �SHA1UserName�, the password as passed in is the SHA1 hash of the password and username concatenated together, + then base64 encoded, with the final �=� character stripped off. + + + + + + + + + + Used to accept a call + + SessionHandle such as received from SessionNewEvent + "default" + + + + + + This command is used to start the audio render process, which will then play + the passed in file through the selected audio render device. This command + should not be issued if the user is on a call. + + The fully qualified path to the sound file. + True if the file is to be played continuously and false if it is should be played once. + + + + + + This command is used to stop the audio render process. + + The fully qualified path to the sound file issued in the start render command. + + + + + + This is used to �end� an established session (i.e. hang-up or disconnect). + + Handle returned from successful Session �create� request or a SessionNewEvent + + + + + + Set the combined speaking and listening position in 3D space. + + Handle returned from successful Session �create� request or a SessionNewEvent + Speaking position + Listening position + + + + + + Set User Volume for a particular user. Does not affect how other users hear that user. + + Handle returned from successful Session �create� request or a SessionNewEvent + + + The level of the audio, a number between -100 and 100 where 0 represents �normal� speaking volume + + + + + Positional vector of the users position + + + Velocity vector of the position + + + At Orientation (X axis) of the position + + + Up Orientation (Y axis) of the position + + + Left Orientation (Z axis) of the position + + + + Extract the avatar UUID encoded in a SIP URI + + + + + + + + + Represents a single Voice Session to the Vivox service. + + + + + Close this session. + + + + + Look up an existing Participants in this session + + + + + + + + + + + + + + + + + A callback fired to indicate the status or final state of the requested texture. For progressive + downloads this will fire each time new asset data is returned from the simulator. + + The indicating either Progress for textures not fully downloaded, + or the final result of the request after it has been processed through the TexturePipeline + The object containing the Assets ID, raw data + and other information. For progressive rendering the will contain + the data from the beginning of the file. For failed, aborted and timed out requests it will contain + an empty byte array. diff --git a/bin/OpenMetaverse.dll b/bin/OpenMetaverse.dll index 8f021865e2f9c3b935a3ceb2771d48289ae6a3a1..b9c73b754b3c9ed6e07fcf03d8b68d33ecab5b6b 100644 GIT binary patch literal 1768960 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

s?VSFG1fo*X7k>Si>#G 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

8fSSf<}OJkCmx9duU1) z&o2OXe)yd3gsUDHKPyNj!ZKF}NI(!j$P{4RbW5gEH_Ypdoj))2P6p&JJ2W=<1xFk5 zMfnTI|0hkT-QNRgH2y_JYp4IOUn0>45hU(kydhW7$jYi>f$m|m3YWkG-HhRBN#tX4 zz-^8g^r)%@u${+&86)P~r9yvhk@Z*$5uT1Wc5}#B2QDF@Y1F-Bzw>56cQcEKGH<0R zYYp=r`1pwM$gYNz5XVd;#!@3f%7|HmR6SIek1i<2cT3Jx#I~MLll}U33(xpAlt_?UYPkH6jZ)Pwsco(Z7J(Z` z#D!^*kEu)6T3ErdrJPRXS-RM1adSaFe`6_}XSUk`3) zed)D*B-zxh^uVN>Ob3XL_{#hEDjSU1)qtXrG@V`!!BIVRpEsbv?d=dTl6t8^oL=6I zr_-x|X&5IR4V;c{8G70}=>}IH2cIUhv*GFZY&Z)cR)VH>CvZ#-bw`>gDnyM}*Utu5 zS2OD?#9!k(9MueI`s{i%nfL^Xsn(s1CN}x%ubG|Q-(HPQHJA9@)8D(nhrx6}Ki<(p zWbeEYC9XkjCz}T0PNT~dyPuA(Mt|BQWZE!4u1e1M=Ja)uJUG4Te|MyueH>n0*(7q| z+v$K7hP2MYHutKunax@=b&Rz#JU>S|I6EC*A?N!FH^9e^2WJ2#(@xkik50$;H`6W+ z+l)zgF;?IC%%60pS0gRD(HVb7=jtx4vgzQ$ns+&!-p;0o3-2k;ibZC5dVhDPJOQ7b zjX&O~ZhQ!hZiiQ+n<15-li{*jmnEguyJ(cJh98DkHr_X=41DCh`IGKhysne5`oWe= zIjgS@fjf-obc-i!$g;EzMDyNIV@TbQeCL4Ex$6gGcG%TlOf-2tIE~A>XDhsc;JoPU z-|Vr2fv!Vp<41RlK{q0R>2``DR~4SJ9m<&(lvR5Lx7XAb*xJuL)AKe%m4@Tq*;g2f zO@QDxo3zI{f>oG>Fh$byK5w?~v$sf%XpUlr&s&^9a?OC2aMRcnu~)0laHXQV?B zOAI#$tNrVI%^-5}2F5{dWWwIDn ze#S|FjB%kgnv*S-(~PgbT7B`$#yRF^1R5`2Md|w;s3`~gxBX%MA$e72!TcFO5KC((p0=Mn=LOuD@)s>i{sk+>Q;ldZZHTukH5G#y2;##+hy)w8mw zA%0Wp)~1c-c-KcFa*Oe8bwmv0MqhzMwVZEGZ47U2y--t@+y}o>CVpdtgU95+_Y? zEW_mG70=@MYBM8w4jr7d_0Smh@+@i|{II>`^bJ|?!o&Cf+1>y8AKm0Xy9qz%^xDaI zeASI^jWr$Jit+4{oh)WTq6ZKSy*KBR8TuCoV7ZD|E!T@Uoq*^=g8kbX^#@>C7GSiq z@0Xx$?FXb-ci$JQ*Cz|gUe5x^l{PPgSOEmao29}o$0ek5IN9fzQF?fQt1O)cjqoA? ztz)8CbzCw>+-B_|X$xdEcnhShdRcG%{D@D0EgK@w(HEpWt-rzH6tpF|l@;B_=Id_$ zBSPFKp&!<3H_pOMvIG~h+v;aLfp3E~hk1l=f~DjV%GLA|cIWK=)EKAp;q~BZcnCM> z=$bRpfWbkLI~~A5!R$<6S!Xxn!h4a(nP_x28{c9*p+dXgho4TygFBrz#<$(|_-6R2 zs`3pGY-QDm{n9?B~eRDta6Ai32!*q z@qhYm!msb9{Pu1N3`?rJSIxh_oASTjP5F;^Q~tkha>EJgatx!N51!7n>!Yte!T;ai za9gVT$O(4*k_dqR{s%()237q~11Y#dtO02%D4?HOL;Oh+FvT9?)xQ|8a51}ggnx{hb z&`O2a1L1F}9^c#}r8m?fV*Rgigz8IbK$EBWg2Q(98l;PVYH~CS0css>Q?nYm!3m*d z1IzjRDHPP;ksR?}dcWYnYD?~AjXq8#M>G}e(O$U@3@ubsc$1RK5F;dK7T$D^HEF%# z9iu6?&7}8tP&vbQ%P_!;tzoI~3f8NlN=e%Lzb+;p#s4pN@7812k>&Y?AQS|SKoA5$ z5CkER9JQ<#)Ku}JYmchhNis=hiDa_!Qj*Fr(#gyunXM!H z7>1wxFdx7l#4!Bqui^i1{bTKjea=Z%sk&w!42gO6j))zX73&@=BKr1*#J<5yoY7)t zO*c8@^fj&EUDw%$6Qk^sXP2JQa`(*$uE3$o%lhJ^yaBZF=J<$Ffr)myVxu;?bi+7Y z0)DJsU||Q-*`}ZjooZ?6I+22-%izKrp<~7NTmb7$@%BM;(y(Gnyh)M0x_KX;^rBcm zleJP^D!GcLl%`UHtO$?((`;QGJub_u%51oB?}ksbnDWBMVFna4-My_0qrOz)^xKG< zoMb}qGm|$UPD>ghdEe<1>#TMJ2ixo-HcpOWapX~au>)!y1u+?%cVLt!eP z<4uW|;o&*^?yMzKV0h6E;YV@k8z=2{GQ2ub`XsK{#=>fXz7`rMQp^gwS6{Tzg#|t> ziRum#jO>WwmB(mZOCsxjV`-wi)C!Q+`7)Ti$P?z6{?XQ6?f22zjmCfnOQ*4Z8(+2E zz;cK-}~qH{-Gh6Sa?j)CF&!o-_5<+wu0d&(!L+k{6yOC zhcrL!y0%x5{5t;rA^ys3vA_L_fN-@m_e%0C!kV;inZMnI$DnsMu>hkw8{N^4NdDWLz z$hft%xO(ee{rPt8{x^D5nN=;fJiuK)JjqM0{cE>bPr2rw>;AdnADt&a-e>;#+&^FV z=S!`S&FSo18BgDo`3E=W6br0C;oFMieI!5m@>+$(@cQtsboqSqDDsW&<+D~zZY!vG zc%N1Eoh5nqhY|sn{M_KmH_V8&2U=gaH!`~Ev?>dZx0j$-QHH0 z9xW}%M9IP{ix2N=C5w$3EopJ(-ty=(88m`Vg^3miHPky=L1KNP*f3vM%q&}`bDhm&^49C(-`3WMuSL(IoR(f$PUhdB;z~r&64KR2!D)E$ z^u++`M|`STi?_9F^;i2{NME~Ae?Qgl5-XHtd3EUye~iV;!bN#NR+bjznUFK%8~st_ z|LTKSmjh2$mcA!&|K5V;S8Ht#1Kd0q*b$r`sQc}`g=L`0FUzoj^88s7-rfHmS4%PG zf3Jl!{Sy;p`oCY)ktuhyN+;)&+-LjC1l?;r!cSM*g&8h+Z#e9pc8)bg+PN-G& zgzx3Ut-Xji`PTb7hO<#~qeraOkQooU7~!dQ@yd}Z9XTK4JnZ@^nWl{s8(W;^;(gL6 z00=tm5(&pY@2un0JCVc1dPke0;(<&b{O#lMohl`Ce?8VB$+(- zHm|Nf)xKP-et_2DUIsGf`YvxB(vIOCy_PmXc6w$W$*$xc@@El?E13d~J_d zxvN0iwobM3s_x;dzbmgCAGegh=r63%>KGXk{Yj7DutPb-s{TI!*xYf3lUAt^Xi;t+8~h2YG*>JY_yC9scMor#5BQW67=6sU=-s70=GJBt9+{ z+1hN@+kbam*7(-uoOVs`tqa}?X#;@IraG|j!YC}R?*~jG?cqAeO~8-DJ4M2(NmIA+ z16)r_m`d?e5R4z$d#QN_R2izKVl7e3K%Qg8k7;>GxX-d-WeK)o=IZ)5n@Qmd+OUA> z*j{6AyWdrDJVdu3q!*icLU?v^h#zfT9Fm6q4=Ix~H$7GA$DzAL_cwm*pAEV?aUmF@ zPks3xPIh!v-^>`Q?+V0)2v=N zd3NdJdf;znx9>dICt*vD;R$x!y^>p_m%0Mulq|q!MEq;3Z$4$^k=)faDqzvH=AXL? zjdx74P6LV!BYZ256>3608gluDB7>hz7Y+)G6|NL<4Do)<%ugieL`)T|!yd*^ zlZW@%OJd9xu4|V~eP;aHQPRD&yq4b5Vvl1;Kz)J`ZI>0`e$inX;g8Il3c8fI%E0ZY zq^@XO=ZeONB1AuvVJIWqafs@n+44}I(0?*zs?30HlO-#rO(qW&v|SxTD=lfd)MPuY z?6{$pu5CsdA--Pw`xjq~-zV~i2F9go?c>DkUMh+{V`~7{MDpy?LwknM#5bcsP2^>L zExaZN=&B~uk10RVfyu8%J($eQDt*4vxcNS9M!AV*`_iK(`;4rHE8e(BoI~{!Yx=Yq zV;L~c5C9Sk~3Sa&wECuaBJ@D(k*p;7jzH<^A+`JqXVY4WSlz$P=bFLFnVKGAqT##yN|%MOjt`l2>H zE32+M#!_VHqmrnx66rz2653P>3U*hhagA|0A6H9rT%Oq;7j0e3^qiu6ZzW;_`G`^H zDvaL)8&spr011;WkydkndVw3Yz)uz9C+Yh zCc1Eg!6>sO52%yh^$jP3>(d72;0CHiJ-kTuthba78)B=QNR*EwaBv#IK!#Z2dLmf; z6fLOkhs}>k8huW}r~;H;d0M31)yjr96S`9adT~!Eu}lFuPUhwz)To+5?U5FLM)X7R z2EX{Iy;g9v1Qj-H+lTM$JD?;YFBi`$}7nqsK_FKZ>YN-MN}Xo-_NM?B9^1 zUH&zkF$Z$qybws`Ci6vvVU7=*-0I2exkF8h+UnuB#>E$Xn((cE9mGPPn38;yCd?-2 zz{da9W-j=T5<&mI&`|p*HLD*davH#neAME?v3E8b7^kX*al+8VI62#xNQG+vNnNkG z>usIc%w)P6noJs+n#{mNmg9s-jcEHL>c08<*-@H;+@GJy?`>AFwl8Sbf%ivog~*#bu4wb5bnp? zfLqN^{T93-1w}0vFcYoI5h^ya@9p7Zcmsl3IzRR~meF(#aM9Yt`d;=;*Ne$vrqvTLc8sk}IS@L!^?(w-O+;HP~7-mQoXMf&WC zEH2)t>kksJTu>W57!rpEsvRLv@NrGEw)9wLllyJl%8+I4Cyxrr9K@rx)o6=Nd5o+| zlse3+NOd(l)hc+5&*ezUFK#ML2!0TvL`50C!|BB`=glo`i+HNzBID!R z`|B_3QkJgHJCwUN-sBJ7la=DV7;4ZD542f+Tgg#`g~ggr(G}?jA!?|0GfJ?Uv#$*| z-4J>4$atzFtFXAayZM@dm3bXjiq8@eua0cC{p(BNQuTRuiJJ~?)3U^YwwG>-JJ)bG zJFLKO%}!oS?!wLrUePC1sN%ZHkhxepdz4$)YAU8j94Y}96Ls`>!X`nnL>K-2SsLSL$_}u3V!QKV|2%-{m#j3a_DG4I0l^Us0}F_GwT}VtL;LyK5)zD)Hoq@q&RNd?>7}Gy#M;<5qePl#z`x?_qJZuP)QfnR;_)OrjP4pVFOc)cJ%JUptd&E9fgXC^(`OBb#j(UUkEAh??OJ3K>86{P^^Da5p!y-TsV>8|}!@swsHt%xFDEAIk z1nh^<43vl;ak<_CW*A*Z=h$t|+GbLCB=j{_l<0~~R#$rilhP4B3LiPF%KmWvZ`ihC zda_)+Z@n(BEp0uiSNTZI(O$uDbx61!iE~<)@V2>8l1WU9>l>I50SJi^yDWwl*MhgK zKtqy7Pg(BYw{E=pVt@3$w5}txo#kVd2x=VyighAb9GimXIGkCcEivqfrr?kkaYbES zEKs{vW=TK}{E?ce^+D}m);exeU}ejS+;ywbPM_ADVuR?OE+S=hMk-~yPbt*B)+NfS zrWWzjBX>j_yr)~}KE${~9PX_nRadnhvA_IG%c~OaFVP%htNH7#gN1!X_1@EU&o0wG ziE+FT>nHK(;_*1IYC~kZEl$&A=}bNNjg8bOTc0ES?v9o@YnfG|wiK9@ zU5$4gOD{)@^c|(fU)N8+>k~WPqb|DahU1CO#5z-VS_RR3KBa=wF}e&NoWY`X9$b@_ z?YA6&!kIRikSAW`dp&bw;#DDlOACs=TbjSAt%y1a<-S6Vhq`U7Zu70O!7$d)gG*4%?}xp}1x#$H7!mrd0>G z7CPWPL+Vtq!AKmJv#&b6%cClsRh#o!V~l6qV3(dvc1c5{UD~L{sdP0rEY8UQWC3UN zK9N5(FfNtjnfP>R>#+u4znizOBj{g;%KOABNJUje2p&&7*_Y>=q9d zwGjWU=nc7WJxw|!BnC)Opm0d-}JkkB)*4?ohhJ*;StZxekC>!7I z?!V}(QEZnWQ;T4S42M#p2ptMmVOB@ibgJa;ONz_sKpkOz&>pN-ij$I}T!S@*0QY7f zZk4Q=UB5~pk;zd{rPj=g7(d2pBF^L?rmCiEawW+Qx7=EL7VE=#MY1fkA2@1#{dqmT zzT#7Kd^{_Xn%bzM)g+0z1BGdIC?Z&cwId8z!ELPpTQzN?8H2w7q2^nnU^}ie~%B>6P6;mJr#%pr*lWYR%?~4|ezWp4s%=4Z$(-MfT94 zQ`ti0N8LP|v>Vb3bQNGp`TZ0bwwE;TnK{}8a!eQmxw~G#fMBBitB_DkJ zhU&MaBN90ip&XzAaMm;;}q}qw@-6di^ zT|@1aP6ZuKLk@_Baf3#;%Rx-)bbLc>SoAy8@Rz+gCp}o6Cb{6Fpz9FM73nj>NsW)? z>p!fA-MC_PIOAAK&6&;!x%vclc z`|5o1jlnAf+b1G)f9nrE+*-)yd6!UG=X_a>+)6AD6&g%%Kzv`?_+H@D=C0RhDvTrd zP)G_dRV~A;x(20ey+BL1NnH$F%29Puoa^T9OTETH0Xmc@k3$sIf@YtDWuXf(eUE@5 zagPqgkoUJAYyW`&b?`$Vyxc7uswk+-`y=~l`$Zl}t7(vbb>pyT|1)cz8h;$(w9kro ze5(Mz10wSc43*O!G99N{$qjGJ(Lp&1cA1sdH)kmpb5AQXnO9${y&|+{S1od5TaJV$ z5)Ird)}UnTO90SmFkG*qCv9Gpv^6>7OniX@Qdlro>HJ_rQ)Ecsq<`ezZNRb8P4W#O{?Cu%`z+?#atgKXWta7UTJ%x?vquh@n)Q3 zLq~%|)b{@Ccp@nlj2_2{vI73TE*O)xS~lXytMH8(GC728RuST3jZu3CwK%q^g*(y7 z{oo~gVM53PmL;%PJ;dxmjqe0Q=cC&khS3++oYVK3#|Xf#zbx{OBW%O6MZMnH93CxjX!)BiSwGr9P5#ms6|M zWeHmnVVuEhG^%}0oQ;<#6i>VG@_5?W(S+;tE}DC$>v{DL)}u*&wzcuYqj-Gmi%SB` z5iT6N5F{01akXsg03j7AFV(VTmw2R{Yk{5OBwD!8qjp+qLPbv@X!Q6}jH4X9SQojb z*)Luw;(S(~AB6HCrm-KMI}cBlSZ57S2SiPzzT27;LDWaZ-3u!p>!hS-fgSBiESibQ zH_udkx|>gAwzVaQ?qpcM1)4I&R+AJrU$VExO^M{FNU_nen`AvC?Yyv(JCY%tV4;fi z-$t<$9F#glv72u!+>VQoIj|oXpdkrJn&9WpC34Hwa5s$m;=7ZJqPVrIcl(95^{&6t z)B3CL1rYJ{7yTv%(SCNu(Avz`$82`eu~FQn%nvfu#|g)ikZwQHR$kI8(pJ`m3-PqH z#i?9&*N8A6y}Bn$ZwkKO^nu|?XHUc!L?ztmRda$>j7tf`+d;1DadjQvaB&?}@C5&l zX}i9ZSI>9MfuC*fY)Zbvn?rk07rjwk^uh7Bx&jLY=J4tI9rdytX#dK>lizRc?-mKV zSRS}3HVJ2u7OOs_I2M#2OPz?n+6Go1bnKvd4cGy=xaZBI=X*`4=%g%B*g;v3L!qJv znsl`J?dmH+V$5@Pq8bceuTDXe3U=E7)8p1AMf9Lq+1WkVs!Q}LesI81T19&;_CuSE zr{C2bD#7k7zG{oR)t&YSfu^2pyn(k#{ArN0$X&41hLwDwRrX8ps8i+X&hF#&o$u=J z_dyhTg*JA+M}w5W(98srKG@$V`X^Y1GGLh`iqtF#>ghD*!4#=Zg{1JuLbi=(kKpl; z%t3(+NCJZtMqi!rk`Gc@N~j}tL&l>S^r7@5C#s4K9aydHHbwf~x}Tm1xt#5q2M_!`q{+U7dQ3 zu**-jpFfx80o;TN>yNi}(NpbDbn!7xrwwW2I*zRBdy+`Y(ow7pq9{Z`O}F$1GhC!; zc!xE$p)Wn|7aYVqbugTzrJs%c_0TrL{y+vYzwiZj)SLCiAL;`i z4Y5G$&qL^&!3H#h^qNks8ft=&6#Kg7BwWBl(t(Kl#pZKP+!Ip7M>~oUQXDLTRPred z9yq)%P^oNBw4`L^L9$>hD8u#fLcNXrPHB6xXZ3TqyBBd+rmUg24M|i6A$ag?7bPt) z8G71?L;JO_l-n+>jiPskCaMHjtBOCD-(N7@3XK6cLhxFJGTuvkzLaVc=OOIqbh~&s z+KV4>YPjeHePeievc4}*?_QX9g5Fc1>d~Io;w19|irR{+!J)Uk*12};b>+ht5z^I< z3sNi4GK4Kc-8?8yiUNoyO*gE_!P?NFosk+g=7EL2l+e!VNtM}Wb;>!hDQd4TlAGIy z9A;u)dVDVEJVhy5**??=;;}9ON(Fpz$ofQ}Md&+wMHi3Bgb*!1)hhFmmN;c%i9Mo9 z^Aq2*($lD}l0#sP$fIS{IY8{o1V6-UBK+5p?pvI;h*1%^73%vsmoRMa=x);uDen90 zI-t;`<5&5Y>$~Ps*JH>Trq%IX(3SgKwH}V%yxp$siLq(uG72S>>P?ch!S5d2m(DKs z`T%oi174%?s&}gMNqH)hkYyw({qeUN|FRlXdQ;+TIA*gBJfNI*|AAl=>}mTTH=JoQ zHV$h(GLo)pEhkL#buQ>E>)A#Xjq{Sqe~_TAx7JB96QEvfysp_bS&9H%w@?k}KbCy5 zX%|m{gz*$);kiTQ3d)rb6StRs>#l^!h+q@dpuef3ySg<_l%{u+Q)-B$QtNpJ`(h0e5=gx0PD~pZeU~8)akb5L6EUjL7IM0Uk<@n@s=a$f?6qr_QMo) zotjjzH-;TXiDdJ^fj&UGaQkz;PXpJRPPCC5M%olMh(1zn;^~r6X~T<|NGT6+RTQaw zW1Fie*k(N7*nAjMij0uyfqo;SL^}qp>7bv0a_wI8Jyd(og{*9EE00(90IS^Y%iHT% zVt!^r`jU6A!&m#w<55=4sMFnk_5gu}yxEAil*^K9z5~SH^O55howtHQ9O@|#F+1*=H+SQDI4ByMShXNk zZv>CQ>40g04+T<{5BHsWE|uKf*o}unHR!%>R}`)IG1#ao?%pIrChy%oBy`9f5>i0X z+fTWHTx1b?_Yh zms0uSs+uF61Xe8{IR|6>wFQO#bXW4a8`=1_7L*BvV|w?*0VVSeMt2C0FBq1{pK)t& zsCvI;wG&dP%0Vz?F=wmJF`3~q4f+UqZRsXG{ctxPBO5jkPm4W&V*Rp6bsU1+4zI)=XBN7D^G*NBC^q2J7)R?LB*~tGdL61WVB*gs($pb>8}OeJ52zH*?AJCDtr$ z+KP77e06Yw{TY%|D;xzNo#@~odKW4s$Eynj&$LT*r(OwXr%oJzjNLXkFolD$cwwVn z>Y03ucvX+;^_lW4$lLI2SED)<^5X{F)ZnGPYe*<*$V%>-;n^2Ct^eqP(g6^s@>!|q zW^N{aq8;yg2d{?>#@lhdmu#nD9i>QC$X=HYvKb085e5AXTBfs_`$By6clf!bV7Nhz zu)E62+Q%cz1^d2aZOVCMqS#=mMT$;&a;-eMUcKURZ_M)<*O^ElYYxK^6S#uZ7a9cU z!&9O#h1iBI6;O0{6Cc%zw(mruj*b;izHC^%%Xajzy~ z&|jBYAvci>K9#kPZBg7K7?CEWfcFO+#w|-*8ivYA@`Mp?pI1EU)39naLKFrmNY8Yv z>Jm6A8TPt9VA9MX>A9D?AP2Tb0QmJDR#HrY+Sal;(db&qX8}vh><^fv?!I&RF*mCL%u8?CR`D zigKp+@Lpv?W~*o%WisT)*I^V_3{u!Z!=9=$$E>-7+T|L+hX{3&gg9%|;73$F8PBn> zR2}p+DZEZE<^7b9|53quwVOB^e}K5NU*)hKLb6|f59=W%`}LRo;|j8oehhZp_wjI> zyEt1yiPW^mc>|B^`M|YVC0jWdB^ zmgY)nbfpHg%i;+pA_tdgzEW{{C7Zu17w_1!G!8=)G`19#GrS75JH}KFP1&17z)8_^ z$gE+xcZxPPLf@e~^7rlYRD3G+0fwR&fI3_ApF)?vaW&PVtcaz9p< z!@}{3?%y zl|(pmBHZVX2@{t3-FQYOOH$`T-*o0JHV!*`QC8tGWt7poR7JBBix$bYMVh*w0QRVAu=kC!18FRinRzeq}1L( z1V;a&5C`7wh!M0D7rrSCSvNWs*`znFmsS6K{p*djwcAp5WzyY(4@x=Nk|3K8pK?4p z61{wVhjhr{*N@lMu9hf4sA6qr;!&3+=#15;Iy2`*cN_gwbDx&4fBos&+Tk-r@_lVN zqWMMDIiQ&v0+gzd6G|}CipkooYT`c-39`jRpHB?n3vrPb)vx*_Vh*74uXPkpJuKqp zYeb|Y=Uh6rNd@~Awra_B@rm38kEH}*km>Ln z>0dH_lFs0wmZ9@;nN$`~p!-l}2s6)*hG8)QIvdU)*2yOo>_WUBxA%8nfWI;M54T?4 zhgRnf>J)N2mjs^@>U49~ur6C{s$1N=Sl3FxAGslXB_uD)v1H$I{-TQ@J-KrSNvpUe z1PTPs++n$6qd@J8uS>{C0cuRa@81Z`VJn0I?B6B6TjL>atcEGb0vFKbFoXRp9Nd>< zb7xDQFygtJ_=@)D&nM z#Bg65ZsH(502C>S<8yN78QTTKD5l>`qGaBfHFuCtq^c|0tELAgOYk4w6Kv#pyMuD; zgPGo~kJEcvT!>TAB*S^G$u#I);ZjsLcUQHBmAX!8zN>!^ExPr5oP33*8gC5}Ks9Uum`V#Z}n* zBUwu;yHSH?*~lhOxex62{v&2H*a^9HBa$X`@rjU2hb4B<&UQRF&!4DjMu<^ZLGj=Cw}*E{h`7drI0U0<+pc_B<^bm!W9{A zJA9@J#f>nsvb?jkrK1!Zol85=IMqaK&XYZOaA#dE9EFPswW}b~ydTO)-3gAfu!ty@ z8@`AYiPoc-tp)Gou*C$6sG0K-JO+ljaJ=7wl5EDJuxTy7V_KAr-6Mz4SmMKj|Mij=jKtezYTFwgx|b$tQn&g{x`YC!!(%RCre)Txs;1rF zefl6)2;yily`jQ1-Ce8f3r@`4!u2)grxss0n2+#0j?^E%HGZoy!SFx|?C_qITkgpv zqb0h19iop^tW>eJKirzQP&2@<`gn6)PEplbjVraeFjSt&x*uR&A=!G>dY~-u^_@mK zken_p<43Ny5EYn#;r`&E#$|jhM-W=`aWIt#aW8$0!J4TBT!A3$}YRN81%KzQ#CO2iTuLl zkD?vn7}}|ju6`D}M46M~ik~KK{+5gq>?Dan-qn>mx(F_qM?Dl5cT0Vg)mNWf0*)h; zphSICiTcD(@RIp@rKGa(o(Cz?(&&Z5l=-3-)EsFpUtXs)^M)P8qc*^1G+YA zL^E;X`m7OMpEaWEvqp4%)`+gp8qxJxBf36oMAyYF9EcryZVDgxyRJo)9(wKSRj7IU zg|;PNJ?{^Ga7hlyh{|6jd-P(ZM7LS)y^NUQ+sH(H2*0QrNPp>kq_4=q>!qE_ASDr{ z7r=@3HmXo9Ux$QOBik>`yg6Y)d`_B?HLC}=Kf@!w#!66Kp7ElL4gHWNamaYIsSkCc zu~t&035Ynw-gU&Tch=L@#pUXZ>5C z4%pOqI{=Opxe^YUmXXd=8b|WI?h~3_fQuS4H4Kq(I(qX8k6QSYX2SQcRo1rI4RjS5pLNIio$GYOx-7ob@+aX%2(^Q^J*DA*N z{NU+~^sgpHCT97yOb!&no4c=S=+qqReUOtkd09K_8Wh+53qBIKe|}3hgpk?`717CZ zwcvd^{0;+GPA;v-I1=t5R4KDmd&=uo-Zyny87Eq)AXhI$$kW%sN^Y;qA`b?0mCKr? zmCH#b7Bd*C?G0W7>U&vLFBm#P{DEMC8>Q!#C`9RII*$FBLexzqCYa_O8?NYuc&BO` z?6Wj64?d~e={2-;d^C58Iqr1jx?7wD7j1}?$65A4c+9`i!nyn%KMG8nl^sfN9vnGR zb+weLpnN&?5R)Zw=7Hu)X%ptr^nKqG~I6$%e8nsw)Pa0BpWu|#?pR!^-FAF zfA`hA;uy39Ft>qqsQ8f(2RgvHnGKQ;!^`jxVD<`G=+;%U)?#104yrZ@a%9N@lZlD| zR1mJn(LZPi;9K}M*f|7F^4Z^UpzbsO|wS;OI*8+~1!WO7GN)ajGa8FbygIYj2b zHm&1E)tz}Dt0>jaPr*ltfy38X<4bK4}{RzwK_G~H}!Y%l(CZ|mum z&0XEOefY_yFmfX8%BwFwU;F&i$YN?D9N>Xw@R_`rAr}QNi~$=%7B6-mS$200w%c2e zk1(z4icRa94#SWv^Tg7K&XHe!c67*MZqU9+?d~nLf*ncVvFaBOGJna@4++%+gr{AC zRftB7+FguqQCC*rzmQ|*)yA_}ArU*${ndCnSClaL6Y$7Hh)Bm{ud))Ks!{JMS0CBh zrVv``AX?S2(0?-bf?I0r?yo-S5rN7D2GQPD#IG>xo^~x&g+$0jpX*!o&-BigbSL;m zl@R8po>&aZqeGe-rR3osYNvYy=m(la(5ig>aQ(;arvii#HiDEafWNlPnMjxHsIZvG z(4yGvjL*tm4Wo)>iLv8gYeEWcD0o4O7L|H5HQH?}N2K4~p>Ar{2S#HflM$`xRu!!P z%#gS@i0Tk|PDy^Lc;jA4Xn!rDksp+kzVyv8?aOeSu53NK+n7ezWf?WopWrB-{>m88 zf4hPIAIujy_l~rw8fE6JZ~mj0fqX#Hw}J%rc70<-*cE9YFx9f2{#1!;#gQz_k`xNM zD9isOC#iSCz ztl>7@;k(bSe$|;|oll&Ow6kie$yOI&I)gN(LsPgQstXv^5u=dE)N*_=X;Q8pu4~C; zZbt`%>CUa^IB%zhpJ{agG4lP~!DkHO30W?5w~;6Pp^bB)8(Ed3nq_gcP;s8_iuQ#^+k4%|AAZ~ejVtfBz#mJE&%SyrsbLX|(HC>o zy@szb#OCeYjfh|{$wX56^`cOHQRk_~NzL__??WxOUn^p2dqXNKcfmHI?-mMW-0P@Z z>Hf-A?7iqv4twv?Xwse~*Kq7>oRCk5zhDGuwfm63;fsT@Vtf6wCph{hprW+vIll{w zin#IFfj9>4{$5vhnGm~VukDEyRB@f$1KWaSBfKnJcNdn5y4qgGEq{LXQ}ssL*#M~U z4oa3I!Uy#@DG(y}`b%Kk*W=UB#*kd@ zkFRkSWG4M!(6aAui5KT);#^wNl+EGR7*2cPTPa+V{+KTn=dbAVTWq>->q-$R>cfBd z?u!_O3fH-iPht;5 z2aiKh-D*|eox86mwuNW?TKokf7pQxyJkh`Xc-kyO&8L1BsR@&EF-OCk=~xB*l_D>A z9mP}mV7VLVQlx?b%=wZ^@2Q`!OL>o!@w{JA%e(sTu)OubtlWe0gT4n6V9JYQN`YgK zOIO#2v+BxHy8~vtxy>tTmwMlN4KC|2>VVrp#o|rSKQ2r`?2__miLbRIsr;Ru??f94QB#{c zF+cn9tYzbhzkgdkQaSl+^xqHqa!+sC7_D05V;%Ju$Q`Nm^2NM*2j;$3S=r(-g4Vjf z(h)t%(}6b{127Wqo_(m_m(i=%oAT1B^px406J~gQk%&E zz%RJVkNQUod`mm!<3GRMa^{J~k?>nnJ&Xq0G2d8=egrp|fyrI&i5F@=xX?LhWd;|x zpsfVTf%AbSy7^A!Y3T>G_*Cgo)?S}_ky5YJgEi$PXY0QDh+O)nO(^=isdCi7jIYNV z_y}f}x61CE(su+e@Y~o5FMX;n=rve7#%1k>iT)=4);SU?3y1o%u=oa?Vozh8p6fd? z*5~D+O3-g+UMHQD^3#7<)hF7c63LU<|HaVftG~1t>cBT}>Ql1VR26B<;~){`@|a_j@4pf~#RwIUygD(EGYnj^{#6 zm}J@g)8GA7C+qTY?Ip65=YOiiU$sA5D`FQg2#dZW%{b~B3>Q_;3LY#Jah3=J+nyBq zmsEq9ShA-}QbYV*S^Mj?0ybLp=<5G=v9jKm>Sy0`tER9~GsPUyg2saIZweL=xTSH! zL?7#S1GfDa*Q@9;jeSq8&aC$rmjuo7w*LL%WcfFG(!aBYDWc$U`A2;R(=TuTQUCtA zl#@=aqE%anRR@J!5Kx+i7~0%7A;5@EdA-_ler9O8JQt|K&m(xz+PE)m#nWeU}-pFgbY?lxyXsobKPi&N6>Xe~pa_ zx7Bx0XetwP!z?k{{#(X~8EP08*}W*Qs6i+ma4~rOFZI`I)S-+DdgZpBm$yy>Wz=Gu zB*K$l{rNqa{8l*n0czdLilJlE2%Ph{%9$+H@J~_q>hYVfrj@nY25x1I&A1k2fAm1< zrgcN7hnS6%Rhe=3HP+*C&D@(=NRt7WY13~&6g)06&aLd0lhg_}f#GFsKxQj&N8NH15S-B!PspQt8Y!T`#uIA#-#gYGa~u)rSdD~ zmJcZd7Xp94-%C~IO_Y24mr}I<(~=4SlILvN0)44m-(oJkarQ zV7h=1@M2pSv@l`_mC3uTF8`m?T{iR^egh$!QBU;*zW@AgHdhoKNuF%ZH^u@6VS3xH zJh%wVkubWa>hQF{X7&qgEORcEKbEWIpOs<+Kt26Y&wYdA+4^I- z7Ulcl*g{V`^-}q_s`a``{abn4E|q1~iC8eXqU2dsGT9{RJ<&WtOvyGcm-5@`iMbiG z`NL=e8gf&^5Bg`ZJqBusst5nt8WSa=wx9mvbai($P#qd3ESa7TN>6H#iD{GQJ?{Kp zfYu8))QfBS?=!XfnSQTmqCXY4`BYDzX?n=NQnYtL$nkkReW@oT^fi^dp>kj7?^Q{u z71e;Vz!sT!>`A5+VCytMx&BgnO|;=1vs-y*?pM^qA+fK?QQE2AO49r3TS81o6I1~4 zaJM#1lv?2Ra3ADq);tYgYcDAm_f_8dm6;GdK+{ltXK$*$&Cp36MUA*9%DXG78@hWY zH|Hb$rA;VxPW^kV@jjQ+@xD^b1LtD=xXTh2Z)$%8v9o-O_0zNj;4rp2m2%~NK*TQ6 zOLA)iA0U7>^&rLqH@YS=yIRV%QDdSmR?EN3@((shv`LigsPIiFxYWA9OaUH zkRan^JvSl`QHat<7iX9IROQM6r~^=6je0Rzr}^BhK1}z`?Z2VTvpLo)<=4X~-#XQt z1oq#9UcK@dspnxFPcbd&|m6LvPZngWn${n^TQQWQd`>>$C-}1we@8KMLr} ztw&*ItdgoHs&;&4CC%rU zXMCZIPMg-F53wF|c}3rW**jWyX{-^9HR+af)Ze}xMk@w9#;EUtDUZ{>pON-^r7eo! zF&6ekiPZ-!{Mk^A`${b*S7Jo?8E=ba=3BO?2xHPEJ{b28t&TG=g%|qQ)paHvHOnzh z6#p@lh7q05C(nji6*N%Z?ci~KL2b@l4LiT6wlUHenOj4&X&z5x&E?d@7(}PqfT#Z+ zXe_TZPnlbbxT+lpu2wKBB`?Ri{QPF=!S0X~0)2 zTv`bP3!yFdOfWy&(z?|=^&Fhp2*HJbfZny!KfVtP>Q)B*U0`mk=0UBD;_0xyQ%-xF zUCF?4%B|N~1?T-<&AInlipT5u1!vW7)d-9+jkEk>zyxS8CaB|udcbHIXP-M@d6(Mt zO{s~eUFt>Cs3DQ*2!2+iG}~v$hbP`s8mdj7=JI@tDsUv4vsvF^*oR~80v^5=mVnnh zAr7ORk7kuy5bXE@JVCq${?06ErG%Aa%(+9C{GhLs{vq7c6^V9D?d1%mXrmj=1=1Ry z;Eh!`op31r4_{>_vYmt)ka6CVki3=WoF&b5*$fVBzi1BnZSBPrCcQt-Z=9`bO+7); z*%N)X9+}%0wdy=uckozfX++6qXV!XtRbvI;lDd;h%h^6>kUTXiz!)^}263;%{6=*x z?VfTm+nxc@vn}25fD4qa26}?KwohyF0A3GOTk&pn74fif4j2G!_4N!r{$-CX^x2q- ztU_h9(cj~tW$Evf4=#b9y-spdID-6;oBG1K`o@^n)Su*S)xD{;PV#n@#~6|ixF+-& zq=>lOd3apoLEXydX}80dS?6>0$y^7QXXSb4`&8D&8~pnmY71DO?o-3@dbUp)oUdp4 zROVnu+@Mdx2G&V{F{fUu2U4t+M%fFyqgleCoxLwJ@`gD)k4BU{d`<8NLgwP+z_ZrW z=D@Yiw$wd+M<3u@x@<_Lb*n*?#r+*)y+Aw6>{^}2W`vaU<2)!~O?9A!3;ZD?;95U zFQk!xzZK{)&5TB@U%^0(AHOvLED&{N#TT1`g`x`!@|rzhng=STh6sKlG zv*>N<1LL}Y{mcANJK_O*)b?jN|4?7P>{PtrE1@c=NB}}r$Um4&0sSDNJ(Wq(UVi$Y ze-1L@0?er;-V8@8F;51wIrhI66&bp9Lb+itpeO1gD1l+E@@xRk)R2b;H#6_tm=+d5fLn>q1mdp4@wPWM})u|nVwJrm>3T3p!VjeTJb~<^~%jl)F z^`HKyzZBe<4Ri%uP2=LP3hI;T9u3vvM4Bt*bZ>k`-l=hT8fr-E+h2fDn{~eL3Zl%u z@yPNR2tx?SYo0AX|FVGxWBchp{oEPI?wLb0f81ZcgXyUv#H}L&Atfl*R?4djViasu z(}tLt`hE@qL3U6FE~xw#F`et)HSK-#2NajYv^6~)3Gf+;SWeO}0-cZ-<){DsF9l|g zGKtO)V*XQf{bh4}3U6Lu&vW@ufKOBz{00+}!I~MdV7kP&Wu)}b_0A7X-BNwrpAeu1NWiJA_H2En@-JXUhdD zKny73cL4T4l5GW$m`a~B!67E`F5v0|sY{@!ztfvsIj+HEH?WV>*_Owz`roB~V0*25 zR^0Jv;EpECJVx#ZNGuqXdq@lP7qZU!Ro}@GyiZN!YIeaC*Q(NDDl$gj!54y-1u^lf z{clPs?>zPI8UI=}uxi6L17QCe8@+1*ZS=0ivv=`V zR99SGXnm*_pf$Fefit>7H2Sk#zL6ugoN2wit&+iZwIrL&j(JIT7o)j2J8$?_8gwjH zo##vYa_sY9#-9W>vQX1%EvJZO(CIk(4%%nw6In5xIpUWB8iTsj|=vv zo3N>xj@+&mw!noJ$~zWTMSKH2o!sOA&{plmWotOVp%*)iXO*A>_Y$fU&b`Y&orkly~vXSb&`f@nt3?-pN(@H+A!YYMz&(@jw0?-F&el zyaz)!{8Gc2fYb6H<^?Y*(=ZGB7quzvb#^f43B`whFe9Pm56 zFOj8+r~0}DM}1Pt<%Jk4dZ?E&ScE{V*h!=kZ=Vc@Mj~p*!hS(`-dk_~oyuGl^Bkk1 z`tuLtAZE}Kq6Os;>4avP^`sEX5K`KZ>G})sfq=66<=d%}V`RLf;K1u_4*B4Opp0T> zWhd1$)S;`&KcRRYl{$YyPt%JRC*+kTXV$Vr=JmJ)mcSsDcbV_3)`Ba z)34xy;)IB`lFri8iGV3(8dO`UT$9XEwH(;J)ePlHaCj?@=2}~CrtwVavQZ7UR2r3b z;S+6B;NO28YvW+l{lF~QMW?Q+XZ-g?{MWyKt{~BJjv&*k`uBzY-iV;l8^WJf&R>_) zY(47#D^g(ko;*^E;M-t*{*g5n+ii*E9xXG8n(R#_Y)EM$2+B*9DL0#B>>W6e5r%}+ zI!gHiJ*6_toB*Hl)Bgr@fgQ9!_A%gQ?K=b2{z*&-wglPbnj(y1@@r%_Xz9@F7sWdb z7${}Y9A>rP+GzoTe(P6b5E7L+1|t6RXX+8mG=Z4bPdW8%5CvKZE1%`x(K4VUSetL& zv?H&dI(_>--vZvO9en~F>ynTO?M`J*WJIYprR0Kw+anb{K z5(D6cbOg$5asT7V34Zv;l{#F?wIR14*W))NdV+eqv$AKe((%AZlqhqLV)~J9^wlau zzvmxi&+_M*0<>R=!ak38)ERutD;Rn3;FU7a~c;&0#~8Tq@2q7`#u`Mz}NCGZ}+f#plaZ@ROnTD z@C9736oWP4oCBDL(yOSvx&7Ec2M)nInjC|9;q+)=HQ0VB()V73+p32)(20-qYum{~ zZ-8W=J0eOZv+wgkWu&GAFdFBYC%b2)$j#;y0y~X~|4_<C!5^a zNagXoHGe;9V?^{bWlv)sMnc0i<>n-mO2pw}IYPDlctMB;l`=QBpbP~x#B7(j%z7pf zKOAloTdUi*i8{d25TUN#GL;3VU?%6%uZg?~>+a{({PzerDjjR9=$w0MvP}#=C0Lb} z3YMiZ_}navDVSE9Qn4_=7y{HYISm@%-5&T*uFXn-!WXS|B$_A2>!cQgDQ3$>lht@M zP2ngP7Bwz7%LDzzgirHT408PgrGWU>z;P)+rvFVLojshU|NmBLA1J2aGmXO>3;uT{ zQvEH00`~ra+QDa+M#)nix z84mg|b*+|Rb@XGidKP)oglc?g{LNd6yM}AG_+=sOKiySZp#5~7iNea1xBcD{Y#xcT z0wrs5R?pz!Oeneox~h`R`M(HihGeT6tTwC$Qk@Zpots3RH== zD{Vn;-F4lTqXk|Teu&(Lg>m=@Y|@LaHSHYmv5reQJU+}a3zGB|-FK9Jmc;^=2WZ=DPNmOJ zrVh}(*ynI?gH1uac(h#JkROXym;3K6#%P%tt{&p^?zNW;EspFHD(|=Qx%9=@-0O-# z=a_G>hKLco#@MyQ96-VJ5Uevb4$I&FqSHBMAq5PM0mA!NI}UBdEOUNWbBq#;n!q%$ z^BW^YpOfE!6x23eB{RanoV{KRvveAa8JjJK;?yr9HTC^|b;tQ%M!p$g4%#_i)f|{M zYj;k??MFLa8GSjVnix=-vK(VB^RP8EYNHs$JhtGOAP^A=2pPhZ=fo=4w2^I2Iz5(V zdGEIJnLMl3?7#Lz(pC|3^_!j-K9e)@)AD7sf=Iif?>?7+{7O%s>gigfeWfpM=;zjd3p+VSsOib`~?9UqKs)niK4 zHFU!;>OJqdbV|-^<^WwHUm1Z#daxyJR?Hme6PTA1L+{V^xYU%i@itb8iP3BvJwknP*%mb4mv%DTk9@?EAw)J)bUFPy^=Bj;v~_aKMZx5$QWxhmN;G;# zxj&tMK4CH?SYi{h6^HWnl9u!C>fcTMn~NDUMtSQ!J8f!2h_*i`{D(AcLI&1soJK&E zb8M4Eabjb9Gtk-6Kdk8sx8MM|OU4+=oRsq``rA~BdDU!hi8sQ+&u*$jjhTqev7~i1 zoB~%!<6B|V<$PaKdJ6s#^kWMyUmzhR!PsT%c@b5o%h z2Pd}~yQg}r5-QRnHrpF6JRhp>A#Enw=;r@i|9zLP4YeDA&Cv506WCDO=T(k)0X_o8 zYzOTUH;>eU2bA+IkGeX={7lP1uApr8rOnj_wZ1F;ZQ#1F>RhVva!g9LACKWEBhPmxN@aGF4` zh4&2}U`(aiv+bKM^}}V= z`e(zHSwq5#zn`NHWbK4GcpBL`(jP9{MoGg%~-Ud5>-c1dxpv2(o;FUhr+t;94cpsGQ-#{ zj*14xq#!A39N#%RhoH*l22=ajaCoJI--i;UhHK189hWa-jIo7;Wg6zd2M*9S?G+uy z4!<(4M}NzEw316gQ@Ig*gPl%)(P2a-5k(EW*>>2lPA>#rTV4^W7gAzt=D{&Y~wlO%wt8-j^G+hFI;ji46ibWqxmjn*D6gyn|6ZIXa zY}K~jP+wOnVouRBX$2^Rrro8&-K$0&E?1Xz&q^Hg;FMNp_z#ZB(R_|_QsbTerse3H zu0Ji782%1+(f5`*iZBisxI|Ci6Wpci5i?_{G1;R&M?LD=2G?g;27%uRo2tWKfR8mz zc?9#Rybkh`i{tMq{HHcb+Pw}&N%xiy2fkbFWbLbf62qn)Nk(K-v(qcSOYcFWTa!ga z%c|{6KH-(KrwEPydElEoDevCbQw{sj$p&Z>@RqD+QP?G(6Xzh3)7A2xYli=>$x^iD zMZY7gRoYUYa!J9TP$ZBoC$ThraxS(;tH*~-p_f3xw^TN`p^l#N6YJ~noY+gNJ+#T~ zIe=?OzkE}DCWf3`8^gK0e$kuu& z&}Ve?kY4g`By{NUkbZhTuoMic^LNH6EL0B57COdHGx<&}A-_Yzoi+I@(3>6$3P4<% zfELoc7**aI=MjjIU#gtoj=q3aCVG*b%&Ijs18x3BPf)gh$GF>kW@X^+_whA22@)n$AND<0f(W>q~%%Y-(S zCW>dyY$xgc{W*;gnY0l&M;pc|ct4Uuy`L&Wi_CpjM#qMswT|m5rzdOYyje7^r-1?P zw^|TpGXk)^YRKZjSq=`z=)tt%3mrh|FERoG{)i@*Wy^c{v=#x}Y|`kcP-h&N&rYX7 zUpZgpa;xPy{?hZ5kyJVDHmDCj2fnjbTR+Dx*XK5ln7uFW%?aY@rJkb+IY*si9+|}15gtpz;@cw#!4MkdO0ti0#fQ4{h1(Zp z&T)Oxn+$$ z@^m2Mky5Z68>Ako*3eX>NjX;6L~|tSfI~a;nR_Mt>*7}@5KI_h%|8{{yUlla?uQ2Qjzna(Sto@NQ)F|-(mznZu7 zbq@I#S}NMV>7>Fi@=Q0aRQ4y!_RuXCTe-frp|!}LuCdQg*?l`O4BE!hulz|p0z;`A z`x}}76T_P+x$m@|%cM+6DbkhKdJ$hv$sO^?UhYigpKtsyYv0iq@Ca*ABfa2UZ_^{k z(Htn7I#`z`oUxq=-(xnp>8ZTqF_-tz-Z+&4>2ygm3ApdGOASY|SBLrc@2&Uf4bKG;dlkC$5p2(b6qDdmYl@>`-KVay4(XT1>7#iy|7|#l zwnkd(#Ymg#<|BDGI=`e{obodMuI6;qkl*Bdmns4J)`q;H|7+r&tQet%YUVY+?X7)j z?=74*bHx|LgFTv2>KV8#^WXe!y?2vbAT8dclVzR>xR$rHX zeq3{x)6q%luWPaufMXoG{(j<{{mSUKw!^wI;m0KhD`WVw!@O2AoI7;S%g5C_l!!|# zTDW#9iv?ZX!-GX+ z3}v1I6RPD77lsDBR>y41f~-Cj^1#XAo9Zb|&+J5vgJ+6wtT!;`qKFJ^$y~DlPtwK` z_RF?H?$XjkjwA)LpPmB+^c0nk;A~R$TrJQpSMc&o8dvH!qEdhF)M2irJ=u!SeAW5U zZPjp~5!e=X>&d%%eW=MSAc)jQ(pbWCUN$l}PXwdg$|XhZ&C(oFFHeuvqaOPDQ7hrN z%eGr~qNF_E_Iy224~Qh47`5~ek9xA4MlbA7_|3=_htC7t?KqRk}_8OAP;4%kc%HXpduY3Py$#!z&XX<#O4r3x2?aO^<7n;UMI~+2cdfFG zTX7kpJ^Oyw)UMB2|CrnLZ{}j+jfy9bA?v$4MHE>LZ08xw8NzLWohVz`VRFMK4MM|9hOm@z$i=2tn-Hb zq>Kq(-*mY#Z#upOM{xN2nJtJnwQ-H%!d5YRJF)L_Y`)U~t!c7P<>Wsq&D>n``e8ph z_Ea=ayLV|CPs#;W0rRVg9%xGyk{cU!RJX1z%Jc@4aw1d9$tF7`$v^m3Eg+qeLX$&| z;P!FD(>396elZhjT9-_m9`|@u>O1Ij8~j_XX`0)q@3DOi}>&B`@idFh3$)Nj(wD@R~%=K_l@7W9r(!1 zZ*{AA&VS$64fVjBNV9$-%akw1z0CAK*~6}t)}P~RYh`BkIrfVr?`s%o{|44Z&YP0<0Ke zLA_-+^Lh_t`jOL1T{@hd%DbEz37$J<6T1TK9 zL-%c3GJ7Je`?j>91<@P)4_;OE+-e=!Pnl``d{>QC_Hf1uT5GaLC%s4cMcSTR+y!Up zw9#snW=sGg}8>1f9C_^GQ5g8X|=--o+*VkOD$y&NTwRwyz&@$ zs=cUqRwhd|XywXP_SM!-uSk)GUS{>J4P1#rfOh*zm)H~SBdBn z>@COHI_3krv`g#wZkw&nKR&{R!AmP?n5(%%ns`jktF??FC)V99eP(GB(4HlbxQkZw zz!$t{qjYf?pM3*^VNz09}bHMsY6VFUk-j zk^0dv&WW5(pV9#mjr(i`-j`F%75?=4u4rDb`@!45EqL0%`Gjvx|L|FKJX86n@h)ODASq)%#R(!_V--+)xWNSU#|A%hO>|jC zWQ(6CEMe+!WOedhmm1{>zpy&t!MQT&Hqce*dy8hn`gct&9&nhESfQnKi%d~(hTG%8 zyW~PdM0q}(@;Le_o%6Ea8_#pOq;N);b#$vl6&K)c)?r#q$$gE0dFL0c_fQZt9|k(e zHkY7g@Rl-NntE@)Fg5>QEkg{auGc}YO6~>c{h4W8TlV;?Ja+H?VcZc0zKiQ_eiGF zwP!bZ-BjKOTS2$2mYHou9GHF7>0u`ttfq8p3|*>@a>)`i>x`H)*D#tZ9byDEfgj>o zm#sxwN^XXIz8F+X3_|PysJjcm1P(xgqS5H}t**nxvbP2bZ--{E7q}&oIX5&8`ke49 zquI~QyjYX-AAm-5>H1ag{vpbzjVEQ7fT2%a;_15A=tbxxmyoqlI ze<(fl40cdcj5_lTmE(uUcd6J7?SOEv$DXs;i}%FFPHs zX&a?4G4?F9FZ&ogY$1C$dY!4IcHF;<78*38z_{Ek)Rn#5tld^uAIFBLCtF6Eur?NU zts+Y^#;i*f#WLfR!bjKTs0XQG94|YvOfP$eG|3KX1 z2Ua|8)>Pha&p>uRMg>pnt*=%F*tIg{qI0l7ysA%hMEB)oI2h87ZybrmiR5jEd+tD4 z>-WP9yHe%^YvhY?T(Q@NskQHNI!A;aj(%Q-mGg0=27OEYuXOVbP1s5q&v#27&0iN+ z+0ANa>zF%rc@Z;bY#&FCG{4g*z3K+3BicrSRwE)pkoGF2HALG!)Lv+!BHa9 zZGpDB`gGR?F3QU&Im~x{>*`lDz>Y8jJh6V<_q=&5+GxNdYjs1KZ06(YuoV;>@?(#( zjU>MZYUA%q<=<&vr*4^FB(;)1qd&3g4oKPn7&e+>3O7?^mDxVb59-ObhKN6`fP@NOxmH7$9x%?n^u5m2=f2l1t?PB1g8~Hc*$g$jH!Hqi zsO$3V+^*J(vrEjXzn|kee_j23?(F*e5<~sEd6C)m?!KYlqj~75qDiS)^RPVN@pvA( z^z-BPx}NH`$G#^+4>iVImt7l0Pz=5O;P?_<{qG-NYG~{1mIL&YvUI_K`(qQjZSW&M!DoDSHEd z!DDt9^Xg-k^KDe~8Rm{ldAic)TAxShl2uv1XLXoA#dBrOWc&->?uorR(mHlx6eH_S z>x+y94+>g$XT^Qi*M3mH^)cY!2b#r{cIF zDfp+_1naR7IT<$F9MUG*9MX?z6U?$LI%Aw2G`n@UE;g)7oq%zda}12}892sf=6Emm zFlv}M@E^@V;)N+v@EFP6mR~}jG`+!(@;h{%eD;mcHA-Linr7cd7(MD!TXzDJL%R(- zA~mjWMVnC4V57x3oz{yuM9d0T19JAig-=o*M_U5aVeFRV8K=?m)B3l^G|QEbR|g368W)_p`K&AFQcOC1nH`IY^uzi_3YCbM z&Kc`-7)Pfue>S$08wY7^Q{RNfI1yc%^#8_hKE5A415$r-oF5*itBzaXMC8;#$J}+I zob=>I4^_Vy(MYFVNaJi}n{MG*PtPUwJ4(dX9r#`9YEPCyW1Yc!KANm4{n}n}>FN{J z*;fl4dVi*+PPF#b6V*;U2D8pg6KOnIer6A9bU(6<8qf;fTraZCvM$Tdt{1I>wJ>zv zyx@nvAK%}}@-yp=^Xn`?xR4FW*#iqvE0758hO7mM{M>F7>$MFO$*R zjoUY9mMi1$cZEOJH)fXp8Lc5*?bY~mTANu~u^-3HQ&*?Fyp5-J>F*ym6J43h<1z`= zu7vEGw2ddZ+%Qug9|+g6wAX^3Q_9c8^vlQt%8t2u*W#6C75*8z>HED6aX;qHHcD6H zwN@kahenPjY)fNiFF)vO9ormTz4BPInhKxZ3ZDEtI1u~?SzLble^S(2oq+knG}{HU z96e=I0f4|l$5mj2SXpolKG={tFc&?HytT+-CJ63*bpyq~`G2ProQ61p2!UtV$&T91 zaySE>k8!paLt^=uTLr!GAx%PG3iyeJ_kaKYcX;Jj3j*MV=F!*Jus)NQJ&vb@vwhe> zm{JGumR~tCpuffNXMFv9LD-3%XPuI^moycQeL!-e%}_TQGFOc<#T%NcJkLAtT|on2 zTG7m=r_tZrZ^Ps!I@R>&-ZKRZtYs1pg;wyqUMuJrcW@v3@1=6^4fw9PcCnYgaOAP+ z!dH87+X{UH%F>E&J=9;$C1uny zHw6U~5fB1??(ujY^Qx;S`qulOd}(3%cHA?_4H&c=lTE-TLz55^-($m9Ig70SR$ge& z8=QXz^ndyn5U{^NlI3DkJrj~Qrp*P2Fo5z>JsKW!82|zEZb)NeLA_fu>B9LGP9@x_q23UyR4- z!(rmOp?Cg97X|%|983riOf`+|B#1=sUJB{TDHJ~p10bSsJRJk<#hG*om3QFAy4y>~ zhNtT9L%IDIS6>n>i-C+6l&f1xbVM~|o(m?RIYbgYc?T8zs`|i)`G%QNee*2n5KLgi z_dL>T8=GTDtcuwz2nL2QtfdmdHP2UL6ghLqoFpHYHBOZi1TjRw*2TmG4$gk1e;X3S zHYLH`a)JBt?&|>5B^klDRA0l5w>B0uik=cYtL?HN&uTxLzz?SE@iW(rtaJAJ881Km zAFV<2r}5|T9ja_M9W#k(XG}KTI5mW|sP0>g(w#}fV_G3kQ~`J=J`bW_nLtk$Y38cQ zdCCtxdNWu@ivZ9!A^Fb*OQ3w6c2D-K8jM;HrmvkWTRkj$Ff$F)i0Jmd9?F95Pdvl@#9#~>OvQ@0bFbxIzM2sC}LvSqi^JLcNTNI2vsK|_lnmo7s(r=3j*V7mZ9(qTcOy%62uhfgi zWmd(EGfnzch13XmV2@zX(fy z5tjUN-ypx-Em%%b{_mv}P@CT0@l&RM7hg-n>q>L}E5AJuoY6mRIh&*9Y?-fF(3v_B zu)x)P&)01m+;S4NlH?Z|i77)-1Y|SpI^_u?nk+jGE zUaYBSzNqe)41ce?)qh!Fth5MACa|7%5t=~MB$xUKL_I)K2Vd|$$)dokavHMa+Y}b% z!#OgcUQmCqO?(&U;0b=EXSy{C_1_{5L^Np>vGrk*FClLhsr~p z$RI&B4`=Q7mHt>?PNv{a2EOzU%B7bq=DL3?N@*9;l@IT#UtsQ@bUvP7uLo*%Cl>pB z#Fa*+?XX@jMnu3|1{FX@BY_3r7F+Z76*3N;murudVjA12AyGC6cAGq2E9`RYx%h%v;1x34)+%8o^S8U0H8j5^_!UeJ4}+M#~onMyG#+BzP$ zCND-zNa*_;C_J`V7!?$!>JpTV9?rp%Ws?t2aeJ=OoT)A902PmQCHkU#hEcsMasKS;jP(llef~D1B zD+-ETXiCr)B#>=`@lB=!^YjCmeA zW9M<6aS|u7Q~Ceaf3LgtKKEQcteP3Gyl3t8{l4q{S|59DKEwvzEkD6}8KvTQvzY6b zg3El7UG^>E6lai$Vgoss<}Sv?BXb2=UUG-Z-X|%Fx?rTH8AS{HfYJAq27bXIx=%ep zv-7%7*|BpzoV!J`?u&x0Ze6OZ|E=#w=8psC;{+!9|^4Xv>n(Uzon zs+^tsnbNg#jFYFbC9J2w&*(6m9bd`KIO1+IqrYGAt3-if>(Ld@c4HYMf155*hU_{S zOQg|#^kmc{M-Fi1pxjPT*%tFR)h1FrPigih9+r0Ji5FVu2djUPTshMTEfn{?>IxMcc>axuwZ%pwgo2kx^bxGkh78{~ygkF#A}Mun2z__JQf z`jA1!G>&7D3awJ9g;CZkUV5b->xj-lD$st>Z^*7)saSL#n-I>QbkK5@dN^n=>MB`I zeHsx5+=~s5hHd#>xz7M?6MosXt#TsCo-9Gx1Mpa!L0T$}K;4dkMp6zl+*Z zdi-u)wcuz6T+uwKGriyyyxOup_^P-R&-bf=1CXNI^~a~0=Vft5l8wo-%HZ!?PzFR+ z*bG;zU&9g|8rCsPU|2VH!fc4@Lj*BYs2PhuQawydaJH!t!X$$q-(pV2EfR}efLPOS zYS>{Pv%OsK@5Nl@VJp{7k6S5atC}blW@^Zqgw1beqwLIvYVpAVVTC{!*RhPJ2OYKN zKC_GH^{puGK9>_sDinfJP{ZzfY(*~3MDDPoURG}~d~y|jFnZgVIC66?-?^8oZtp;B z`$hC;M%h#|B3nb>alpcA+N@?pK%VBMaZTYCwlXnLfyu|VoZnD1uyCmPrt)~g0bcAb zE1t+D)D_i8*$_%KUcX%LmaUWXgGr3ji2j@tnRGO(%kq|Ec5&oXiBPOR0 zs5VboVvjw3sL-=cyVm3En{(jxq!f6A6ctuf3e6j-(X^X)$&LBXrn;x72;|e76%UXy zAE{(CEf01~+11)CI?oFIK;A9ck7Siiv3DyqVi&HUlkv#jILls1L#FPgoWt2`Z#vCtYmYp!FHTpoJGc;Oxr zE*jQMcMK(&CPn>U?LGX|TdyRpnBpWz?3}VllYPg(!CmdMsZrzV& zO%^GGWk7$9W^W?xu{Lv+m#?pQJZU{+A2Ho%#b!O@k--kw?t&xb zw7k*M=A6AvPqy454#Rob9KBV#LW_QDI~@LxAnYEp$&5Bv%WNWw-m=OI|VJh ze!V!B9$T{dB{6Xk0sFQ|6yU_$Bf;f_N_KUv%i~CSOn1sD;V+w2Y_V8JoY1(f?E3Q9 znNQ#h>?ho1i5sm)*}&-Slw~+hL>>tJw+z}wEp75>Jh@38&T7%%I=NrT4Z{vZXWuC- z>V7q>KF`m7RW?QcCNI?#<~GqT)uh<2i?o2NNzM4Bd42uLrTD)1{Hyt-gwk%&bx~7s zEnfQnj#ji|+JZE}t1Mf^Q<{1y2 zVyDuvG;u+I={Ac;UPul3=a%z>4;q7>w#YplFP0I+*1%P36!wl$sBK2sZ*0*&O~OWE zv0Am6dyUC@@fZGAJi`&{z9RONHoU;qs;41uc(1mZR%=6@TSA}lU|H~k7NJDTevK@# zUetu%ESErkQT!XNFmfNEPO&AVB7Wl_l+_ewBsH4LmfIXr$M6Wc+~^}7TD+QEX+q|0 zfk;OvjK=(KzUYVU38k(&|59j(P-d7D%RL&kjbS{_mVdbRnPqP9NUjlX_!ZmSgC>qC z)3GVXi=su!mB%jNtn=(;>Tb|;T&gHY>5a|#c-|??V0{l)@}?Bt$V*Um7?q5=fig`is$~X>O8*6aLm&wy@|<&wH_*TMF%GOUhi4wB0#N>NbHQ zC)}*3$BQ*LQT?3tUD2911|+X&>&>OQTjxc$<1yItPE^jWZJqy|eY(1JId4*+C($1) zAn!Pj-WBIyC2Z!FDVbI@TH@X$r7iO`N$IF`Y05Wh4|7eIG}}2S(A3AZVf^q53S;t( z8-gxoD|$fkwz;rP5tp)xJX@mJ{8S@jh)gp3AGQB8Or_{qGiF8ogHLldnNPBH!P35- zdgp9U2P1sOY({9msqDd5;>A$~#i;t3xk!Lt_sr;y-zu0U~J%?x!dolBj7V(KEx-6DSa zQc-xPP8Bliusq;{c+RDAGic?kIaC8$Xn(SqNgln5 z7UzF)ZY;gg9k=7SlXy+=gFSbhC+s;IoXxbQWjzZ07`5dNtA{t+qv?V*ZGR})a`m5y=moK z-<4*Lpf$8H%k)q7;4&o4Z{)Miy=rfkrl(0W(eiPR=%WFpPPtw8m`MuJX z%`J|o_g~JEdqy$${ed4@gNg_CaKQ*%QkbZf4Y=>k9 zTN`|UtBScdmHYupC+mMtDx-rUMQ(_zjO8<+*?jNurTWV&bZ|(KZXEGS>v!qAD!olB zepz2RS5xYYa%#DSKpp9)E5!#K%ezSj;YRkcT;{u?Tk|Sgc3p9t@X6w;Bm9M2u@Xf+ zXpnLbHHK5MN{j|~ZQ#e^0|X7&SN0@|$M{w5iu0G9Y)NbR#81M@f$n8KhhHC1d^VGk zt@A{V%x1B-gs+G#*(R=H6&~u^o_aM;8_7$GbSl#|Y7E+p6i%&XmlsQxy^*-9i>D&0 zTwJDE^a-=3Rk;!VS6Eqz>pDdlFOCR%GQoe9*HiSAb6cmQXRWk}b!(jK?Un|HI@Vh3 zmTI+q;Y!gidb@E}<5?l?Zz=24SbY^G#}`3k=43blownM!0o{57?^QZZM` zdh>@qg`&kH(Re&Xee+nLAQWO1gn3uwQu^lHWeKn@dsyBDd|jaWRU9MSshJA&z_YiP zif`jS#QM{F9oej6nU%x6WjC+5BanTk)hZA^z;?As-?5T zWq7zJ&m*#?#2I zCBBD{4gSNTzAz8LZ=ht)18$A)l${ScbR;#mqtFTKUhhjp4eE4u&sy_ud@Z6(V3+bs zm5|@|;-0|!=6Q2sBpNAv(-YZ<>2A~HD5t=g*(`>ZK?Hx_{T=mgwDecPzmvf#+Sq$U zc!n&y$r_2ZmRPr?Id>6SS>tZ&k z7g9T}WKXSQVRlviT1Oe*VaoK4qy_!tjF@bE2iA{TfcU^!$5p^f=vR8NfD-foVQo&c z-bUKA#?)6Xhv@UV12b>=e!8cT@$=#NB=A_rFz*;o>B1;oJ{oo4Oy8t$Um}}P91~ix zj-~aSLv&}5aY*Bptz>l}o;8Z+15rcFnUMrWg&K+~l4nkVMf+d5gqy13Ii<~7y-7!6 zGkwn>J*`u1=nsyO)0=D{?Mla5v3;EHDe|QI5oZp_E7YP_+00h;uUBdz&vMUaiaGIZ z24oXFqS5C}II&`mMf;BW!MN{}-A zjMOd?j_yh?wx6|?v+O~9={kR4-u&_-noc`CA_|ue_FIOnQ9PqWAK3MfW(|A7=F8E> zp0)Sl`HJS_&Dq?@7tu%bYmo2@_MKl|ddy#W)b}zr=uFLO`TjTREX_BS=Suyq_is0+ z!ImqWX@?-Bj2)0Cx?ZsxLfkc~E9JpA)Ug zFD}nz%G?HxvK#M^Hn>f_a?k7m7i-{6RD2Ip6uI=ABFQc<31k=JYcLD)>Fs$@JB;@} z2l{shE2*`jb_+2R%bMSD*4Vc4+`g)kWA2gtK|6S^5&baMaKEp1d574qrJ{@Q-{w>RGMqluIC?gRh96FujHZt}O~bLeY1cN#uMiE#PfW9*d3rTsyK2fx zaXS^WNj+`$i-v2MYg%J(@!)73iaRu-AHtZs+^u1-)6Cx)|4cXEu?EB1Cv+fIntCd7 z;`~h%&{uAgtr{M?J~S&OT2evxt%7gzju;6joL#m<(Ap56W|Z=>$`QMH3UO--w|=KM z&g*?&oJEh5KVr&Cc1FbK)SZqu1lMhC-R~=k)^M%rX4Pj?*ga&X6kpIp60&cfU*4!$ zi#Cu~uuO04NVB~i?KRQcHDb|!2|ZZdx(8pP#inaZ(7R9yTb*WzqqR0XZ=E`zQt&6T zzFHyHI>RpE?y?0h)>Om_t!T7Ay_$40@paenk-@dooBw@w$}_qB$?_r5!JH z3D!4anLUW-(5z+o`U(Ds*Jxs1%GtiTHFFxdSY0W4!(dpZUUtt)MrW#gXpOydS4nLngR4#RWRtaB;f_6xcJ$g}b!2AY3 znD?4}=wg4MA#{i*YPsYpyQf?O+(T{X16oS7iOW5yMmRA&`5g=veXK7Z536ih-|_-Y zU~y&<=mnv+h%gZp|mQ-AXU*E@DM>-eKaV;8A`ztgPSz$Zsmd{Z`1Q z^Bpz&X=rD>5B2nNaPORU6aBI$ZPOdPfNaLdxF)JhMc;2$Uax5t`gZwfvrPOp)>p2G9_9RV z=Zx#_;Z24s&Yk}^)dDk0zJGa(H1h`W3Q}LV@n%c&2?9oy6{bhTJ6HnzQamkU;I~H< zh8yMux^kZ2{*ZsJ;>a^!>8S>%RmPDk>XNLFd}+^ruJSV@ffsgWm0H;g6_;owB+j=P zO|Ni0s8Y7_$}y{$!!qI%7tU?zQNAnSF>9%KB7+;UTh=+5^(1JuJDhBnOsG~Q`+tK8fm6EL6SuzKCEA96%%^V`f!}q z-)xDA1+OBNePNyL7`LVt)~3djmoJSIFS)v7jh@_hv?UVj6*4?`-ApI^yNh zcF?uxeMCPl_?F#KA7q*VffJa+Tc#jfoYm0$aV7O0(Y!fEI;>_&dcByLS2ixjFaybS zC%v_>IjFo=MES%)IgKwX#=yOC9r2#f7jtiC4uMokBq=FZmh8z)MV&#R$v2|Dz_E-*^f=+R5w*3C~}O~#7Z@)YXP_sgOFBdR-C&OYP_T6)wiM{%DQKLZX({90&FUz91Q zv8uvqMXIr>wm!HIdl4^qf!4zq=3fJ_-#|&EN?){YiXYA|pTssI+J)f~BT|OT%=nGK zCG4io&hE;7BU`39$Jca{Zkg=;*SOMDXPvQi;zqsuME%htg$8IN=9cgveynF;wpzqG z{i~ATuPQywk@2d_Cr84Xw$4iM4rqRV+_<==!9IKX?rOMO?%Lv-<(zOC8z&W6t7Pvm zhP{62c-Am06PcmmkFrw&R(R9QWDCy|s95${HcSW~aTc9^GshO6&pE+Br zm+%i3+di~rQ8Px%>;5Xo{O;`RdHUsP#Wh*w*B28a)vY_(rHHfOtZSq2yF%wZzo~wB zCy0GAS-o(BK=IA-;!M}`o$|{sDU%%mo<(?{fGJKKxrWaXOI_cR=hR_p7gL z`p0wY!Lztyq0W`wCmi8#v_Eql)+DhK)Sl!YkEXan5a)RG-4bC+1zEZl+ITLCM}&9G z%n@lyGo2_=NRm%+WH&L&o5N|`MLN67YWiILE|3IlR%o-Hm*|FzeyGsAA4W;1r#i6GA1h*(JUj7pOTdWZ4`PT?ut&|0-i`F(N zrm~uS+$E}oUMx|LxuJyx3R7xfNWlxfPfrghj-2T8YeRpp*7HLB=}hu!YQ9?W_p7Z% z`kNb`t_kfg3~ASd@>eO(7KJE9c#(b=DTZC)YgD$f8r-f_ENjm9slK`D4KYxMvI`WZ zpI0kH9JR0$4RseQFBGI-mDNxZul7pCyHA|BdO&&SDh`~e9Xe5pIv0gHxO91;T3V>I z`&0)MU#Q*p*`xnPo?qh7{mKi3;x0a<*uw|N-)J|GT0 zqJDY_J)!X8&?m~lU2q8fr^nEmQnUzl;D$~5gWKT?ax>cGq<@=L(`K~+&tIG8nXB4p z#eHH1YHkHLu%jo`VJT5Lfe?XC=X3so>4~oKs(cwk-c9v zSW1yj|CWk#tL4otY#$OS!j+913TJu zPr!jX(T>zWDzXnJp+V3-n?r4t)e97lEW^7C!Z^b%a6WRsL@lE!p*Z>zih()QTB7g+ zstMHPs*Az8FkvTR)LQx!!Ie+48_Tf#KW!T7)FH#*kL!pl#zzcaJBUd z^&kP1_ZV5fz$fTR#)I)gV$n~Of^xJ$DfB911D&Cb^*FSEPK?w8Y8S~vXHpWXFm`Y~ zPmGTx7}_)9aG32Kt)Z{cerPdt(^dM14Fn@NlXN)VGK{psjkXPN2HM%!VM*Xjcmuvf zg23KfVID{37)yGGv|t~=list6L+{{n`UxLfcOWaYWnM)WAkXw3?w}_6O&!PxdX+dd z4g5o&C=CW+XmT9<=DoIvp$gZXNl0eP2gMW~m)di^=x zFq4gAjey>Svx;NWQ&x*>7Q?H$S`UeNS%>z{WTg32UZdFTj^Zx<9ic3^ z@m|$PJd5*t>SM+_%ISb5qYrYcnj_C>A6D-_BA@6JI28;%J7)EBxzdmquPB1)mhkS7 zS6Aod?+V9#0kZ*G<`MPO`wEr2f1dj9)X6a4cE+lJ@{<6G5Z770J(@j55zqsAgG8XE(@#m@Q+rsa0 z_emBPtMAzit0$hD;A?nxkGF>xz#M}({6;(?tTZbRSa&>Qyh{9_=p$nLnPGUYjAy-B zCGZ09J4nS>vX^m{a^X>4sb4%3`~`d&JV38Apc?VL=p9Ou5FQBj9;wCKxLRSnJ7!AE zhFKlJs{Sv|G^HQ%ik<)#GN_fKfVtAaMb1++h zrpzE%MS)&;bIduQIO7P_3DGyo!$t5Ny<;_kH3vLq&s%8)pBayn{CMb|5iqyHKc&~K zkwAMqML3f@m|JG(@DKAzXaHy8MN&7dGEU5QJfpyy3Ie7JjM=h7oVT8 zqc8BPSG6dGCmy+gdMMBA*()n>8eTK2BKW8H+4KO;M2=_=-eH`WKSN9C#OQ%1ePoQm z6ADoma^sm2<={+K2H+R4q7<^qIKU4`uE!G|19$q!$gvJZ+tvWgEubJZpbf}j@11dh zVsJFQGbh4h)Jz@lGbQK)KE7*W-U4;tI9i1-s57p$z@yA(T_@5EcR)j9gbXuF0ZTa0 zt1M8QH855O;1JI+V=np$FCrg|C-V*FK3*?o#fsShlI0l%qY00a%ky96pYWt>f-jkq zTB|X~VQrStH*Z-Ip$T+^&gdeqpfT5T@8BA0M|R*O%j-Mm*^*J6=c~w3U=V>6>50cI}u<8 zw;(NW1TuhM0CnJE+a_~1{e-LNJro09^c!QuNSbE!iE*-IM|(#a*m)()5(LdH0p=+9 z3|j^lvThB<@j|>xP9C_3UNYk7Y4bfJZdpVdn$DDhX6Q_8u%#M}kB0zu^c`Id7r;mK zi8M65u_J_J!nbfUHKH?(9W+6kQ=Ty8(L&}YY>Y=1?L)0l0__MlTY_2Zht^1*#|aIF zeX?yb#^yS>4b28GVf~S1{Mz(x~Y>K(XK~5guY}1842til4ZLC zo?wTB5<^XBR=CJ}g@n+M&=z?@e$e#x3%v4=?t*r)6wlT#_89G9z_*MvTmrSdW<|g0 z6M4K#f?UxP@Bi4|#T9<&i=~7!&^72=q#i4P4naRzUtr0}Ys*Q`;b-^(-U3f3MNLQ_ z9KhN#)bQ%MDGv8w<>3wF-r5_AQ4@NJe$r#G0~baaPC$bo+tzgEdhd!@1JSzuO#9%} zjs}C{u?<*C+Q1rMU!b&o6-JeMZTo2-J&M-^1?)A!GnPvD3m)`-4Shl)(Y|<2U~K&X zC2U2I7G%;Z$H<(m1R4n{(KecZvGr^N9I*k61^h$*;Q>PSg9w@b?1`aqtij=FsBG;E z_UI?#@b}y&BsBUzPzS#R9cyW^E{0pchhD=4eu9F;k(YefM`RhxO-<-(@PYP7DD+1+ zG1^duxfGJaNWulkDcFH4oC!_Pj+BQBNrhj~pGdN;861IDp;g9}eC8cS$NXSPr=QRT zd4x0JJNFQKL48OWHkk2*{$OXzjYV<@e}PfNL&9>?Cu&7Xyc*1}y+d>-^rx&T4kfXT z)|5~hi$XuB6Z?%Vg1byxqz8)IGo&}(eX|{~F0g)O6yZQyDe}Xw_AJm))}P*gfQpQR ztt3(i?a)+6H9cXBylNkHCjGGWB?n^%PK=9n3Ybu%?JXf}JUSD47*BdcKNxR(33!^> z29_6IMz=@Hj~y^SnaiOL)PS=njnC&jFLW}a?_C4zljkk=nixm=2xp^Z8AV3W{tNmJ zs=;TpLvN8oxPbDsfi$3%NXNP`c3=U;;UBLYz|)>dGk)+G7LEM}1vB z4yzMo1lprB&=B75F$Z8Dkvr17mthZuUNd^|1F}W$;GJk!=>>KO{b25dx7;WEA8NtQ zQi^_46TLIVnC;+8pbNka4NY!)Z%Dj%q2LYcE$ECzGo9cN+Z$vbNpL^mEL%I|EZSgN z@Ej35kai^0YbajxfQtx0QAQD(GZN?*Gzx#v2@eLT!1`H(Al+yUw{MS=@g#>SjvfXN zEC;?Zzn}E_?`N+}~2rUrZ(mVZbal(YYWze$LmV?p3KsEdD#?(^O@{k81?C$P6xFuySN<~eFdkI)l13O)j7 zbTc{=+r(%w$3R9IRk#Jq2hPw5Y#is3V1f0veu9cVmjFNEzrx4R8QCPn$XUPP?|D~| zIT8Acyz~LhLXYt?(bZlli!(6BgqoWx15qn=;#DAb9q;`RCpd+Mo;KVq#bm?W5Gti zdw4eJOt1V9kKYFGG17$K0VEP0hu@(XRASx$SCWcFhyHjy@DE&LPo4H@2`)lP?P0)$ zw!u&c8wC$A!ssICi?rY^Azx4wn!1-z2diVdZvA1c0*^y8HsfTi;NIJlFlT{{#}56-sNxet zUD~tGMWVs!oBSk{6qsTI&!N@UUZWV2h zw0M@|Ih*NBKhRXjr}Z#;2%AVdNS1kt9zYdz6jloVj4?&SlNTN!H@ssWL_c6DEdlnA zpav9&2f>d%(Np*xX)_nYhx884rgdy^IcpR;535K8O7j+@^@R@5u z2VwQFJz#>=fH^fGrRWzp#!r+L#fn$&+dP0h8XXMa{jDme< z_}r_xj3d%wTEMYT)c!cQn)dLRDURi#COl8tgqz?oxCq(7SFtv=MTE}CGjX<|&;!my zKM{u}U=-*ra)zzp*?s|i#|m20VrA@wgPq3?-^`vE{eZK)>P)@H04}gqq6J%ia)G&} zg^{(ixu4LU5OxGSpbB`SebJiuD`*8uq5C|ewuXlG^cG(R?C>mT(>51r$LGX5q*mmD zv8N}D2>GB6<&j0`Y(EXIrbkF0v_lueUtos>B1`rREVnL&UvAE3%*_vxc4%nNhQS5> z1fAeu`$}#f8AfiXn-R8Mw++TuHRsRHLI!rBUIS=!)JD26701ECmv!+0RA^u`iN@6nv>w;7SY zjXj>w7`|k70v~`0{q~Lo((BPh=c0G);V{DXsn9q0^YA^qNnf#B$Se8|io>tuGuDhf zmfP6jd)s5AKh`vG1~vyP;8_Z~i<(Sb`wgB!(RW4^ibHeg%($_>XD<}#N0YFIKo}aD zGp*g@-UuU)G=T}+LkK_9oPi}rM)0_x7P`RN7YRo%QU+du&d3FQg6H9BMvStgf)|<+ zs(GCW8An>6Ai1p}pc8hL9$S|{Q(Gx}GI6B}4Gs;FHOgY|kYCzkG$_x=TYEw$XvQdD zZSjd1HS~+;_;3~ehaD1n~|mW(LehrL8! z*<;10vR?pBwuVTkbCQDeGVa(rv>N!K+u&KW8u}MZz=LsR6lt9hyo$Wg8Wt4Z!gsb- zLH~mt(gmHN7a!k3Ch%a) zljc17<=F<_4n8QF5sK3;J)!s3o@hh-JLw&;mhaTrfV z)4hv+8}x&xsD)8r-hxd9ZzL3HhjZPA=b9klQGKfriF33p4 zSrvYgH6`ir2-=kzkbn9IMU5Twi~hB(oabL~0UFFcIwR%vAE;>Uip2y&utL*$CS@BB ze=_#=Xwd+knII!@7PN!cpf+?uufVfNAaueqcur^!1Mk>A8Cn``1?|vzgzz}5t+6W9 z1V-=^de<~YO5g%G-9DlHRmKi!w+)3B_D+})5RX@fMX=??e&Xw4N9=!?chDG?MaBo6 zMZ1=NMwWEA6wU-U?2EYq$wGTG4%P~cv;91{lMtE)$wm5@FF-l^geA8OVj-+I&`^|$ z-Vn4;vWWcI@}pzn89X5SD)b6n1b@=1H7L3u#xd5=7L5!KBU#WDzVv()E}&2Lbg-C| zN6$eWD2}D}h*=L)BXsikp=se=v@a40weiT21p0*hQj=|{d5pTD9UR8!A_riGEoZz~ zVa%9E#6WQ<2G>AITePHe(Y5AQ`eECG)W9`p4tya>qE*mMrZ?qj725=tdhFmGC`Kw6 zBO~w>vV+9IQ`nu#&H0nxh~1DsgMLge zv&pN&Iqq_fY;f<$VjQXEa@BaKl#fgLwa`bx@x+lYYjRZrM^^7DHNmmkc#Xl`O66Fi zk7N53a(?mC+R+crJ~{%W=DwL|=`elv#D7S9vd4art+yJm{%}Nir|9yi7!;w^3&l;> zRmJn%@!0#hs2E<>ow+_7JmuAWMv7y|4~G%+asH5J26?ywW7Hh_B#aMS=bvUD7Z3J_ z@|Vn&81(DqU(H7cPF^a*OKcl?Yya zMlN{uo(n_xb)Ru7<16pHV9l7t*CYC+JW}7vJxgc#vu|*zzW_7 z*MnTQVz~Xt3C+1vON>Q&xm%yg>4THw>lW)3E?v+w{zk?4Y6xED=7Sq38L(fWdf*(| z;)5G8o^mF{|AWYUhHLZz`l0QLacavF7zT{ds|b z9`hOtuLWd%Denfw`+{lno-Rk2NlQDFn^)|46~%|9i5tEONgtRg=2@p&d6hlCVx=i{ zy;?;D^Gb?dcnOyc_r;luRm1x2%RiWjxq=&Z8k{((=OZv_9PM2Lo?qPJYi_v5|L)?V;34!JTQ-QgJvav(9o+#)ilRGV#&ra-AQ+Ch! zmNrgc=exq9TDK7_D)z(k-l@FFK`6iHc&tMh4r1>UrFHX{ zLfZqq2+{TfAC#tK&#%fuSsIwtufE}5_&OmjP320gvd2Lkt{wJA^jhax7Y^;fPavm!P! zU0=$DO=z>6c$3%V&xn~XuF_TA8u0uj$hl{$D=~Fm+e9WV5IEVdY-+mRDPFk^+leXX zm+Q8Ea&MtYxgIgLKGI$m>pdh#s_G2`NsozxusjESZ+s`Klj8|p1vA1|ydfAI2giPOBm z0T1e8Bo+!;KAoT4sTYyg$d}p1E$8dF@Zd2;kE?%f$DX>)l|M=smF+6!!7KB%$6S|WF5uPEY&B{Ij@zEMZ7yRR zCAwCM{zKU#ujwi=U+3mDd^zgC2(zqMuGg0Y z+FZnICuitGi36b}IK{7D8~Z4KXff)euJkd2?AFu+K0>lwpIr2nQy5m4F@7xZn37-* z-o;n8lPi#2-dg_4`Kcot{Bd)4+*yXvBxX4H_B)ei=iM#B_yuXYS^oY9WNr2)m`3>9 z2@Dza;omUf;cEl&+hP!8gHk<(4`Qub!dQ4=Al21NntKX6=B!vNr^($KJ3IGzH1(ax zl!Ao;D;tIYq9s(!QDcFWx2_E=6FoBzS*+3TUcGQL$~*#+Ts!k%Cczs0+njZ)vlcwE0FAR`%len zAsO^1nc8gaN@0MP2Oed^2`4ny0KIM8qFU#@dTxg7m(eWOM$S0m)CDh{tIjx?3bl=8 z^x+`M-+<>IvG<8@&$q_xj@2#jiIm$SveHB_2jLH*2EFD8?t%xCC4oqsY;|i3FL7RJXZdNp7CzOSgw_N2ugw zIG9KT5&#dQC3h%Xyvrn8Sj^Sxj_MI5rpLOVb~GvJc9hmPU5}DCd{Y2Zit~mf;2L74 z&jwoSfNv=eU;1LqR;o|zo8WXr*^YWdRGEH`nH5^hJ1FsBIg6UE&eiq zwH~+dCtH>c4z=#e8dc2o+4v~`9y&GnWb1C=gu)Gc>Gj`BNA7CfkMkcDJbA?$b%68u#RHV5!w$i-rp3I=l77kY2YhX;k3C@g+$EG^$6gl^HG1EFdL3Nzm za3%c@Tg`YdAv;wTw#{alwdYHM$}RcoelA;r zy|atq7CY;FDsrwC3OUkJxf-W%G!;?gl&E}YJ6rAv6YCM+>Zw)HWldTlu9%zmqP(k) zhgz%0=9*Wlf9R2B2RgOD)WN%*o)SgF6%BZH9X#nt1$o!$iRqr**EA(;{vcCs5G*m0Al7M>A4C;^%1vqjyI_4dno5W>wBqox%!G&R z!L%aaxB+vDIO~oIU4u9H7tP&*s!{oR0T_xWX)0kc^GE05 zWIhTGNsO|0vyq zhA)W`&?M4;B zEW(~`))ytgUtNLs9}P?3;aib~REz~*1K*TVFH2>a$-3vL8bb4gU8rLg!w+_k4$sb8 zwl&MMhI8f%-#wT*7#y%JTDzi znNB?8nN}+46;4^G?_%mp5<6T@J?K_0dS?zEP8m;1G|g%|)WFEl+d_PeeCaze${9+= zTQv3Du?LJoESR%frq~&j;}8YbA3M5zZo*}tHO8aYIf5GD+d`I%5jf0^&v%>|(~(k=4XjW+b>J16ZeF`17L5W2Ck^3A zOI#@quKC2+)8(qg)+?4{7PU^j zA@rM`?$&o2@g0~xYMp92&XOJUZG}2x?O7j($5_)!x7((+v%b}m08d|Hi9)K5@L*-r zbfiU|`Ne};DLqol8`&!Z_Tf8)x6`6`8=wqUh5Dfw6k4mewEr=$={X&9qnEzj7|$%5 zPc5c2J~l0-zA%YFPu(Jje$$5Z)I0PG-Qq+wdTH5ZXRB#A*Q~SUikrLIQMhEa+C@*K z-VE0v+Bc^aN-i%RvV%jQ4q9|uewQ>{%<6KgxtvR_hc(Q&JzJ=IYB^^i<=TNzD{bK= zZx(&%<2-rKv_^btZ@r$Jo?TG6LVHU_TeX{4S~H%fX^qbm#n!Wh7g{pY+4A)D?=p79 zl-R;NO=zJL9Fq+cbDU4vwK-+thHiG_h1S5`;oct@khDi1A)8yQC-t@1rviOf7IPQ# zaIbQrMyjV(Y<6*3ng_%O=)G)tG57h@9uLcZOVr^2z9_roLhFcq&91-DlIt|5j!E&1N@qfK@U z-D2zWa5xT2iDF#z!LzYZ1KqE^Lu?M-Gp%vj0$;+GtswE&qj|O$_`KZb)|$Lf{yLYB zw&?;(U)8Ghksc2kE$%#L)4wS!;!&|QZo^|b{6z-1uE-^^kHb0TO_u$YM6pC~jpM@6 z^O=8qL~7fx)yd|MUc&s-#H(k?zafmgH*bb}KB7m74x{vFddvZ4(Hl%0oZW(d^r$Qt zi}83={vHM#e{0aZ_(<~#;aFcWuD}d(5sW2_Zq z+ThLRrZ(gkJt}qseS9+$<<<1(Ff(KrUIwHHT6 zD_^tvb+G(gt^ca>E!C-`^T;>1I3lg3Ii3O1s4hHr?i-|=8Ks;LbW(EZ@QbF&ciy2R z?AiC4Ym0P`Ta+9PiQabHj^V2-(Jl~Y-4U%3G5%^TS{u&@c_x;x&SVo~3#s1h5-2q? zKJ-v&tvzJ*e)7`5ORU*M4^6QbQyZMu6kl7avE=LR>=5h(`-$XiiW|Q)_*DK5mGY?6 z{BlemF{Acr#?st7Yb`gbaVF)@CR@tW&HlxG`Zu}`7)@iRd8fE#W%Ky5-fsuIaXY5@i zTen*tKK9Y`0d|U<}P(Z_#uYPa(8RMTUl^=kB*&OL6eJk=5{!nf~6S|xn0A|;XsR`fJE z5{5jmD~ks%EJl^h(XoiHBAs8qMz06k)_NYPem!{M)J>~|&C-At!Q1i*W~txjVGoO5 zje0iIJxgA0Jm1Z3DBgh%y^Z2K6g})@WnC)xTxa3*^5{lyaI}?V^>b9+-R!}{x(4Jq z`4nA2ci%DEIE+>cerK-%`}LAAc)HNHQ7z7B zbufb*xo$3+O~ezkJbRT7|Kb+;?Hqq%p0quik$WXgxh}X5t>^vf!>IaVG;Hjlmscph zOg*huF1`#OVHr4^m1f6<=Vn*^%W0i#iZFg(V(Yj2Q*Gl`XbA(!_ zlU{DEgzt=^400Cj`@s)jMU1)kb=r?FN>_hrcP7tqb+PBIXPL#-7w$dOxQx02!7WWi zi^i>V_S~XfRB5ds#MAxsn$stdkJRVun|m}{b3l%iGE(;|#NOGXvc`OSl$m5Yau^QJ zUa%%h{>6Ir#h#RU`E%4$lC4{t@riS-(c}V(&<|E_My{r*XM=x)8HmfXiFh79yUyh| zi<#;$ZN!v7GM|d(WOdv;B8_*2=WBD}p>P~-zSy``T`_%La4Hy(cy^T2#q+`tJ=~(6 zZ2Dcn$fbU-QvP_1Rl;%!PO>*b{LXa3hu1o93Da{g;`n`c_b;2#Trbo~ub-;samALh znX8n(BP?Ke0_jbhv^}FGrHREsW8qY_bom~pN>{&@Lg#Af^Df0PiTI9wG43iCes#vZ z>(}+HBLQPnZj7eudP%jgpf=yN_shA5!mY(Fx{o^dJ-j#v%Vb?&(;=C!Wm&#Jbbhr| z#uqWtOMBlfABy;Q%|+SFs7PD=USW#Xn(2~FG|h=ejRd++b{zLQ`P~$chL+32-AzgD zHy<;#VPV2hJoC&rF#_4#vQ(WT_Y&Od-QxZGRkmC*EePS0g!eM6Y#S=0+!Vz)y7Ew%2vGDta`t&9==j?c^Eu2pp z{P8WKi4RuuK0|u-{OpaDk6=Z#nhzRtz`1po(0%4PcL#c*0gH#dv%%kOMZ5T76(_1k zQq0<(eKg+E^J_euG)-^3#`gf&A9*;iK9&lleg55L{9^5!HOMcw>S#JZn&|tOh9@2+ z_F?vvmS`WVKHH$47X|MgXvq+e02Htp94YksQRP?89~EiR3u%zXhr84DLz(Ud8_90j z;E!4nqx^CZd;9R^h4MG20TUMLs=(&%R2U}YzjWW=Lq00Ek3 zmke zj| zE()v4T!-U@iNPC>C-R8n?c0%}QZ}pEO|9exuHK=C*LRdoFlG;~5MD?x zI|-gSoPX(&?W3+XtF9fPHqMpiW3HQg{nY{A;m@tT+=}bFc71a&_j7ZjufHh6jk?^H z>pQvO|7-QnUuxl|Xl^a$-s5<`IXCsPipf2|@lIZU1%mr{xoMl$d=ozRD02%lck*(( zGxs(77H6J)pETUX4aL4?-XZQfrX=-pzJlA1x%rseg{gr%m3_B1*l`0jw^cLukGBhR z%d>Am=4NxSg&y2M&CSHzpbe&^aSJnd7ta-r^n_B}Xv|I2{sM`=w*%g^%T3MP%FV6I z+;8vi7jQ#6>j=J+7_(zK`8H+lQ>G2>2k_|#Rsj$=&ym#s-r@NjoY0vKXtGTmQeYok@UjNIl z?7Z%$|Kv}z>fisZjo+HO=)iZ9OPOi_b)E8DK*N?qgslPI3OlMz5TW8yt z&e}kGe^wjl=&w{9TscNJ<97A8>9Mav;kNeKN(ZcL>+EgstRG+0rP@|k>XRr`pVZbl zty=*{Q8NL&)EKU1?sPy zQMfyV$0|g&Y4ygGykGvwpQib#Up;^2Oj~DkoKXY%>rwLT zkUU$-Li^TkH6D_C+B(Oo_*xYlOTo4E{%R_yqUwu|^o*s{+8*_8xYD-HstR7(p6S2# z3ZMQo=pHKD9{FI2UGzQ z0R4b$8N{gHUi-FsS#9sHv_bQ>`hxb(+P+h&Y^DC)t$&;JZ%d%>-C_9K>Wh@S(k2Aj zKyD60qNWvmC2OSX)k&|Wq*r6oF((~MNylQ+2`8OMNhe~`YfgGCCA}7tUU$;#Dd}~| z3%vizd*u0ETX%g|cODoVgohui)OL2jRqu&g>Wg5cYRTwyr{pOnA$*ZHD~^T-roLpYM@|WZ?!E9^n&^}((C%|RhdvtZ*Aq+ zK=<#pQ9~H0mGG)+Q<~!LuI+oXzH3r{cQNYW5UE;2v%(|%)>e-1@2d25gpy*F`W|XZ z&*G~39z;Y*3q%%&77d5C)pylG(|O}mvCCqtnEK%0xE%RjB@7Nu)l-pJgq_lx=c8B3 z2v+q)))=D6qOm!ZA^t_`L|+Hl8i*mm@IbRXwABX>_DblT(8l99=#9MYmRK(u-%siI zq+own=~-1EEZtDNyEdEZ$3ia^p?!~MAT^^@8|bbt>ggX72d_J@Mz=E4q3+PRSI$5= zg%zs-4Mp1G$hQeuv7A_=8_YBPEb7ceadBBD!PR&URQqEf8`IW1L4Vykt`^v(7fzX0 zAL@rL_2cX6Pt>owNYrd=)1V%25UYWBM=i@-NU;wd&3}*NzlZbRSM%Rv`R|GR_qF`@ z^`JT5>!7(Qor3C;2B1E;SAqKA&@>CyUNm=`Mzto{=p;3S$q+_$foQ2%v6Es@&TYMI zIUm#pCihoEi4;RFX}8Ab5tSS;nV&R(`1wDgHN@I4sW-0 zc6D@;J-{~uJRRVfi=<`pTy$6px~) zP7AOf#Yuy`U&9o$Z~v*YS}l3=RZKtf3K~#+Lcx6`1Gjvp4HdJAYKI_H`5=l~N!4QZCUc@wBn1VKbp4wpq1av!4eAa&2XCyWGmGeG}kcw_kmId$pon7rB`|;)s_%6FZ+!X4pdyJ$=>gY)lAMtGyvK zsi#feXjZLWl*!>ecC@djS{?7;aFS%Cw(n$LPfz&Gqg7FetX9Q@3aRW^kySrLD^fPR zhuR#dR(n)yU!FePno5ho>6l8@_Pu_Q9;$skdQdME%p2pmC+i@oO3rG#G_U;SWq?6} zpZ)A-KZGoARVGxXS7jW#`45Y-@04_K{fU6XsrnP*o;JmaAp8u6-joIljP=SK22N9~ zFqD7IQ2wiq&gp~yrY$57DyFs%d!a@ZdYhJiM(AC@d+ndTug4GnP~hFC1y0{D@WxUB zrM?gN0PrE;qsp?%V7pMr+6MuQLzok^YgV9;uoD;r$fqX8XsP($Cv<)j`&-8xpeiv49={vruh6oU=bOf@j)te|f)5y>!L?DZ~Eq{wXoZ7JolH zDnXZTv42`j>USwQB{8W#CSB^JOHvI=A@)KF=>I57Nn#FF-hJ4 zonMra7R98+PFkFj7BifGiCc!7R>gfIpuwy5NK6&((SOz8xapxSIC|t5=hUiXvaMRh z)eGeYCJfhbCa89~uF~asHT^R2%yi|O%5c!k`x^cU{arlKkR$5--61)}R44Xd6dEW* zX}Ub7qAE1aMdzs>ijZDeJ6392Ns6fNpJYdF|CIc9TK?Og|6ZE^&dz`54{qANFGSt_?TR<7?RzJmnd?~()oL65 zrE-w@oiY7ccQ>w(EaLv238tH9n@7lAb$8>#gk*-4z=Yuv6UGHGHQ5y(vra%Q@7p8N z?{BYmPO1j&7F@18QZ?kUU-2*wXOEewDrTM?Gk1m_bZh^co^)$EzzBtKTbCOT>Sn)g zM@4^}k)VO7AcXojz|WZkDXm)(64jnSiH`%s=h?qZ##_w13^x6@U76hQT4R}1V))g1 zigd1n*P%>FRAl|Sc9ohIvgd0qqDL=Tn3&TsOGGPwT7e`^Sq;L0t2ieeqD%PX9U)T_;pY~ zhJF8rkhUskZ9T)V; zUpcM7aRIsEp~9cI!k_SPJU9aS2@jgciRX@oY{!usJ%pc7w4zCZ{1=5aDc}Frglg!? zPk<^9d@I0Hc!>MoLV@CUsv13YcR_CZB$Ww$-7-gbtJMkJ6QoL%kqjaveXs9-H?qsS zLG$f@*X;4Gd`L}dsOjDM-pe(q&>FP?Cs69K*QcdBY6{z=uI@HLG*ef`5=wxgEZ`DG?Jsyh>k|Xjz%Ln8ja{^ zH0HR%!^@WqjfZ%Re1DCXAm-CU?f^#OA3qo>Kb}#fm7PhO zxa;^X6;Q(7CCaJkORv>%BllbyxhK=eJ(x!B!8CFYrjdIvjogE2EOzJa z6$_|ZZI&4q)N`$IuS}G}a@$2fMXl5NRFxWPjSXR?ud#utrQ9vj!h>t8>RI_9_=J9K zpSh?OQWfDkyS1L^I(xh26V=4f$|O#m5ICT*J!j3_Q)nE_pYv7LM!xFW$X8(-`D$w; zUwv&z8wiE=I+L@BfJuO_04@eh0Zaw_65tZRG(aCfW!JSUfSGS>0Bi)@+rB1G-OS@) z;Lt%6WH7L2@WsTz4XyUunQ83lLGr*;GKoV$uScMazZULiTR4d>ie z%(-ni=QbQ&aED4if9S5Ih=22vBsUlId{gK+lO;*FXr4noO63>Xd9|m zi-2LxQ%mX60mohwmGm4|*_H6TrXo@V`HFg6oIY9Ut<);@%EZc~%H+ydDi>F#RHjyb zsWPq7SNY}2jLKIlGb@)?F01@XWmaW&3as@Or z0p_j`O&Hb}Lla_>4cE}5lr$+OO>wCyDQQYfvY(-KJ=Gg*@lf*`WZvB zU19PwhN7P_WS@p@n^<9gY|AdlP;xk5 zP;f!CVl%YVrIw~{EREe*=A>mQX<1BK;iMHQX+=z0<)l?9X;n;G{-E(|1kG#>Y@l+%JbY_}*Z=wL76f zsjX$ExjO^}HHY{E)v$M9cxCsMqpTJ6%4WPJ+aOgb_lBhwSqn^ye)PY#GA3&$)(_gv z&|XGuEvGNSYIG>muH|#3$30GLjkYLNk^Tn%K>DER`R!nwhSLXs(nEvV9aiS>(5Y^W z8#j)hv15Dqk+EZ+wp&f>uj(J~5IZ~^$%1sqmS-|%VeMQr>-BD$y4!eHGV3n05#6Q* zPs4Awnx2;!2C_#)K%>!XcQzu9k#7(~5HXG%k3HfinGB%X2 zjA<>)BA)w`L%BaWl>3`QxnDVy`;|kvUpbWfl|xJO^2_qy75VR~{5M}_7+RMB_2#bR>}l33%kBtoW*vC|S{@GruAzY(UpjZ^tDSr|Y2R&w=`!rpwXOxu~N{bb?j zjYt`n-3Gmew39bh$k5vx5czgAs1h;!qUu>CC~!oH0LzVQ3 zzM7xNkFieh$qI)r%2)ctN})UN2i|YI4^}<3Eup&ihi3?9%v`Ed#8*Qf1YOYhpp9is zJqA9vdTD(26|LY>O-`X6jY#9OoKl}fF4qWX4B5S`4{bIl%X_O2ZFP7n;cX6YBfQ<= z?Sywayp!-Qhnb@7T`6$v9TxU_IX(of+9W6)8Iv*1(-iLNst;*{NzpYU-_WmGmS8*nL#nI|?a3eC&woG4f5T|h z8(&1!blxV~jWoj;IuYYuOGf0i825ULdp*Xzk>cKnai>z;sTg-U#hs3EV&LcpoQZL7 zrnom_+*>K`tr+)SihD1{y`AFTj&bj#xOZaQyD9G77J(d5S&VSG3zi;NhZ{@%5<-c#| zzwhL~@8-WJ^WXRL-w*QN5A)xT^52go;d1zMPk%_0B2KS}wTO{C=%FVj9z-)91{?t# z1sn@{Vd$9j602kSVeLc8N5+cfkcyVe+S=G((%P6xD>^)|NTMp7g@^Gnb|K3Vr-*k| zi^^8D`9p<-LWKk|`pV}_y=_$`sx4YqMbea^L%r6y>QKKT%|g4og-t zZLkYm1egMt3iu_!G(aEVmjTlOGXOIImjW&W{0d+eK=)8+<^i|@FbAO55wrGrfcbz0 zfGYu40dz7tYuDlLtX-#wvvwUy&f1p%z7F^XU@1T!FV5Pp2P^{&0B!)R1bh>4BVZL^ zHQ?6(Hv!fF)&gz@+yYn!xD{|4U_D?1;C8^b0CxcH1biFt>wvoe8v%ORHEaJ3z&(I_ z0h<8#0rX~M*1j3A1@HjiLBLkPLxA4|d@ zU4Y$y-vayqum|u2;BNtb2p9zH1?&Ut2Q&affCGRh0S5t30iFgN0vrZB19%qj9N;M6 zMZimdmjTBB#{sVZehhdO@Y{g@2=E^RP5^!f@V5bf2k;ZX?*d*2{2t)<0Ve@}0QgS< ze-H2m;12=+8Q?z$yb1Utz<&Yw`+&Cqe+>990sj@?6yP5K{%gQL1e^x^6!4D#{|(>_ z;7Aq)-fAEC!h;Z1#|;00*nRp0LB4&0pkG^05w1zFcB~bFd6U_z{P+m zfT@6KfIh%41EvFHf2CglUj@trTne}h@GF4J0bc{m0n7!=1I!0304xMt3Ah??4d7b9 z62R91-vBHHTnG47!1aJ-fC0b_faQP{fVF^|0qX%90Jj6a1-JunC*a$FUkBU;*a)~A za1Y>Kz$U{&VpaB>H8~_{w90oiCcoy&+;0WM(z>feg0$u{V z3^)cj4tNFdW5BC`zXNy;@Dsq_1^h1Hb-?cd{u99e`!j(r0Dl9h=p2sD_X~^xv;*Wm zi){g2fGR-SqF6P7v4C-aUch)j4N%cZELA1Y4(I@M0=fWIKsP{J{L~_#%|xma(D5v) z5|{v}0qTH>fJuPKfUf{9222I~65tX*AK;C4Et|;_PvESJjdWi}SW1XCTXUH{Z8d5? z?!c5TS^28A8xBm7>ay8y5_BrPSl3a}2a0kAQo+)HpPfO*gXCO`+6?Ht$> zk_QRm(;Sd%RzD!GtbX7a;6zA%Ex^|UJW2GM0FK<&51b-+2Jm)xekZ_piFhCIL3sX< z;KzVZ0QgD=J`X8h0G||z>raMLs!#S1oCKHx=m%U1m;(UYCl>=i_Q@3hFn$t@pWFc0 z2)H*?yP4oN02n{H3lK1V5{#b&<0lUTjslJWP5=VJPo504P5BDd2N~gP?V=9nb>+tAkUh=HN7fmjdPh76F!qlw|~0h2R>38$$3-g7*Tp z0zl{BF2Ei@0{}J$j{v~t;Hvdqz}o<@IS4ifKMZ+5=in!R za1Qz4X9UAwJ(Vf=R2ZzMdI*Md#ZOHk*bkUZ1y9W(xF`e{6I>R8D+sO$!F2@h48e^A zHv_hY=WPUch9F2jH5h_m`P5+mSUzzrpL-4&2 ze4k)I^eGU1Djbu3>QjP&EuZ>A!Kd5F`*fAygbC*wzr@{2;MS#U2X(>Sv zeR@@RUPEvLAYl76*gg%mPj3Zm2kZpw0Sp2ThJxVw^ijaE@ce3kp!_t*KK%yZEx;+j z830H={Vo6;pZ)*i~BG zHUc(>y0#MB4hWj$*7;Hx2cB0xs(NMOw)Z-j_9i2&OpV0+|k0N5UR z7w|p+WRH9V_!#gh0922BA@F=VAYl4Dm_9!VFb&WT0MF;a^Lg-mei4m654O)Q0|acJ zUqx^oU;|(y09>En3INyVcLD;c&+j4F02~Ay0UQM!1DpW71~>_L1Mnu`6yOZt9l*N) z@O%CPz(;^j0G|Rr5B>Z?!57*IzECAN0Wbv+2JwYU3C;=W3j$mmAeg-XPA{whfYS>b z0hr%M5DWwL(qe+3_0kFexV^M4WCE?1KG0I+%Ky^#Js!4Cl+0X_kI3iurG zg}}=}bG%$7IDs-RPa-%i1p5gFlwJ-B4PF|Hc6S|Mt#5w#qBL z^Vh$4uZ_9*zL3PpTxXmaGUMrxj5B4Xw8dN4Azeld9nxW1DkWPy!5yp`@PKJy7o>ZA zFW>|d3}f(p@9V6H#H@%!BqC*2RAQuLMI~2qC0C-WRH72IVkJgmwEV$JbcMS6`99~o z?`sH|c6a~Ts$9%@pY!|obDr~@=R9Y-nLFgHO3jSQI3S}eqb9>DHZx@*r_HRJIcw%Q zGp*}pRNI+LGE~hOs#%=5ok#q|e%xyC0NZ=}v2FK&eagtm=w6t9$gaCzetiOz698VF z{lw7lfKM^6J4pKFrMJKVy$P^B0m=#B6H*+DXGX8HxukJ%NduU#OqVo(f|~pK1Sltf zOIlGZApw?<0E;i6m;aXR`UEH^fW=oBi*JD98<4}(02u}-MFZ9+Ksf=Fka;P82VgpY zXb$KF;7A3*o0)q{dXZ3?x!1wRyCh!sofpTGiPwGaRbORZ^;M}?eO2O>b6&a3E6JbzPruht}1-g)ISuYBT#Rru`R_{q?e^c2|MvQCUm~MK@$7b!tKveZwUf8l9dHk;K?QO) zi7bRcu1%ezBq5xm4_BPIx+vYNUDi-)Dut3~5(79Z%iN+ka}URvTNG!mKt78)Yq?6b z$i6boZ;|72C!uP$hSmC6zVnOnoqssr`9=A%N)%_Vw;{hVgZzf;-|Ld!n7QtI-=yLZ zN}aiBEoIOmxl){6DF~pn7A&m=OM;VjFWrQYMXss2t5{zHX0>lK06f#^dNV!-z~$9- z51hKf%Js_kkrSr$u*XEIgyh3fz0bb;#Jmk2h$t=TXz9&$s7073h}UqRvLlZTuw7z5ND9c5E)#C_=oTQ_Nmwdc zJY3+oe}yeC^>f_9SF59XihKDqmk0UCYXt{uGWuk21#57b4MYlJ-cBZ>S<8=iK^8(9 zb$n!-W%W7R^Bx0$45u-9JW0#GL z%J4F3hErJiAya4on-l9k<%BtychFl*G7BADSDQm?73)`Ie59M21zfOW)5%9c7w0(f zz_DPTEAI1AA?>NCpZueK&9}&>+fO%?f?m`#p!UaM96+md1>C}gVGtjXqH)zE>ZhYh zL7xk6sKy0TKf7RwELJ4)@W^&$c4WKcGWaC&CV8#wVRVU!fV+uvDfJ@^udsg2YFxi2 z7%4AJ=1+jj6&XiJDXbhUFglvRQ=HbgR`beVDhHi-3_;Y4Dho;?iZ2&Dgwh-}-z^!? z-NpJH8FyR%LAT@wm;R@9e)>ikr4l8SO616qC?iLrgdB;wtejCsjzkGL5;<}t%E*x@ zAx9!d`a~J&6D6cil#wV=LZU>DM2RvIB}zz?$dM>fMxsOsi4r-2Ey@VCC?VJ)N4-QD z^%C`2M{xsKg0-Q)KrCHG!0p9By9lIFf>p!CE}OQ4x(w)PN5;qebXm~F5f<~yj^YToU|T#1~K^2=PfN{Y%PbHtx86-FvoY+X$6bXbGe z6)>z`5&l$8fD$6~a6JR3GjKKm(bD3p)?PfA)HaFU)83ZjG~xzf5khMbkg6u8cxoHJj0T9Lp{cC$pa%*BV8jDTnG6>0AYlOr zBS((Uutswaa;jJ<`qGBcxpq`bxi-Kj1|l@hs*@64R~4$0fl06GYA=ZEoFT4r zSv3N?vG3fg=M0x9);Zyl>N&NGOGQo~@A|FO=^PfJaEA#@wNo9{PSz{rR;=F(%=;es z&Y1LVbxOI9jGybZWgpVd1Ah^fWh+mOIW1F$x8pR0n%MpFqyp!LiAj+8)P-ctFYE8dDlE+P{A z42gEAq12D$t$|n>UR<0V$paI5is5VglX`HyZnQi1BKk^yz;_r(nsKEgOzOm>XOgPT#b`A zT426Y+)ON*DRmjMGS17mAmgIVo^wubP=xvb?0EU_MZPS=1q9NOZ=uKtyh+AhQ^xHl zI+e&}86qbm@J&v*M9)4C(0k_BO4*Os%$v@x&q!rGmziq%X(WVJG$*c-*)R7c6oqgquU9k zcF&TH?xh>8=w9M=-+A57yzYCihFcsP8Lz5gdkFYq4aci$WE5Z{p#U48Z6{$kk;ryu8IqG0t=g8@)^?@X@ zWk!59`jX{YI=U|SR_N3EiDF)(2)JB>dNI~YwL#^_YCtpxFzQ(8^;M%ZR;wKS9U4sR z+pudvFj7)fCQ(E%zNfgNE?K*pxR|8E;L5;jtZzod4gotP>!?guuDLhYygt`lhCi!Y z%?&MIjZI$l%4SuEjZ$Mv0&GiwSDf~NzeFyAugt1(qFB{Ais_;WR6KPYb*?8HW;KLq z=xkg{ww{g4Vk{JjjZ4&58(3YbZd~Si5gjGBj;4QLkko`v8*_eYwnJd1pwlukt|JeW zya<1I?MoVA-MJa0*H@fvF9)Ifb5HKXpIx z-|PN+L!|2n3KOMb*ye73*q;=|q47qB#v2J5Z#XpG$k2ErLF2K=OlZ?mT7fvhFR{b$ zafadJ1jEM;!^athj}r_ZI}9IZ7(PxgeBA5u%J$fCvd4}cE{ii<7Wesj#j9Pc)maHw zCthx69%noAIN6!UZZ(M+8U9=$PFM}GV>QGXt07KU4Y6Z2#2Kq0PFM|bw<|_>mZ0CH zHT<&E@XJoJ9L0Y5iT&~u`{gJ0o4L5p^=iD@fBohz_M5}lZw_O>IgGniZDGn=#$7UK z5#t(X&$w>fav0M{gX(2%xJ)+@GhlyH+Y^45zX6?3m*ruunk59)E($e9E+NH-QZkIc zK{tFwHe58v3yI?ebG(og?PglEn~RH<^3)rtvv8zgXd_b^w|#;QBTgE(g;=yiVIT!OcXXGo^#|GvwJMY zYY-HNops-7evH@3ZJmtuGB(M01*vj^{H=`tBI9plT$9oLA2FVi!8UP3En~Vr9mB!& zgtpdsY9<-PV{Tw&O!_!s(#Hp!*MV%z*%Ahg6(4e5hcd52NrGkPRnELbSVYt!9ETJR z|*ItsT{t7TY$M zYm|;Fg!q=CcEos57+y7ClgsUQZy~qL;wU@T)_BzQIXY22*&1&ICZ@78Sa?3n7he_y zoeyJFtTi_+ZTB06RW0N(H2AtVHj^?oM5^-Y-4C8 zPTLJOo^1V6GS*`ocCmK-^-F#x#8)*+K2!?n=c?$E=z2l?r1(P=^3pic>PzF;7tk#f z*HOF0!G;!(>->2L%>deaaAu)GkiDPoWY5@-KXe3DxW=*P?Ia|Or$l%Z_}T^G67*P8 ziQ}jNic-+6ft=`$kIg9%xl`)0tHdQ89ux{RjBzB4?(`azk9LP~U9<J;((y{cXN_r=_&3?X26^aKbOsbxx{PUdCg~D^NH7j^IFKf z780*(&g)v{bQ*sn;cb_$KV**;~5;ukh%Gr0>D7~a~avZvmo1?C!N1Cx_L{mKHzw`dP z;J?@C?(qY3RQ0}$yM7zYs8%(KZTchFlX`(x3xrEFM{48Zi7B?XMQcpJ(QAkEQY| zx76ST5=J+9xo-=viq}U7YDZ`~Bmr($ISa)h1zuwb4mrz6yDxcpI)$cEXflOnQ>dOo z=Thi=3Tew`k5}0FpWYH+hOo|$ku&<#C0Q-BLFBpcWG`xVM($bjXBmKB^xsL<%H zmHkIub85CVm!oQk8x&B+Nu-gmu@FwJ!P9HEc3cK6E*#m|SVd!|@cYY{a4HOb-Qc`t zhgcS;VA=MRG)P85B^91ouTG3dXfwe zUlfOy66oZOJP%5oywzb%AC_wzGd~7=Jyl z|9MS>Hf9ML=heWl0$KcTN+^1Av4Rk)aip2BYjeQsprdq_~Z(1q$Bmt|s-8~FKkqS61H z0h&(1b`G3)b)=`Ir|@*p;UCusPi_p$li`4r7NJt-QgcrUX%p}RgW}ns06XcB8j!&N zWBe3cExL6;|6o4Riz9jdv?7=Z*i=5 zmxGO{aC}!j%SyKj!>PU{xfXFztTDKHNImtm29gXba$g9RS(s53iJ>);FODT`RT9AS zK5EJQ=YkFeJb61jd6#epRI@Tg!b+c@kg`-Nbx=2jxtA|I=hLl+Q|FZO)cFS@O`Xe! z0e1l@-DEg5P5WZPdUgfAry)|=?v}Lud67~Yqs$iLP|J6sOtH9-*%r|7(tYh;{Gbm& zm|9(sK(X?dKcbC$R^+}EtfaN-oE0sC} zxZ{eiuw)KvGLWfG)VIw{>7O+(=-yLw2BvCdfF*rO=%gHp@trR){E?bc?BeF9&@Pii zap9f06x@xw{VfOKSs2FF4IuCqfo!0aZxo&9qBMk7EN5q00XtoGL*0RkW`!hBlFTW2 zq>)nBuzcI1H>=wg2UmF>bh?X^W#ZI*j?1DBq)prDD?>}CXiBS*CED?Hz?y7z%#wCl z_XeG5X{^AN)k#q+{TzDrs|l>i@?F#(m33-&OEhai(sYjFyVM!uyL^MD2`p}4F5yB; z_JCb@O^osP3mTH+ z@AKA5ahxr=okETO#0h-qB$z?>lj1m@KP`^`L?y!hR6vs9_y;Z$l8v}wLhFn0{|WW# zUf$G-rTe*H`J#}TX+KdR+3*VU@!=g8P!idHK+9?e1O9|pq^)F}o$>=okZC;I^+YxhexbqyqxA}o5xN4FBC4VK z8LZvo_}_V=H-Q`}{Iir4c95tcJ=N2^qUq_NjTd#;Ou1CZ+67tBWTe`PCPzRk2S+0d z`a;mE=}xrdv7SZo9o_9>i=Sza{v zdJgg_<&=_bsa0lb=6vCDkWX5U62$9gmZ?LVHPO9-2&}SD| zC$tS5pMKWmb9Mokzr;ED`U&I8>$YDcqP;V`pc1J!<-ZK_VVbLawmk#NDoHx8x{8&a z(Lz5P!0=L5@oPP$Bol;B7!lQFS^sxtR^E)TgoEJOfG+j0Z>7b-R#3l*t7NgL8mn38 z&)#xw4_1%@B-tn5=RneDuV;Zj9fJO|scoH5fc`mqm-AVM24tG(j73(q(Du3#M_vHD zRYUvxQ$46ftcIU2=7S{+FB))3(2Aoz;5m&j*$C9)9XTEggJtfaCOC)ozLIxBMndW1 z#A{CMtRy3xL+dDsz+m9Vu8PMaAr&A~p#?dzhUr%=7OPJbt535W=s`0vaTucThOkmK`is>bIE_CRPZdmEtUf0yrLh{xQnA5U?<(@vylJfFWRt`!j@-lreAUh^ zDjzc*OQk1JV2Beh(0$CGKKW8li7^i4U+pxK@=RF1ujQFN%!x6jdLm`YRJ#)vOSP0j zy(zRRh5Axxbqe*T(3%ultMrf6ESH@!-`*DCK-^Ts+{uk4WFTT?Pmd?<6$f=;fs2&;|a zI}=t~)gBOV2%fTLR#&bRMX}X6^5~Cw4y+J)Xq&ikZ2+TfVGQ2`{Gkk=WW2Hg;w<&; z39N~;NCTXYP4OkL?q zzVzXE{M$zLS6@}DRR^@&EQJGD(7NBzlxy4g^1uGxzk$7+YhDU@<+**;11WSUg~};Z zOQ8vCL_Kk1fL^#UBA=nEajHDeY&6qr%&gWDzFM^w#`n$ZHJPU_Q}o%KW@0I<9$GFY z4a~plp>Vbp_XqX^#p)K`a}LjJ3D0aJM{c5SOUq$x%^NdcVc&aZXZ8jSv#Yu-tZomh zyl1#GtiBdjcZAhZ0x0+6bpqO&hx-C6e3R3w9NdRS&9j+T%l#4^*#my-@ZZmBy z{Qos!*VT+jkNNeE$zOyC_AhSsDWnNl1AGJ*t+|uOV~Q1?8|hg|4V~yHO_}_$bql~E z;7(8=`h?#TRmXB{W;=+@t=&R2Z6wNjH6T1Br~rA0Mp(}F?~IOVLwoj~28$|tchUJw zOJ1mPJLT%Eh2S-4e$NI^g37_Bva}1W@9sN@($`9o?_2IE@XfSM>Q(@Ei!AhHWQkdwb`De^CGY;n>a^O91}bM7P*us7rn| zC>crqx5!+7>Yq@Q|G5WuU3BA?z>W!m)`E~N1QHL{u!*4g_)}dzQX6PaBEiy@gG2NS zaSEIWMs-l=zB(8p)#9caFH*A#>|eojt$fADA|mPRXK91mgXJb)qYQ8JhZwuWk|=d`zF2uq?fov#-|+YiQqSTE!nr_3Nyb49BE+G=28Zcv zl}-Du>TO1@crtpdCZh^ub;DNB=Rr)OQ3Uh%U@#mYiriB<32>J~kJ(OoLIbK;MMAeY zi*#^tcBPE&%6|?1RT9O2@BVYQfBG??f9^H<$IAcNHP$;y$r?~g$&6Y`del;aqm~jJ zwUppM$+=%=YAM0NdqZ|q%G*K?kZhDqAx>ZMu~&y2AlWCaz4inTh^C2|0EKl`rrro@ zWf~wGmj5Dz0Bd^rXZowH@`*k8am!5&o}xQzs+Gdok`g-U%E&zA!bE@!mXEg#x)UdF zBYJbbYei0&uGXd8s&4{Q3AaF#Y!+B(;pAGygi1cSUP@<-(Ry||JUiQhxP*{qr&zbg zH|4|QTiTWC@k2`W_+%HADPM=U;;|%Ap+Z)Lq#4nuPLcJtQ8?Qx3P1!c4-sjr#{?Z> zb!ZB|;kH%QYTCT~%rzkR2kKMpzycYq55z(e;()IpiV0e23u4V-^^CbxS=fIT&aT3J zwl_;8gT$kS0o@(wUGJd19d>!4nb4$jD8IC)MJ-n73JSZmOdT=NoeHLc+`bIX91=`e$3qNM=G zgfjr!?|N293lyuUH$(xnf#pym$Hlq;#!)-M^AJ}$GHPvS5wOyHpbH<6H-BEN{o5Fo6=`T3Y{`D2gQCq>t?q|uS>g_1~4$7ifg8g><*k*hPtCnMX+z>{=p zW#A#IzbBhTDVX~p1Ic2bJ$wC4XCB3ueI4U#<|~U%6;Q|`-XbI^QS|5NA?Wv z=>4 zil^@shdqp^W3R|OYI}pDJG9Omt*J-kI(h!6aTSi=o^Ua zqehVzYh&Tj8<+&SkpwvaIUkO*T~Ij>@WRG{B#s^2U=NR$F^R(|wF`DA3G$J*hezj& zwL=7%*Krw?hbBGwPVxvxSr|iQn00|U5~_{B#O&9Im3Z;8XZc8TNQUre_Mes+` zh2Thv>W`$T{z!`IkE~5oS(ifVQ)pufZAzh6QfNyGZB3zVDfF77(z(JnsdG%-4TLxs zBho~7X$C0j%}DXemlr0uvIiGzsh%sOU7pBR&Q za*OCLn;R!L;>R30xl#QB-LFBxb1e#G`=1k%cr~|fwLJUQIWX%3fyIWB$4796w`jth zozQTAc{0I!Y>4qW*io=b`Ro-l=PZ|5nQ!%*X$<(cZ1;8Qnp{pH`A5;UJ|O-V&aSq? zgpEVbvUid{WVhhAjK^@Y)q>tJ^S;bueP*tq=0^;pjlU8ObTPMRZB{p92h6T(Ww+ds zZLR6i+C9~l33z<{6T(8J@Wd*0Vj(=S8r6TR^M0kT;gUMJAK&$aggJ3 zp;qK}2FnP#I9d`t`G&I_N&JEM|2G!Nzf?ZaD=Y)*6-_g)zi#oZf4s{BGh^a2&~zs| z^Wn*rC=g6MZ2V1JqdSCC9QqIdv1fQhj9>ZK7Z>*O4*h^`&YoBMVY28~|H{n2UJ41} z2_p_;+$`IqVAa0?se}U>PFzrjaN@9?J{%B}9>&NnH*nnIEMhzQMk-O zmrnTz#bXe%_LM#^7NGP&hZQ)quflG49Xc7UB&CvZYZ)5wyLHP>+{mxkl=%v^A}kDp z9GzErl?}6^(az7)KhTe)#%QwyEwNXb`mS9pO-O>J;y;TD{<#gDU(mW_Sb8B?;p4GJ zaJ`PfR%t69Bv^6$R9O9mMOQ2%Y5gg(D|_|lnP(n$hq0w8E;_Uefic$;W{FW&J#9}0 zoI32Mb{1401HK;gCjtMdUv+`8R`}|T(T*UExgsd0Z~}A&9SP`;a*Z<$SH=oJRLmskWXS=9xO{h`?4!rRBzvu`ml>y#z)!e z8wT7jeem}T2hN}I`+T6&mCyb?5v+KG=NE$BN4P%V^lZRl`q{sig0FqH=OcYy2)_DA z_eVQ^F?jCL9*bOmD;QX0`#%R)2H~e8eKT0|X~%!u{*2u`c+He`?TAhx=;q zl}|fr=D(l>glGZo^EjJeO>AHK-3T##2$8-TbYJfr2i|~Uf7aZ??W()#c;ar z3Ae&iIv`Slh4AewXk%uVXf_UDJ;XM{`PfQLKwHS&#{BdhxKjl9(T8e9N#&aD?qb_C z<&+;wHX)~tGX9Ykzwq>pybAN91uN1zgFi9zrp(h*W^On0fSDI$PH!~0CiB=OGv{Rf z$TlRWMM$_7T0nLqtn{VUJetRRrIdYTZ9-0;zK@SlH7F?a`{iR-tk^R*!(&%*Wru$? zpQb!ta`f(Wf0FooIK8$wGmn1NwOO#MFTrzSwf&KARXQ#F(LAPW5f?W};VPPE=d-wT zKJGLmt*g#lINe#CnR`^+Ir8nyL-a1{_zg~KbJ|2XlT#r&U{wYWJeby^$fUO_X`LUf zMA4hyY@8k`c>478Yyw>SoNJ7?slnS6&yOa`^!8k`H937bpR?3cR`@a@>%$&MBFM03774|^42R4hKkI8oKMrWpk$Yayq+p|7Y_&Vex@RG?a% zP}K6KZU_m7Kw9PWL2_YT?k9Pa(@@V^`KmfjZ} zJLzyP$A-N?`Y`Z%phJ-i?I|!K>aUn|4eJ~gPZh~I8X1LhVqd`1t#9&#aDCGx zr%)}0CQ|573QeYv&B-&2+@FVn>fCTr`5^ZjpmS@hnA&50Ra{&__ za-7#*fV6?3eJk@U-%dQsx5Wx$IC=s{JYFMGOx6HrCrBZrrPEIO)^xAILD!S1rs55H zm7{$u((WcleXUsxl6X#YiH%?qL~<6Un5{LJD-H#{$XTPhts9EbyCa}o9P;TDhkC_x zw3LzruuA`%{~)g1oR@qzkIR7vG$@jQ*mTb3qxX1euEZ|EpDZjhka5Izi8|0rWn^_V zn`+A_E!;l#8ph-c4}Y1>gp;v^*$2Phf?`OPUF?k=K3p3+@17Q}2x8nh2l8L=j#OPX5I zrNqXbS)6|kFz8%9jyG8h#fORHAZ`O&-ilr`roXwDnTgp*#D-2oc#Smc3j}IMkqQFl z#oE&j;_cO^C6`W7w54PhRndm2)}t3gh1;k&2{-k$EQbwJU%-whA~y#$j)+HNQh}G< zm-`1)!|8={04~Y2i&DxVN-2jZr5vJ^!iZAJAxbHSD5Xv!TYJx{A;YsK^%TB&NK^2* zv9aE~E{`{_+oJp?*tjWt^P)LjbWXR-a?5b~Tm7M9_no<80sGC|s>XVAYxw3S1$|4m ztF`M#OrSM@io}Q z21$IpB+oc{t`gSWE5x12i3_z=#uk<{Z7!wx62*}Gq%{(U=H}l4w;g4Nohsu(KtcnC zDS%F{Jj3-|yGd$nBP~+Gn_+{gu_3N<3P!quGqXzhz4oNh6{Na4?_zJKz_YKt9DH8n z1`M)Dca1UW*&yZ6(r3dNi}mwvUY>WnO|jn zcQrn{mAi@C^7@Ym!er8U;Vh`gwInTf_O(^1=u}ne)*cACGYOe7O(%1#L)vUI{7hY) z4bV+yuIqxM#86RYE(bZFoi4H!Nc?}$0;i|z)rDzcru!^0E)@2D^3R- zfQAoHI2AB{LT3+Msk7g3b_6nrE5OggN8v7I6I6%>Gu##D)Klv6$H}R*t6k*cl1>|l z94=A(8VsSZ_JVFoNt{+FEPM$R_7dm31w62!6HVr_t|pWqJ}5_Cr|gt42^O7lZ8p_T{4{l zZMGnNv_xX9NL#aaGfiJ8_`;K;Z?cyIL8m*AvPSe@ngi)P2QZz+#T#Y-qh*g)cAXo} zj*1hEg_*$YZ~~@zS3csqKTjTLT19YZbx}&1!aQ)%02sYGd7@jx+8>&*Va@Im)Lyrp zN$q<$hqXcLra3d`nMSOrXa?(H^Ajzke?36?%;3Zx1PJ$4_Z4hDII&lhi+L(Nnn$dF ztIH)Mw)9E-=Mw+99xy23QB0NyPe=2HlguUHTtkQW%b_S4Ph8vx%YVz5k}d*&xKEId zj$(~F;VmYJ)%?|fQxqgg-w$iUdaT$=KQBT7R5B+rgXzpD(Z46)Q?jvHuB0=QO&Yy* zLw`X>BA4feGt5Ns*%tlidGBCtheia5q{_#|+7DOiUZ+Sai3j6k%v%DX9V{hCQZ`6* zKXGfM%#TLO{Ai@42};O3dm@bPfbQ+66V*M&F*vmjM-}6go%EmD=C_-twiV=h+K7>p z+XTOLZJAJvmK4!`cl_NEfv{MUiwowZ{m_Fh;p~_?@Kx2#ElU8;r`7eTf)nl}p1q-MgJY(b(so-=TIU3hxEqVdUs`D3!^PI$U6Jl#)&;@_WV zlxP(@xs5eJD$;c9K@pO~xit=sK;Qv0ON)sQ(Oc*iHS3k6S@|XNA%PFO_@r~E@|jW^ z#@QbT=kDc5Qc!JL&}C&M=q%O@g~C$%y2!wUbMWV~ut~}^t^*4Yy`1-h^yax2Wb%r| z+I||!>t{2`0q%C$c8Sde93sOC#SJEh3iAAbrq!u9w-JgPI409BFtw+nt`ET;Xl+m$ zLjIlPH-64G8a>XThpS3d|Lk3aMY$kQ96!%rz@b{@JriK$%NdECoK@ZvQaFeU<9|OW z!jN=hoBwVxRBQ6NtObo%z#O_$taY_2c}$K>Bw(*YEfgPcFBqWt*u$`MOaz?|NIfEOtVd9=fhxSY9X?ZPdOmJqN=b&6fZvld$Q~U7ef-X|zhX=>% zgik`+4J}+bT#|OS@xS7r2uz-LO0LUH_sSD$KSMhVoSJa%_=F^sIDOEC>6fJvMjN+A zoui}=IMOQyd4GLEw2HsL-HQE(_WOm0~yQ*U{C%Ai?YqW!SjPpG{hU!cE$=W=;qu_?r%pe9RNC zuZ^l!P}8OlTHAyIkFHiB&)nvYhhyhX?2z-sh^_35fA9%MYdX2&AGD&V1}=%zq@}AF z;X%;>U3vN)SKUjY;AwVtkF55tv72xOlF~T4M^^i>cP#?R75*y3ytjmBr_)5BG@3ay z)IcalUp5+@A$I0E+?^VtL}|DbP$_Mig=ch`*=-bn?eDrP(|c)|-m~19BuzalplDdg zC=40Yy3zzwfCFRc)>HGLo(^6V?d~8LbBOylK1neNOiu51!w)`VEofjx{p5ma#Fi8u zJAj%vUrDt@spbiR3gQ-r{!&R|RS&z_$?W?g2GWaNQGd3YnN|=;(o&z;Rv(A8_YLoA zwdvR1)Tf;+XSlldGadR|#Qiv-RQkW=PA&-nv7m%}3J~V59unEG(m^neD3}}a)YFVD|SN}L=J;W&;5T|rNoYDbt%9x1zlJw%$DU>oR;*{kPr!0>+WqHKi zD$&~)B|J~ZzwI~_lWT2yyke4e^o`nxbBzzfw^7RW_GK>;*SO`S+-9~q1b+*(c?)v( zxKt9c@}4vF-^LgaYalxJJUGfWnF`((9={P*uYg-P>%J@^cNTfO<2P)JL#WC15V9sn zE6Xb=ck|1~O$qN+`dpSb$?~Qz#^km|Zm#IzQQTbVkFp{h-Jbu|V1>$Xb|O4GmFZ{` z21IrNNv#y(2;%G%Vta`6__QYLNm`TVc;WP1!q=a?S!~?)VUD#XVUDruJl2_nIaWeD zT-rG)3pqZJx*bZPGU&oaWxPeqlz1!KPEc%k{9=!%Cqs0ju|zC|z=Y00|5teYY8s~p zboA&rsvG!RAGRg%j>FSixHz!E)QXLYA#zB#0IjtL)c=)NY;VkN(}b;}ZOe7W#Z-?E zz+et%%c3vvLo~$LLdJfPB=h*RqQ|evpPQNJ(;`%SLBMQHdsP-fiIPA|w}vz8ld~FX zrFb*1=!Veo53x!IS~5jrRKkeqFtgTs9KS-FWWH(rwfQ^K%@zUNP8E+|HJXQHnes{! z7Eg*D;w>r8h`0PE4R?B*yNzjK6GY)-r8yW8=RzbMrAD7w?{nCO%nD1QpEzV{6`H4? zT!5_5Zb-*ht?yY)V@b@@_foOua&eG|bf9krEa!FzBf}LB=L}-fT~FhsfG(lwuKUL{ zSae-`04{+)8-%>xz+Izkf0IF`Cx**Kuwh_hvW0776Z=F^uytBY+2kMGPc+QrTe^a! zY;r_lt#PY26qRVx=xdRa(wN&D}7%m9AW?nD>Si>n?8>A#;1caINX&GHu+7NsZ0DtlKc<2G{ z9^Nb_=h<^paNDV~)rKsAFoCvWeO>ggMKb3)%P`WQGQhPXr~!*brHQ9DVV?;KVIK)0 zHLY7()me7|Or8u@MLQ2!4#kRi(#J^3bAwdLYAu((7N|!CHDjuR2%K(hgEomOq0;IV zb2iDp^a`p=LANaBRQ)-B62JdB^9|;O@>3t6nUX6DYC%Jgnl7}2@-79-ykr!#_Rs0p z*J%jFXXpI<)4@`SFPV>pPW}9H7f~|h1f}cyF`4n16p=%EPOF7@_rreh|jE*9EKe+piq2A$r zy}S4PS?|ul-8)8xcJvPJAKSBQaBTRE!I6=JC>(?&lN^vvu8e&@J1KNJz1`Jfdg3{+ z+-rJ*iI_L-f8q2*I9;|8V9EjsA75eDY=vLrOej7ow7pj+Y66@q6FnbpCv+P5^FH}3 z0Jv&9kr-Y|9MbNg1Xz1^rQRM9n@&Q9*#ti4ueVtWi$XixrVz%Q@L8mZ`J+e8l&f_}$t-uN8g80>* zBw)qOcj^Y9a^Zt!Mq}(q9f?ZF$)vUm#pJZE&{ZD_>Uk`hLjM^YIlDPF={_C*>RN5~>Yc@h{nj z0U2MimC1T&_Ph`GA$)UIO|h1=+q5C1(JM$C)A&QO$9&pfCW${(LaApsdjSnPKBF+M znYtBLS>n5EFS8eaL;gRcfm}1ve5|$iDZed0R(;!@q~2Lwz84_tex9XKKiZjP+TX+M z1Y1GdUg0Q)JF=J43AfDkoeeT=dD1vpqB;X*=Y0gl8!ET-_TdTY?Eiew(Hu_i%!kvX zq^^%Ioo{vx?TLAz#OX+!h65f5LDfh$!PQ4?;-`_j97ZlXSOCGu0lTEqe9^!CW$i;ba&)y&8 zaxXOH`o6Vi^x)p%AM70K{m<`lW9gwVyi z@3;1kjP2h$G_ZSU|JdHak=4Ch_J4n5_>JEgI=FSupA79D`2Mf`+Tb_d_{KM1`t@I3 zGt|HK*Pm$G+T8WsKN%h+C9Z0{0iNEoTg|g^=`&Un8UI#rZ)$x2*s>^GF84>@+Ov1# z$jIiw;oUha<Q*Ier$Q%0*_nZaSQx^(E?5OQg(MPSAMWKLgl$! z|0CQLZWI5v^*)o+{p#d5+p-4m_jBLP{SoHNx!(i&cJ4d5-^KoI%-;sq@29Q*{U7wY zwtfS9>|@{Ga-gZDYxZ#R*$B`?s)M<`q%+K;Swp0`JNL&tuchBAi?tQsL0tFQqgr|c zYY#T}yVQE0M4Kqn7@_pE)(;+$(kB+CpL)B0Yj}o>Hpp$vJxSbek=`!;>DjI^a>-Gn zQL}Bv93$^P<+~T3A&|Zv`TD+Jr?$`L2lwYkr zW^r~?_K`(3`0PAi%CJuJ`t6%MpXMNF6>?L%f5+#co>#e(Q6!sM{Fn7*R{nL?{#!_E4|Up4+m9`3fnSzJ zF1OCw{lT~ow|>&@`Yvw!^%i#ny{)mei*YqVtMxJ?+;~fR@3Z1ly~n@DE%3Mn9=E{b z7I@qOk6Ykz3p{Rt$1U)<1^z|0z%%S7a=Fpp{1;jI$CZBE0*_nZaSJ?dfyXWIxCI`! Zz~dHp+yakV;BgB)Zh^-w@GqhT{x>*`%z*#^ diff --git a/bin/OpenMetaverse.dll.config b/bin/OpenMetaverse.dll.config index 13fdc11c72..dc36a4513f 100644 --- a/bin/OpenMetaverse.dll.config +++ b/bin/OpenMetaverse.dll.config @@ -1,7 +1,7 @@ - - - - - - - + + + + + + + diff --git a/bin/OpenMetaverseTypes.XML b/bin/OpenMetaverseTypes.XML index 9b198512db..69e5c1bb26 100644 --- a/bin/OpenMetaverseTypes.XML +++ b/bin/OpenMetaverseTypes.XML @@ -1,23 +1,239 @@ - OpenMetaverseTypes + /home/root/libopenmetaverse/bin/OpenMetaverseTypes + +

+ Same as Queue except Dequeue function blocks until there is an object to return. + Note: This class does not need to be synchronized + + + + + Create new BlockingQueue. + + The System.Collections.ICollection to copy elements from + + + + Create new BlockingQueue. + + The initial number of elements that the queue can contain + + + + Create new BlockingQueue. + + + + + Gets flag indicating if queue has been closed. + + + + + BlockingQueue Destructor (Close queue, resume any waiting thread). + + + + + Remove all objects from the Queue. + + + + + Remove all objects from the Queue, resume all dequeue threads. + + + + + Removes and returns the object at the beginning of the Queue. + + Object in queue. + + + + Removes and returns the object at the beginning of the Queue. + + time to wait before returning + Object in queue. + + + + Removes and returns the object at the beginning of the Queue. + + time to wait before returning (in milliseconds) + Object in queue. + + + + Adds an object to the end of the Queue + + Object to put in queue + + + + Open Queue. + + + + + Copy constructor + + Circular queue to copy + + + + An 8-bit color structure including an alpha channel + + + + + + + + + + + + + + + + + Builds a color from a byte array + + Byte array containing a 16 byte color + Beginning position in the byte array + True if the byte array stores inverted values, + otherwise false. For example the color black (fully opaque) inverted + would be 0xFF 0xFF 0xFF 0x00 + + + + Returns the raw bytes for this vector + + Byte array containing a 16 byte color + Beginning position in the byte array + True if the byte array stores inverted values, + otherwise false. For example the color black (fully opaque) inverted + would be 0xFF 0xFF 0xFF 0x00 + True if the alpha value is inverted in + addition to whatever the inverted parameter is. Setting inverted true + and alphaInverted true will flip the alpha value back to non-inverted, + but keep the other color bytes inverted + A 16 byte array containing R, G, B, and A + + + + Copy constructor + + Color to copy + + + Red + + + Green + + + Blue + + + Alpha + + + A Color4 with zero RGB values and fully opaque (alpha 1.0) + + + A Color4 with full RGB values (1.0) and fully opaque (alpha 1.0) + + + + IComparable.CompareTo implementation + + Sorting ends up like this: |--Grayscale--||--Color--|. + Alpha is only used when the colors are otherwise equivalent + + + + Builds a color from a byte array + + Byte array containing a 16 byte color + Beginning position in the byte array + True if the byte array stores inverted values, + otherwise false. For example the color black (fully opaque) inverted + would be 0xFF 0xFF 0xFF 0x00 + True if the alpha value is inverted in + addition to whatever the inverted parameter is. Setting inverted true + and alphaInverted true will flip the alpha value back to non-inverted, + but keep the other color bytes inverted + + + + Writes the raw bytes for this color to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array + + + + Serializes this color into four bytes in a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 4 bytes before the end of the array + True to invert the output (1.0 becomes 0 + instead of 255) + + + + Writes the raw bytes for this color to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array + + + + Ensures that values are in range 0-1 + + + + + Create an RGB color from a hue, saturation, value combination + + Hue + Saturation + Value + An fully opaque RGB color (alpha is 1.0) + + + + Performs linear interpolation between two colors + + Color to start at + Color to end at + Amount to interpolate + The interpolated color + Attribute class that allows extra attributes to be attached to ENUMs - - Text used when presenting ENUM to user - Default initializer Text used when presenting ENUM to user + + Text used when presenting ENUM to user + The different types of grid assets @@ -39,11 +255,11 @@ Link to a location in world - Collection of textures and parameters that can be + Collection of textures and parameters that can be worn by an avatar - Primitive that can contain textures, sounds, + Primitive that can contain textures, sounds, scripts and more @@ -151,34 +367,42 @@ Notecard - + + Folder - + + an LSL Script - + + - + + - + + - + + - + + - + + @@ -250,23 +474,780 @@ Invalid wearable asset - + - Copy constructor + Identifier code for primitive types - Circular queue to copy - - X value + + None - - Y value + + A Primitive - - Z value + + A Avatar - - W value + + Linden grass + + + Linden tree + + + A primitive that acts as the source for a particle stream + + + A Linden tree + + + + Primary parameters for primitives such as Physics Enabled or Phantom + + + + Deprecated + + + Whether physics are enabled for this object + + + + + + + + + + + + + + + + + + + + + + + + + + + Whether this object contains an active touch script + + + + + + + Whether this object can receive payments + + + Whether this object is phantom (no collisions) + + + + + + + + + + + + + + + + + + + Deprecated + + + + + + + + + + + + + + + Deprecated + + + + + + + + + + + + + + + + + + + Server flag, will not be sent to clients. Specifies that + the object is destroyed when it touches a simulator edge + + + Server flag, will not be sent to clients. Specifies that + the object will be returned to the owner's inventory when it + touches a simulator edge + + + Server flag, will not be sent to clients. + + + Server flag, will not be sent to client. Specifies that + the object is hovering/flying + + + + + + + + + + + + + + + + + + + + Sound flags for sounds attached to primitives + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Material type for a primitive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Used in a helper function to roughly determine prim shape + + + + + Extra parameters for primitives, these flags are for features that have + been added after the original ObjectFlags that has all eight bits + reserved already + + + + Whether this object has flexible parameters + + + Whether this object has light parameters + + + Whether this object is a sculpted prim + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Attachment points for objects on avatar bodies + + + Both InventoryObject and InventoryAttachment types can be attached + + + + Right hand if object was not previously attached + + + Chest + + + Skull + + + Left shoulder + + + Right shoulder + + + Left hand + + + Right hand + + + Left foot + + + Right foot + + + Spine + + + Pelvis + + + Mouth + + + Chin + + + Left ear + + + Right ear + + + Left eyeball + + + Right eyeball + + + Nose + + + Right upper arm + + + Right forearm + + + Left upper arm + + + Left forearm + + + Right hip + + + Right upper leg + + + Right lower leg + + + Left hip + + + Left upper leg + + + Left lower leg + + + Stomach + + + Left pectoral + + + Right pectoral + + + HUD Center position 2 + + + HUD Top-right + + + HUD Top + + + HUD Top-left + + + HUD Center + + + HUD Bottom-left + + + HUD Bottom + + + HUD Bottom-right + + + + Tree foliage types + + + + Pine1 tree + + + Oak tree + + + Tropical Bush1 + + + Palm1 tree + + + Dogwood tree + + + Tropical Bush2 + + + Palm2 tree + + + Cypress1 tree + + + Cypress2 tree + + + Pine2 tree + + + Plumeria + + + Winter pinetree1 + + + Winter Aspen tree + + + Winter pinetree2 + + + Eucalyptus tree + + + Fern + + + Eelgrass + + + Sea Sword + + + Kelp1 plant + + + Beach grass + + + Kelp2 plant + + + + Grass foliage types + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Action associated with clicking on an object + + + + Touch object + + + Sit on object + + + Purchase object or contents + + + Pay the object + + + Open task inventory + + + Play parcel media + + + Open parcel media + + + For thread safety + + + For thread safety + + + + Purges expired objects from the cache. Called automatically by the purge timer. + + + + + A thread-safe lockless queue that supports multiple readers and + multiple writers + + + + + Constructor + + + + + Provides a node container for data in a singly linked list + + + + + Constructor + + + + + Constructor + + + + Pointer to the next node in list + + + The data contained by the node + + + Queue head + + + Queue tail + + + Queue item count + + + Gets the current number of items in the queue. Since this + is a lockless collection this value should be treated as a close + estimate + + + + Enqueue an item + + Item to enqeue + + + + Try to dequeue an item + + Dequeued item if the dequeue was successful + True if an item was successfully deqeued, otherwise false + + + A 4x4 matrix containing all zeroes + + + A 4x4 identity matrix + + + + Convert this matrix to euler rotations + + X euler angle + Y euler angle + Z euler angle + + + + Convert this matrix to a quaternion rotation + + A quaternion representation of this rotation matrix + + + + Construct a matrix from euler rotation values in radians + + X euler angle in radians + Y euler angle in radians + Z euler angle in radians + + + + Get a formatted string representation of the vector + + A string representation of the vector + + + + Provides helper methods for parallelizing loops + + + + + Executes a for loop in which iterations may run in parallel + + The loop will be started at this index + The loop will be terminated before this index is reached + Method body to run for each iteration of the loop + + + + Executes a for loop in which iterations may run in parallel + + The number of concurrent execution threads to run + The loop will be started at this index + The loop will be terminated before this index is reached + Method body to run for each iteration of the loop + + + + Executes a foreach loop in which iterations may run in parallel + + Object type that the collection wraps + An enumerable collection to iterate over + Method body to run for each object in the collection + + + + Executes a foreach loop in which iterations may run in parallel + + Object type that the collection wraps + The number of concurrent execution threads to run + An enumerable collection to iterate over + Method body to run for each object in the collection + + + + Executes a series of tasks in parallel + + A series of method bodies to execute + + + + Executes a series of tasks in parallel + + The number of concurrent execution threads to run + A series of method bodies to execute @@ -286,6 +1267,21 @@ not. If this is true 12 bytes will be read, otherwise 16 bytes will be read. + + X value + + + Y value + + + Z value + + + W value + + + A quaternion with a value of 0,0,0,1 + Normalizes the quaternion @@ -386,8 +1382,24 @@ Raw string representation of the quaternion - - A quaternion with a value of 0,0,0,1 + + + Determines the appropriate events to set, leaves the locks, and sets the events. + + + + + A routine for lazily creating a event outside the lock (so if errors + happen they are outside the lock and that we don't do much work + while holding a spin lock). If all goes well, reenter the lock and + set 'waitEvent' + + + + + Waits on 'waitEvent' with a timeout of 'millisceondsTimeout. + Before the wait 'numWaiters' is incremented and is restored before leaving this routine. + @@ -395,12 +1407,23 @@ http://en.wikipedia.org/wiki/Token_bucket for more information + + + Default constructor + + Parent bucket if this is a child bucket, or + null if this is a root bucket + Maximum size of the bucket in bytes, or + zero if this bucket has no maximum capacity + Rate that the bucket fills, in bytes per + second. If zero, the bucket always remains full + Parent bucket to this bucket, or null if this is a root bucket - Size of the bucket in bytes. If zero, the bucket has + Size of the bucket in bytes. If zero, the bucket has infinite capacity @@ -413,16 +1436,35 @@ Time of the last drip, in system ticks - + - Default constructor + The parent bucket of this bucket, or null if this bucket has no + parent. The parent bucket will limit the aggregate bandwidth of all + of its children buckets - Parent bucket if this is a child bucket, or - null if this is a root bucket - Maximum size of the bucket in bytes, or - zero if this bucket has no maximum capacity - Rate that the bucket fills, in bytes per - second. If zero, the bucket always remains full + + + + Maximum burst rate in bytes per second. This is the maximum number + of tokens that can accumulate in the bucket at any one time + + + + + The speed limit of this bucket in bytes per second. This is the + number of tokens that are added to the bucket per second + + Tokens are added to the bucket any time + is called, at the granularity of + the system tick interval (typically around 15-22ms) + + + + The number of bytes that can be sent at this moment. This is the + current number of tokens in the bucket + If this bucket has a parent bucket that does not have + enough tokens for a request, will + return false regardless of the content of this bucket @@ -445,134 +1487,223 @@ Add tokens to the bucket over time. The number of tokens added each - call depends on the length of time that has passed since the last + call depends on the length of time that has passed since the last call to Drip True if tokens were added to the bucket, otherwise false - + - The parent bucket of this bucket, or null if this bucket has no - parent. The parent bucket will limit the aggregate bandwidth of all - of its children buckets + A 128-bit Universally Unique Identifier, used throughout the Second + Life networking protocol - + - Maximum burst rate in bytes per second. This is the maximum number - of tokens that can accumulate in the bucket at any one time + Constructor that takes a string UUID representation + + A string representation of a UUID, case + insensitive and can either be hyphenated or non-hyphenated + UUID("11f8aa9c-b071-4242-836b-13b7abe0d489") + + + + Constructor that takes a System.Guid object + + A Guid object that contains the unique identifier + to be represented by this UUID + + + + Constructor that takes a byte array containing a UUID + + Byte array containing a 16 byte UUID + Beginning offset in the array + + + + Constructor that takes an unsigned 64-bit unsigned integer to + convert to a UUID + + 64-bit unsigned integer to convert to a UUID + + + + Copy constructor + + UUID to copy + + + The System.Guid object this struct wraps around + + + An UUID with a value of all zeroes + + + A cache of UUID.Zero as a string to optimize a common path + + + + IComparable.CompareTo implementation - + - The speed limit of this bucket in bytes per second. This is the - number of tokens that are added to the bucket per second + Assigns this UUID from 16 bytes out of a byte array - Tokens are added to the bucket any time - is called, at the granularity of - the system tick interval (typically around 15-22ms) + Byte array containing the UUID to assign this UUID to + Starting position of the UUID in the byte array - + - The number of bytes that can be sent at this moment. This is the - current number of tokens in the bucket - If this bucket has a parent bucket that does not have - enough tokens for a request, will - return false regardless of the content of this bucket + Returns a copy of the raw bytes for this UUID + + A 16 byte array containing this UUID + + + + Writes the raw bytes for this UUID to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array + + + + Calculate an LLCRC (cyclic redundancy check) for this UUID + + The CRC checksum for this UUID + + + + Create a 64-bit integer representation from the second half of this UUID + + An integer created from the last eight bytes of this UUID + + + + Generate a UUID from a string + + A string representation of a UUID, case + insensitive and can either be hyphenated or non-hyphenated + UUID.Parse("11f8aa9c-b071-4242-836b-13b7abe0d489") + + + + Generate a UUID from a string + + A string representation of a UUID, case + insensitive and can either be hyphenated or non-hyphenated + Will contain the parsed UUID if successful, + otherwise null + True if the string was successfully parse, otherwise false + UUID.TryParse("11f8aa9c-b071-4242-836b-13b7abe0d489", result) + + + + Combine two UUIDs together by taking the MD5 hash of a byte array + containing both UUIDs + + First UUID to combine + Second UUID to combine + The UUID product of the combination + + + + + + + + + + Return a hash code for this UUID, used by .NET for hash tables + + An integer composed of all the UUID bytes XORed together + + + + Comparison function + + An object to compare to this UUID + True if the object is a UUID and both UUIDs are equal + + + + Comparison function + + UUID to compare to + True if the UUIDs are equal, otherwise false + + + + Get a hyphenated string representation of this UUID + + A string representation of this UUID, lowercase and + with hyphens + 11f8aa9c-b071-4242-836b-13b7abe0d489 + + + + Equals operator + + First UUID for comparison + Second UUID for comparison + True if the UUIDs are byte for byte equal, otherwise false + + + + Not equals operator + + First UUID for comparison + Second UUID for comparison + True if the UUIDs are not equal, otherwise true + + + + XOR operator + + First UUID + Second UUID + A UUID that is a XOR combination of the two input UUIDs + + + + String typecasting operator + + A UUID in string form. Case insensitive, + hyphenated or non-hyphenated + A UUID built from the string representation + + + + Operating system - + + Unknown + + + Microsoft Windows + + + Microsoft Windows CE + + + Linux + + + Apple OSX + + - Same as Queue except Dequeue function blocks until there is an object to return. - Note: This class does not need to be synchronized + Runtime platform - - - Create new BlockingQueue. - - The System.Collections.ICollection to copy elements from + + .NET runtime - - - Create new BlockingQueue. - - The initial number of elements that the queue can contain - - - - Create new BlockingQueue. - - - - - BlockingQueue Destructor (Close queue, resume any waiting thread). - - - - - Remove all objects from the Queue. - - - - - Remove all objects from the Queue, resume all dequeue threads. - - - - - Removes and returns the object at the beginning of the Queue. - - Object in queue. - - - - Removes and returns the object at the beginning of the Queue. - - time to wait before returning - Object in queue. - - - - Removes and returns the object at the beginning of the Queue. - - time to wait before returning (in milliseconds) - Object in queue. - - - - Adds an object to the end of the Queue - - Object to put in queue - - - - Open Queue. - - - - - Gets flag indicating if queue has been closed. - - - - - Determines the appropriate events to set, leaves the locks, and sets the events. - - - - - A routine for lazily creating a event outside the lock (so if errors - happen they are outside the lock and that we don't do much work - while holding a spin lock). If all goes well, reenter the lock and - set 'waitEvent' - - - - - Waits on 'waitEvent' with a timeout of 'millisceondsTimeout. - Before the wait 'numWaiters' is incremented and is restored before leaving this routine. - + + Mono runtime: http://www.mono-project.com/ Used for converting degrees to radians @@ -580,6 +1711,145 @@ Used for converting radians to degrees + + Provide a single instance of the CultureInfo class to + help parsing in situations where the grid assumes an en-us + culture + + + UNIX epoch in DateTime format + + + Provide a single instance of the MD5 class to avoid making + duplicate copies and handle thread safety + + + Provide a single instance of the SHA-1 class to avoid + making duplicate copies and handle thread safety + + + Provide a single instance of a random number generator + to avoid making duplicate copies and handle thread safety + + + + Clamp a given value between a range + + Value to clamp + Minimum allowable value + Maximum allowable value + A value inclusively between lower and upper + + + + Clamp a given value between a range + + Value to clamp + Minimum allowable value + Maximum allowable value + A value inclusively between lower and upper + + + + Clamp a given value between a range + + Value to clamp + Minimum allowable value + Maximum allowable value + A value inclusively between lower and upper + + + + Round a floating-point value to the nearest integer + + Floating point number to round + Integer + + + + Test if a single precision float is a finite number + + + + + Test if a double precision float is a finite number + + + + + Get the distance between two floating-point values + + First value + Second value + The distance between the two values + + + + Compute the MD5 hash for a byte array + + Byte array to compute the hash for + MD5 hash of the input data + + + + Compute the SHA1 hash for a byte array + + Byte array to compute the hash for + SHA1 hash of the input data + + + + Calculate the SHA1 hash of a given string + + The string to hash + The SHA1 hash as a string + + + + Compute the SHA256 hash for a byte array + + Byte array to compute the hash for + SHA256 hash of the input data + + + + Calculate the SHA256 hash of a given string + + The string to hash + The SHA256 hash as a string + + + + Calculate the MD5 hash of a given string + + The password to hash + An MD5 hash in string format, with $1$ prepended + + + + Calculate the MD5 hash of a given string + + The string to hash + The MD5 hash as a string + + + + Generate a random double precision floating point value + + Random value of type double + + + + Get the current running platform + + Enumeration of the current platform we are running on + + + + Get the current running runtime + + Enumeration of the current runtime we are running on + Convert the first two bytes starting in the byte array in @@ -865,7 +2135,7 @@ Takes an AssetType and returns the string representation - The source + The source The string version of the AssetType @@ -879,7 +2149,7 @@ Convert an InventoryType to a string - The to convert + The to convert A string representation of the source @@ -893,7 +2163,7 @@ Convert a SaleType to a string - The to convert + The to convert A string representation of the source @@ -968,7 +2238,7 @@ Convert a native DateTime object to a UNIX timestamp - A DateTime object you want to convert to a + A DateTime object you want to convert to a timestamp An unsigned integer representing a UNIX timestamp @@ -999,964 +2269,330 @@ Attempts to convert a string representation of a hostname or IP - address to a - + address to a Hostname to convert to an IPAddress Converted IP address object, or null if the conversion failed - - Provide a single instance of the CultureInfo class to - help parsing in situations where the grid assumes an en-us - culture - - - UNIX epoch in DateTime format - - - Provide a single instance of the MD5 class to avoid making - duplicate copies and handle thread safety - - - Provide a single instance of the SHA-1 class to avoid - making duplicate copies and handle thread safety - - - Provide a single instance of a random number generator - to avoid making duplicate copies and handle thread safety - - + - Clamp a given value between a range - - Value to clamp - Minimum allowable value - Maximum allowable value - A value inclusively between lower and upper - - - - Clamp a given value between a range - - Value to clamp - Minimum allowable value - Maximum allowable value - A value inclusively between lower and upper - - - - Clamp a given value between a range - - Value to clamp - Minimum allowable value - Maximum allowable value - A value inclusively between lower and upper - - - - Round a floating-point value to the nearest integer - - Floating point number to round - Integer - - - - Test if a single precision float is a finite number + A two-dimensional vector with floating-point values - + + X value + + + Y value + + + A vector with a value of 0,0 + + + A vector with a value of 1,1 + + + A vector with a value of 1,0 + + + A vector with a value of 0,1 + + - Test if a double precision float is a finite number + Test if this vector is equal to another vector, within a given + tolerance range + + Vector to test against + The acceptable magnitude of difference + between the two vectors + True if the magnitude of difference between the two vectors + is less than the given tolerance, otherwise false + + + + Test if this vector is composed of all finite numbers - - - Get the distance between two floating-point values - - First value - Second value - The distance between the two values - - - - Compute the MD5 hash for a byte array - - Byte array to compute the hash for - MD5 hash of the input data - - - - Compute the SHA1 hash for a byte array - - Byte array to compute the hash for - SHA1 hash of the input data - - - - Calculate the SHA1 hash of a given string - - The string to hash - The SHA1 hash as a string - - - - Compute the SHA256 hash for a byte array - - Byte array to compute the hash for - SHA256 hash of the input data - - - - Calculate the SHA256 hash of a given string - - The string to hash - The SHA256 hash as a string - - - - Calculate the MD5 hash of a given string - - The password to hash - An MD5 hash in string format, with $1$ prepended - - - - Calculate the MD5 hash of a given string - - The string to hash - The MD5 hash as a string - - - - Generate a random double precision floating point value - - Random value of type double - - - - Get the current running platform - - Enumeration of the current platform we are running on - - - - Get the current running runtime - - Enumeration of the current runtime we are running on - - - - Operating system - - - - Unknown - - - Microsoft Windows - - - Microsoft Windows CE - - - Linux - - - Apple OSX - - - - Runtime platform - - - - .NET runtime - - - Mono runtime: http://www.mono-project.com/ - - - - An 8-bit color structure including an alpha channel - - - - Red - - - Green - - - Blue - - - Alpha - - - - - - - - - - - - - Builds a color from a byte array - - Byte array containing a 16 byte color - Beginning position in the byte array - True if the byte array stores inverted values, - otherwise false. For example the color black (fully opaque) inverted - would be 0xFF 0xFF 0xFF 0x00 - - - - Returns the raw bytes for this vector - - Byte array containing a 16 byte color - Beginning position in the byte array - True if the byte array stores inverted values, - otherwise false. For example the color black (fully opaque) inverted - would be 0xFF 0xFF 0xFF 0x00 - True if the alpha value is inverted in - addition to whatever the inverted parameter is. Setting inverted true - and alphaInverted true will flip the alpha value back to non-inverted, - but keep the other color bytes inverted - A 16 byte array containing R, G, B, and A - - - - Copy constructor - - Color to copy - - + IComparable.CompareTo implementation - Sorting ends up like this: |--Grayscale--||--Color--|. - Alpha is only used when the colors are otherwise equivalent - + - Builds a color from a byte array + Builds a vector from a byte array - Byte array containing a 16 byte color + Byte array containing two four-byte floats Beginning position in the byte array - True if the byte array stores inverted values, - otherwise false. For example the color black (fully opaque) inverted - would be 0xFF 0xFF 0xFF 0x00 - True if the alpha value is inverted in - addition to whatever the inverted parameter is. Setting inverted true - and alphaInverted true will flip the alpha value back to non-inverted, - but keep the other color bytes inverted - + - Writes the raw bytes for this color to a byte array + Returns the raw bytes for this vector + + An eight-byte array containing X and Y + + + + Writes the raw bytes for this vector to a byte array Destination byte array Position in the destination array to start - writing. Must be at least 16 bytes before the end of the array + writing. Must be at least 8 bytes before the end of the array - + - Serializes this color into four bytes in a byte array + Parse a vector from a string - Destination byte array - Position in the destination array to start - writing. Must be at least 4 bytes before the end of the array - True to invert the output (1.0 becomes 0 - instead of 255) + A string representation of a 2D vector, enclosed + in arrow brackets and separated by commas - + - Writes the raw bytes for this color to a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 16 bytes before the end of the array - - - - Ensures that values are in range 0-1 + Interpolates between two vectors using a cubic equation - - - Create an RGB color from a hue, saturation, value combination - - Hue - Saturation - Value - An fully opaque RGB color (alpha is 1.0) - - - - Performs linear interpolation between two colors - - Color to start at - Color to end at - Amount to interpolate - The interpolated color - - - A Color4 with zero RGB values and fully opaque (alpha 1.0) - - - A Color4 with full RGB values (1.0) and fully opaque (alpha 1.0) - - - For thread safety - - - For thread safety - - - - Purges expired objects from the cache. Called automatically by the purge timer. - - - - - Provides helper methods for parallelizing loops - - - - - Executes a for loop in which iterations may run in parallel - - The loop will be started at this index - The loop will be terminated before this index is reached - Method body to run for each iteration of the loop - - - - Executes a for loop in which iterations may run in parallel - - The number of concurrent execution threads to run - The loop will be started at this index - The loop will be terminated before this index is reached - Method body to run for each iteration of the loop - - - - Executes a foreach loop in which iterations may run in parallel - - Object type that the collection wraps - An enumerable collection to iterate over - Method body to run for each object in the collection - - - - Executes a foreach loop in which iterations may run in parallel - - Object type that the collection wraps - The number of concurrent execution threads to run - An enumerable collection to iterate over - Method body to run for each object in the collection - - - - Executes a series of tasks in parallel - - A series of method bodies to execute - - - - Executes a series of tasks in parallel - - The number of concurrent execution threads to run - A series of method bodies to execute - - - - Convert this matrix to euler rotations - - X euler angle - Y euler angle - Z euler angle - - - - Convert this matrix to a quaternion rotation - - A quaternion representation of this rotation matrix - - - - Construct a matrix from euler rotation values in radians - - X euler angle in radians - Y euler angle in radians - Z euler angle in radians - - + Get a formatted string representation of the vector A string representation of the vector - - A 4x4 matrix containing all zeroes - - - A 4x4 identity matrix - - + - Identifier code for primitive types + Get a string representation of the vector elements with up to three + decimal digits and separated by spaces only + + Raw string representation of the vector + + + + A three-dimensional vector with floating-point values - - None - - - A Primitive - - - A Avatar - - - Linden grass - - - Linden tree - - - A primitive that acts as the source for a particle stream - - - A Linden tree - - + - Primary parameters for primitives such as Physics Enabled or Phantom + Constructor, builds a vector from a byte array + + Byte array containing three four-byte floats + Beginning position in the byte array + + + X value + + + Y value + + + Z value + + + A vector with a value of 0,0,0 + + + A vector with a value of 1,1,1 + + + A unit vector facing forward (X axis), value 1,0,0 + + + A unit vector facing left (Y axis), value 0,1,0 + + + A unit vector facing up (Z axis), value 0,0,1 + + + + Test if this vector is equal to another vector, within a given + tolerance range + + Vector to test against + The acceptable magnitude of difference + between the two vectors + True if the magnitude of difference between the two vectors + is less than the given tolerance, otherwise false + + + + IComparable.CompareTo implementation - - Deprecated - - - Whether physics are enabled for this object - - - - - - - - - - - - - - - - - - - - - Whether this object contains an active touch script - - - - - - Whether this object can receive payments - - - Whether this object is phantom (no collisions) - - - - - - - - - - - - - - - Deprecated - - - - - - - - - - - - Deprecated - - - - - - - - - - - - - - - Server flag, will not be sent to clients. Specifies that - the object is destroyed when it touches a simulator edge - - - Server flag, will not be sent to clients. Specifies that - the object will be returned to the owner's inventory when it - touches a simulator edge - - - Server flag, will not be sent to clients. - - - Server flag, will not be sent to client. Specifies that - the object is hovering/flying - - - - - - - - - - - - - - + - Sound flags for sounds attached to primitives + Test if this vector is composed of all finite numbers - - - - - - - - - - - - - - - - - - - - - - + - Material type for a primitive + Builds a vector from a byte array + + Byte array containing a 12 byte vector + Beginning position in the byte array + + + + Returns the raw bytes for this vector + + A 12 byte array containing X, Y, and Z + + + + Writes the raw bytes for this vector to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 12 bytes before the end of the array + + + + Parse a vector from a string + + A string representation of a 3D vector, enclosed + in arrow brackets and separated by commas + + + + Calculate the rotation between two vectors + + Normalized directional vector (such as 1,0,0 for forward facing) + Normalized target vector + + + + Interpolates between two vectors using a cubic equation - - - - - - - - - - - - - - - - - - - - - - - - - + - Used in a helper function to roughly determine prim shape + Get a formatted string representation of the vector + + A string representation of the vector + + + + Get a string representation of the vector elements with up to three + decimal digits and separated by spaces only + + Raw string representation of the vector + + + + Cross product between two vectors - + - Extra parameters for primitives, these flags are for features that have - been added after the original ObjectFlags that has all eight bits - reserved already + A three-dimensional vector with doubleing-point values - - Whether this object has flexible parameters - - - Whether this object has light parameters - - - Whether this object is a sculpted prim - - + - + Constructor, builds a vector from a byte array + + Byte array containing three eight-byte doubles + Beginning position in the byte array + + + X value + + + Y value + + + Z value + + + A vector with a value of 0,0,0 + + + A vector with a value of 1,1,1 + + + A unit vector facing forward (X axis), value of 1,0,0 + + + A unit vector facing left (Y axis), value of 0,1,0 + + + A unit vector facing up (Z axis), value of 0,0,1 + + + + Test if this vector is equal to another vector, within a given + tolerance range + + Vector to test against + The acceptable magnitude of difference + between the two vectors + True if the magnitude of difference between the two vectors + is less than the given tolerance, otherwise false + + + + IComparable.CompareTo implementation - - - - - - - - - - + - + Test if this vector is composed of all finite numbers - - - - - - - - - - - - - - - - - - - - - - - - - + - + Builds a vector from a byte array + + Byte array containing a 24 byte vector + Beginning position in the byte array + + + + Returns the raw bytes for this vector + + A 24 byte array containing X, Y, and Z + + + + Writes the raw bytes for this vector to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 24 bytes before the end of the array + + + + Parse a vector from a string + + A string representation of a 3D vector, enclosed + in arrow brackets and separated by commas + + + + Interpolates between two vectors using a cubic equation - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + Get a formatted string representation of the vector + + A string representation of the vector + + + + Get a string representation of the vector elements with up to three + decimal digits and separated by spaces only + + Raw string representation of the vector + + + + Cross product between two vectors - - - - - - - - - - - - - - - - - - - - - - - - Attachment points for objects on avatar bodies - - - Both InventoryObject and InventoryAttachment types can be attached - - - - Right hand if object was not previously attached - - - Chest - - - Skull - - - Left shoulder - - - Right shoulder - - - Left hand - - - Right hand - - - Left foot - - - Right foot - - - Spine - - - Pelvis - - - Mouth - - - Chin - - - Left ear - - - Right ear - - - Left eyeball - - - Right eyeball - - - Nose - - - Right upper arm - - - Right forearm - - - Left upper arm - - - Left forearm - - - Right hip - - - Right upper leg - - - Right lower leg - - - Left hip - - - Left upper leg - - - Left lower leg - - - Stomach - - - Left pectoral - - - Right pectoral - - - HUD Center position 2 - - - HUD Top-right - - - HUD Top - - - HUD Top-left - - - HUD Center - - - HUD Bottom-left - - - HUD Bottom - - - HUD Bottom-right - - + - Tree foliage types + Constructor, builds a vector from a byte array - - - Pine1 tree - - - Oak tree - - - Tropical Bush1 - - - Palm1 tree - - - Dogwood tree - - - Tropical Bush2 - - - Palm2 tree - - - Cypress1 tree - - - Cypress2 tree - - - Pine2 tree - - - Plumeria - - - Winter pinetree1 - - - Winter Aspen tree - - - Winter pinetree2 - - - Eucalyptus tree - - - Fern - - - Eelgrass - - - Sea Sword - - - Kelp1 plant - - - Beach grass - - - Kelp2 plant - - - - Grass foliage types - - - - - - - - - - - - - - - - - - - - - - - Action associated with clicking on an object - - - - Touch object - - - Sit on object - - - Purchase object or contents - - - Pay the object - - - Open task inventory - - - Play parcel media - - - Open parcel media + Byte array containing four four-byte floats + Beginning position in the byte array X value @@ -1970,12 +2606,23 @@ W value - - - Constructor, builds a vector from a byte array - - Byte array containing four four-byte floats - Beginning position in the byte array + + A vector with a value of 0,0,0,0 + + + A vector with a value of 1,1,1,1 + + + A vector with a value of 1,0,0,0 + + + A vector with a value of 0,1,0,0 + + + A vector with a value of 0,0,1,0 + + + A vector with a value of 0,0,0,1 @@ -2026,577 +2673,5 @@ Raw string representation of the vector - - A vector with a value of 0,0,0,0 - - - A vector with a value of 1,1,1,1 - - - A vector with a value of 1,0,0,0 - - - A vector with a value of 0,1,0,0 - - - A vector with a value of 0,0,1,0 - - - A vector with a value of 0,0,0,1 - - - - A three-dimensional vector with floating-point values - - - - X value - - - Y value - - - Z value - - - - Constructor, builds a vector from a byte array - - Byte array containing three four-byte floats - Beginning position in the byte array - - - - Test if this vector is equal to another vector, within a given - tolerance range - - Vector to test against - The acceptable magnitude of difference - between the two vectors - True if the magnitude of difference between the two vectors - is less than the given tolerance, otherwise false - - - - IComparable.CompareTo implementation - - - - - Test if this vector is composed of all finite numbers - - - - - Builds a vector from a byte array - - Byte array containing a 12 byte vector - Beginning position in the byte array - - - - Returns the raw bytes for this vector - - A 12 byte array containing X, Y, and Z - - - - Writes the raw bytes for this vector to a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 12 bytes before the end of the array - - - - Parse a vector from a string - - A string representation of a 3D vector, enclosed - in arrow brackets and separated by commas - - - - Calculate the rotation between two vectors - - Normalized directional vector (such as 1,0,0 for forward facing) - Normalized target vector - - - - Interpolates between two vectors using a cubic equation - - - - - Get a formatted string representation of the vector - - A string representation of the vector - - - - Get a string representation of the vector elements with up to three - decimal digits and separated by spaces only - - Raw string representation of the vector - - - - Cross product between two vectors - - - - A vector with a value of 0,0,0 - - - A vector with a value of 1,1,1 - - - A unit vector facing forward (X axis), value 1,0,0 - - - A unit vector facing left (Y axis), value 0,1,0 - - - A unit vector facing up (Z axis), value 0,0,1 - - - - A thread-safe lockless queue that supports multiple readers and - multiple writers - - - - Queue head - - - Queue tail - - - Queue item count - - - - Constructor - - - - - Enqueue an item - - Item to enqeue - - - - Try to dequeue an item - - Dequeued item if the dequeue was successful - True if an item was successfully deqeued, otherwise false - - - Gets the current number of items in the queue. Since this - is a lockless collection this value should be treated as a close - estimate - - - - Provides a node container for data in a singly linked list - - - - Pointer to the next node in list - - - The data contained by the node - - - - Constructor - - - - - Constructor - - - - - A three-dimensional vector with doubleing-point values - - - - X value - - - Y value - - - Z value - - - - Constructor, builds a vector from a byte array - - Byte array containing three eight-byte doubles - Beginning position in the byte array - - - - Test if this vector is equal to another vector, within a given - tolerance range - - Vector to test against - The acceptable magnitude of difference - between the two vectors - True if the magnitude of difference between the two vectors - is less than the given tolerance, otherwise false - - - - IComparable.CompareTo implementation - - - - - Test if this vector is composed of all finite numbers - - - - - Builds a vector from a byte array - - Byte array containing a 24 byte vector - Beginning position in the byte array - - - - Returns the raw bytes for this vector - - A 24 byte array containing X, Y, and Z - - - - Writes the raw bytes for this vector to a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 24 bytes before the end of the array - - - - Parse a vector from a string - - A string representation of a 3D vector, enclosed - in arrow brackets and separated by commas - - - - Interpolates between two vectors using a cubic equation - - - - - Get a formatted string representation of the vector - - A string representation of the vector - - - - Get a string representation of the vector elements with up to three - decimal digits and separated by spaces only - - Raw string representation of the vector - - - - Cross product between two vectors - - - - A vector with a value of 0,0,0 - - - A vector with a value of 1,1,1 - - - A unit vector facing forward (X axis), value of 1,0,0 - - - A unit vector facing left (Y axis), value of 0,1,0 - - - A unit vector facing up (Z axis), value of 0,0,1 - - - - A two-dimensional vector with floating-point values - - - - X value - - - Y value - - - - Test if this vector is equal to another vector, within a given - tolerance range - - Vector to test against - The acceptable magnitude of difference - between the two vectors - True if the magnitude of difference between the two vectors - is less than the given tolerance, otherwise false - - - - Test if this vector is composed of all finite numbers - - - - - IComparable.CompareTo implementation - - - - - Builds a vector from a byte array - - Byte array containing two four-byte floats - Beginning position in the byte array - - - - Returns the raw bytes for this vector - - An eight-byte array containing X and Y - - - - Writes the raw bytes for this vector to a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 8 bytes before the end of the array - - - - Parse a vector from a string - - A string representation of a 2D vector, enclosed - in arrow brackets and separated by commas - - - - Interpolates between two vectors using a cubic equation - - - - - Get a formatted string representation of the vector - - A string representation of the vector - - - - Get a string representation of the vector elements with up to three - decimal digits and separated by spaces only - - Raw string representation of the vector - - - A vector with a value of 0,0 - - - A vector with a value of 1,1 - - - A vector with a value of 1,0 - - - A vector with a value of 0,1 - - - - A 128-bit Universally Unique Identifier, used throughout the Second - Life networking protocol - - - - The System.Guid object this struct wraps around - - - - Constructor that takes a string UUID representation - - A string representation of a UUID, case - insensitive and can either be hyphenated or non-hyphenated - UUID("11f8aa9c-b071-4242-836b-13b7abe0d489") - - - - Constructor that takes a System.Guid object - - A Guid object that contains the unique identifier - to be represented by this UUID - - - - Constructor that takes a byte array containing a UUID - - Byte array containing a 16 byte UUID - Beginning offset in the array - - - - Constructor that takes an unsigned 64-bit unsigned integer to - convert to a UUID - - 64-bit unsigned integer to convert to a UUID - - - - Copy constructor - - UUID to copy - - - - IComparable.CompareTo implementation - - - - - Assigns this UUID from 16 bytes out of a byte array - - Byte array containing the UUID to assign this UUID to - Starting position of the UUID in the byte array - - - - Returns a copy of the raw bytes for this UUID - - A 16 byte array containing this UUID - - - - Writes the raw bytes for this UUID to a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 16 bytes before the end of the array - - - - Calculate an LLCRC (cyclic redundancy check) for this UUID - - The CRC checksum for this UUID - - - - Create a 64-bit integer representation from the second half of this UUID - - An integer created from the last eight bytes of this UUID - - - - Generate a UUID from a string - - A string representation of a UUID, case - insensitive and can either be hyphenated or non-hyphenated - UUID.Parse("11f8aa9c-b071-4242-836b-13b7abe0d489") - - - - Generate a UUID from a string - - A string representation of a UUID, case - insensitive and can either be hyphenated or non-hyphenated - Will contain the parsed UUID if successful, - otherwise null - True if the string was successfully parse, otherwise false - UUID.TryParse("11f8aa9c-b071-4242-836b-13b7abe0d489", result) - - - - Combine two UUIDs together by taking the MD5 hash of a byte array - containing both UUIDs - - First UUID to combine - Second UUID to combine - The UUID product of the combination - - - - - - - - - - Return a hash code for this UUID, used by .NET for hash tables - - An integer composed of all the UUID bytes XORed together - - - - Comparison function - - An object to compare to this UUID - True if the object is a UUID and both UUIDs are equal - - - - Comparison function - - UUID to compare to - True if the UUIDs are equal, otherwise false - - - - Get a hyphenated string representation of this UUID - - A string representation of this UUID, lowercase and - with hyphens - 11f8aa9c-b071-4242-836b-13b7abe0d489 - - - - Equals operator - - First UUID for comparison - Second UUID for comparison - True if the UUIDs are byte for byte equal, otherwise false - - - - Not equals operator - - First UUID for comparison - Second UUID for comparison - True if the UUIDs are not equal, otherwise true - - - - XOR operator - - First UUID - Second UUID - A UUID that is a XOR combination of the two input UUIDs - - - - String typecasting operator - - A UUID in string form. Case insensitive, - hyphenated or non-hyphenated - A UUID built from the string representation - - - An UUID with a value of all zeroes - - - A cache of UUID.Zero as a string to optimize a common path - diff --git a/bin/OpenMetaverseTypes.dll b/bin/OpenMetaverseTypes.dll index 7ebf45edc89f7188b43a18e1eeed29461dfe2317..b989bad3f12716ee5d90aeded140aedada4b853d 100644 GIT binary patch literal 105984 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

m>Ou8x8zmRAfkr$4I9mQD<}6**^P}ma za*eKw$~Ah-eB@1W%SUNR>f!ox_|2#V^QVlohegP}fk#6l`nMA@?LgQzO&eXV6Ft%f ziFVXwA!-DheDAwU))o(mS!$mBQ8eGXw9P4k7il&I+ECQk*7d> zT2su{Zfpz3#u3}j>zcj(2`4XdXodT7tfMw>na=mT)#5t$2YRpKjci1oUJlmT}oiGYWXNhlTYQcRw!l3v{|5{N`B z-t?A*lM1G}vMP!Ml;ne_vbgfbkihGA3t8dzXA3t3z4%Yc{C+=j$j$W%E3dEx zl0Kxp7Fvr`c1dBmg@7zlhKZ0Xt8nmsuPvejV51C3T|CQqdVEf`D9 z?NwR1XrF#ACpFuhxkz)Z(&>t%Mn$L<=|K_GQ4H)D^jg8#Tr^59w8~s+<3Qoy$K7-- z&jPD(@UATMULX(vLPNqP@Qpr21);K_Gr;4*aR3a9%arRg0hAsxd3k>77rS@>%N@X( zktwQxuLOUjnA#_hLp?J10PCV~!QdCQUgp|*a+z-jgo$3@R+t5(J73~M53X#aV?CP@ptOVL zN_ecWR6ckV9(h5#d-J{id}&P(`4gZBUy{hCOh^ zPg*>}qJd09++X3Q!JL;DKp*-2=&roHJXk|TUWEnA$s-XAZ?t~l;Ok^TdC0+sYvJIZ z3I_iS<1HL~1o}{6FV8q$s8C+z%a=;#SD3(CI<;K7~I9(ZBGVNZ#_Qku}C8a z1*H+L=YaG$#JEQ!#-SPhz$m}YT;-wZE8IDtRKH4>^k!vMxH0NB`Pgzc`4B?wytw35 z=1{cT{9s0bWTmvw9D=3LA6z9x^PI}1MsZiTsm7b8xe4TDS6YReCh_FQZHVjiKO>x*5%y6ZZMuxLHRX9Z_kv9=7{nC;@Re0j7(gk}zcj?h>Ol@^1TdbnsIvG` zur)HtO_v2Qu~Wi4*eJ{aA#^_#VmSmj!b{rn3pXv{s@?#z5fwmO{V=NI&85o2dgR~m zAA1}t$I0n(hP)Ub;HZ%< zxl+dECtb82x+D=rgs{s?1RpLI=s}QqL%8 zg~AFoQz(g+BRvXDI8UfSWG-EQ!w)_=5|9;gg1kUZlo!g2@BxxZaxzsBKd)Wo+EN5v zou{YIbN%82zq-=({yqDzay>hyX&%V;nJ~P{HT&&P%ym6CBRt>oNS@pUrfQE0VCZ0eB(#dN(HSC!?*`c~}0Fr+aCjeZKlZ@`svQ8Yx6n<6g&DL}mi#mI~%B1GUr zXP{Y_Z6IV-3V)8rN6GmIlTJY~rc%Er8s$D!?&BDNdLzg$bkd?e2*U?qlhk; z>@_3LlbsoZb%c{_8{^5zw(iit?l*tQ5e%mY;*^*yvY8b7ZVc%p&2slPGPmBWs<`vwzqKbXg>KlnQmJ)_^=9g z+Jux9g@eDvg++ZHS(y{w0XAZ1Z#1Z$kr;(}6~EaW7GYsb76a zl#f*84UoA0&&@_*eB@HgX*CD9wGnYZ_XsrDq6fI+Nu|v}uVqtS`UfdtDWucwv4}x84iw-gK5tC&x+L)V&Z~yxYKg`yQMnkc>W?rIXwNaL%vkLfm4r z@7d|I3es1D-zyO_m(Q`zEyaIF{&Xg?2&WWO?l#nu&b;+Wye`LRWu`k5bZSj!zId0F z&s~Uj9k-Ny+HwU>J!asn#{MOVdYrG&X}v!Gz5*>tPhRNr_b48Es6-k1_~e-$InX!i zJCTdNzjFm*-iLodF&nY7#ieMW%fuzPO&CT#a}Yj%J7(i-hfcid96W*46s9&_3=Wmz zLYx@sw!ZjX`iUgSu}QDm*dtp3tRZ?~l_S<<@);0o)=bFQhZAsH^?sxP?oc{0#HGC| z8-XHPHs~ZEL(FF{%W|9tdp25@&&k7!`G|JsG&FW&4~{{w8%Hp3_Xl@lnS(orF<@b0 z!t6y++7BDtYtJ)#X`Jn)357R5bRjUfmpr~4J@4$r1(PGBENqJ4Ye7W$D%=R=@Sxu7 zjOM*ONY&eNDZ^3P&LjN8fCU#+kn+Ay7N@Np}vEXBa#PbR+ zw1(k=iomhPsgqae>4gG%eS@zC33!7QZVzUGO#|k7E7S{|L*#he*im7VhKyNY6Ka5C zKAJK%jm_o4?n9sF@g{F@KTRE*F2jU@@@3)B3(0Wt;zE-MZT4g~$AD6dN5|j-fYu=~ zTtIV}f)BTpv{4Kd4#*?|kC0Jb;r0N zPXqI?N}$?wDu+C2#|a7#)I+;VFJ(wN6zwSS#|S(Ug}10>vCpA=;B=r1z(ACTf^aZ! zAvXi6FoBy3?dE`d=m6{n8{vAP?Fu(F@xD^#6;vYof=b$g=M_{@xJrkoQg|wb3qqhO z$LGVMBXjb7tjmWjBl?Kc!ZR}$G`92sX7e!uAEUqr!)XFA$}jhik-yt3uLmmt(L=zLEVu&q% z2m$l-!0Q3^ib}3lWlSOfUxLyaeuc1?! z5|c`l*h!@$x7np1wo5-utv#Go35&))jXb_#rw+rp+~$a-wjSo(DHi{^txXsZnV}qn zxh53IWrxIw;4GS&2LHLOhn==2-IS*;EeY5qJZP8jAeHbS&92nQ#u^TC$qwqaK4`4r zAeZnUr176iXu^QV0L?|1OGp9T)<#5I0|8qJEJJ&_V50S$FyI!h#X+YQ2X!q-H7Y|& zsLY46_^=G~9mYBi=f-$k*ge4or2{`;_N9J1fxi9OsY;jP8%_9Zfb*IM-h9Bz@AAW? z|0noHXM1t~`}ji(*mqrP{Gbl_SP|U8*FIc?pB>Q8U1&e>ANP-n$ZR_DT=aan$2`zm zkim2FOY=A_ccfg4@EX?G3`Q=!wpeMuK0huaCXe6xcA`o$qI{f)Ual|A;AZOt#6DM; zUb`PfnAjuAHy_{JD9lirrC-t?Q7e97e?%&JdA~R#m6r>M7x+gMM3)cTQA7vAqlpfL zM`S}U{g2PcW{lRz@A+5a69A*c@eBJDH==2|cuul&qnuQu6bj!37$qOA44(-YB~EKY z+`09Jvh(E*`4O!?KOBt?oT~xf92ljL;Ff1JlpmiMsMMb&sGK#z{3rq+DX8R@98nZI zMkhN*8zrJUM#B?YVrCTZG?b2PFO?2O<4)NYx^6 z9Znurg3^;E9XL5?#U6Jhu8aApCX#%@_3Arx2jlFYs|>@1Yld3pHh@ZKrKc+vV5OiZ z7Miegrf1RUrwT5$z>_5O`~^K}LFXd$90l#J_0PkuYAD5|&-;D-?BBVX@KJfl%yjrn=JfrH95fK~_sg-w}k8GZ6$ z>pfd$D&1?r^Ck35A3g0z8tGX#dPZ+8p4do1TP1$m@I`yct)idrpeG6OVOb}~R-~fm zJX%2Mi97qm2VcN}Hj1Ou7<$@Me_y?t^R?Tkf#cIpQl{IM@(v(pyRK9}dIk^A`SH(8 zZaZ7g$Ws~;IJ@1JaXng1{ivs?9(H;{x&{C1^`SDR+fiE!J;!K2D{7Zmm-~NPT1nry Q#~33c{l7o|$F;!!13$u`tpET3 literal 114688 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%0DB{ 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 From d4ba505c8524c3864099bcbcffdd026ec7f1d46e Mon Sep 17 00:00:00 2001 From: Melanie Date: Mon, 4 Oct 2010 04:25:30 +0100 Subject: [PATCH 2/5] Revert "Add the matching PrimMesher.dll" This reverts commit be301c5815ea57f621d565bcc40dfa7ce530162e. --- bin/PrimMesher.dll | Bin 37376 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/PrimMesher.dll diff --git a/bin/PrimMesher.dll b/bin/PrimMesher.dll deleted file mode 100644 index 249e91c0a5bdb6485e6f937a932aa1887fa28b4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37376 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 From f35a88663be33ac3f34465b9f8cb285f52a9422f Mon Sep 17 00:00:00 2001 From: Melanie Date: Mon, 4 Oct 2010 04:25:37 +0100 Subject: [PATCH 3/5] Revert "Fix a comment marker" This reverts commit f89dd85f68e3e05c0ca908e5358d935a6ea3a321. --- OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs index 4cb4aeec02..c19e6a2351 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs @@ -1,4 +1,4 @@ -/* + * Copyright (c) Contributors, http://opensimulator.org/ * See CONTRIBUTORS.TXT for a full list of copyright holders. * From 78aea6239d88822d3bd9c1c5b883df9fb2529de7 Mon Sep 17 00:00:00 2001 From: Melanie Date: Mon, 4 Oct 2010 04:25:44 +0100 Subject: [PATCH 4/5] Revert "Add linden prim renderer and update libOMV" This reverts commit 766ce9a14146dc9814d488364f5c931d0fa96a17. --- .../LindenUDP/UnackedPacketCollection.cs | 47 +- .../CoreModules/Asset/FlotsamAssetCache.cs | 4 +- .../UserAccounts/UserAccountCache.cs | 4 +- .../SimianUserAccountServiceConnector.cs | 6 +- bin/OpenMetaverse.Rendering.Linden.dll | Bin 40960 -> 0 bytes bin/OpenMetaverse.StructuredData.XML | 496 +- bin/OpenMetaverse.StructuredData.dll | Bin 95232 -> 102400 bytes bin/OpenMetaverse.XML | 42908 ++++++++-------- bin/OpenMetaverse.dll | Bin 1768960 -> 1691648 bytes bin/OpenMetaverse.dll.config | 14 +- bin/OpenMetaverseTypes.XML | 2992 +- bin/OpenMetaverseTypes.dll | Bin 105984 -> 106496 bytes 12 files changed, 22581 insertions(+), 23890 deletions(-) delete mode 100644 bin/OpenMetaverse.Rendering.Linden.dll diff --git a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs index c19e6a2351..e43f7cf57a 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs @@ -1,4 +1,4 @@ - +/* * Copyright (c) Contributors, http://opensimulator.org/ * See CONTRIBUTORS.TXT for a full list of copyright holders. * @@ -139,43 +139,28 @@ namespace OpenSim.Region.ClientStack.LindenUDP private void ProcessQueues() { // Process all the pending adds - OutgoingPacket pendingAdd; - if (m_pendingAdds != null) - { - while (m_pendingAdds.TryDequeue(out pendingAdd)) - { - if (pendingAdd != null && m_packets != null) - { - m_packets[pendingAdd.SequenceNumber] = pendingAdd; - } - } - } - + while (m_pendingAdds.Dequeue(out pendingAdd)) + m_packets[pendingAdd.SequenceNumber] = pendingAdd; + // Process all the pending removes, including updating statistics and round-trip times PendingAck pendingRemove; OutgoingPacket ackedPacket; - if (m_pendingRemoves != null) + while (m_pendingRemoves.Dequeue(out pendingRemove)) { - while (m_pendingRemoves.TryDequeue(out pendingRemove)) + if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) { - if (m_pendingRemoves != null && m_packets != null) + m_packets.Remove(pendingRemove.SequenceNumber); + + // Update stats + System.Threading.Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); + + if (!pendingRemove.FromResend) { - if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) - { - m_packets.Remove(pendingRemove.SequenceNumber); - - // Update stats - System.Threading.Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); - - if (!pendingRemove.FromResend) - { - // Calculate the round-trip time for this packet and its ACK - int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; - if (rtt > 0) - ackedPacket.Client.UpdateRoundTrip(rtt); - } - } + // Calculate the round-trip time for this packet and its ACK + int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; + if (rtt > 0) + ackedPacket.Client.UpdateRoundTrip(rtt); } } } diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs index 6ed48674b2..9eaa758bd5 100644 --- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs @@ -252,7 +252,7 @@ namespace Flotsam.RegionModules.AssetCache } else { - m_MemoryCache.AddOrUpdate(key, asset, Double.MaxValue); + m_MemoryCache.AddOrUpdate(key, asset, DateTime.MaxValue); } } } @@ -863,4 +863,4 @@ namespace Flotsam.RegionModules.AssetCache #endregion } -} +} \ No newline at end of file diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs index e7cfda1bf1..7c12b8c0ff 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs @@ -53,9 +53,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.UserAccounts public void Cache(UUID userID, UserAccount account) { // Cache even null accounts - m_UUIDCache.AddOrUpdate(userID, account, CACHE_EXPIRATION_SECONDS); + m_UUIDCache.AddOrUpdate(userID, account, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS)); if (account != null) - m_NameCache.AddOrUpdate(account.Name, account.PrincipalID, CACHE_EXPIRATION_SECONDS); + m_NameCache.AddOrUpdate(account.Name, account.PrincipalID, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS)); m_log.DebugFormat("[USER CACHE]: cached user {0}", userID); } diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs index 9c150ee417..ddd232286f 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs @@ -147,7 +147,7 @@ namespace OpenSim.Services.Connectors.SimianGrid if (account == null) { // Store null responses too, to avoid repeated lookups for missing accounts - m_accountCache.AddOrUpdate(userID, null, CACHE_EXPIRATION_SECONDS); + m_accountCache.AddOrUpdate(userID, null, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS)); } return account; @@ -225,7 +225,7 @@ namespace OpenSim.Services.Connectors.SimianGrid if (success) { // Cache the user account info - m_accountCache.AddOrUpdate(data.PrincipalID, data, CACHE_EXPIRATION_SECONDS); + m_accountCache.AddOrUpdate(data.PrincipalID, data, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS)); } else { @@ -290,7 +290,7 @@ namespace OpenSim.Services.Connectors.SimianGrid GetFirstLastName(response["Name"].AsString(), out account.FirstName, out account.LastName); // Cache the user account info - m_accountCache.AddOrUpdate(account.PrincipalID, account, CACHE_EXPIRATION_SECONDS); + m_accountCache.AddOrUpdate(account.PrincipalID, account, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS)); return account; } diff --git a/bin/OpenMetaverse.Rendering.Linden.dll b/bin/OpenMetaverse.Rendering.Linden.dll deleted file mode 100644 index 9642a8d7c47b7fa3946b90ec06fabe38b2fab562..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40960 zcmeHw3wT^tb?!dzGf(Nvv1cU5k5OzVBafuWlI%!%jbvGl6>P`0WJi)AiY$%osbq~Z zGx8&f5*Y$q^D6X02@qZZTGAH6?c+jvTM`PTg$r#1H!ZZ3=4)vw_x6^{Z40Geo7{h` zea_4o*-mK7*YCTn#+iNgUVH7e)?Rz9wO?nHgA;ERnh-+A_r({5_!OS>>F4yNlND6Q zxBO~c{Br2aEuT^je7R-xOre}!C>2karp~6Pr{?F2mGsGcy0kc-F3hL*-aV2&Tb#*v z#A4xX9_hnFLL5*u@u!)O9Pqh4FVvQZVhgbVNLoVgc(s@R0GAzxH%hq)Lh|$Hd8B~T zM-%<8`MDwxS=MJzNqBF?H}L5fVo#vB zmR-}png-T1u%>}E4XkNkO#^EhSku6o2G%sNrh)%J8c5T=8Xwx5s=^S5r?3@H3!xD3 zU+~d7P4Sf1E^f4i)wr>23K7mmN+7vVwvc~7UBcElTnr&mm%>P!Cfn|nxh?&Z?fYdm zy#hLu?YC$TMu4(}oo)DfqTHR4kW37aRQCq2K916s#_ou!8*x3O3SsV$S?ubOWj-4w z+dYn(C)?txMyPQ!gTn)JN2#6UYXFr8z{Kse#M{skLOTuG5_Z$!qJt#dpe`k-;3A0x zYf|GIPDGP2Pj)C%Ot#rpYTTTNWi54S9q?lt-V9wRuAX$w-b>)(=#Kf51kysbV@`|} z*8^)QiDa3QYW0IDlssmHSZpG^W+bGM+}QGlE3moZiYC_qZ+v+pVVkKj*L2Jcx$`f+ z_+r9v^b||N+#NkxD`Yk?@unK24wtJln}M^u1xdn47)zANqWNr0`rwM4j-gJ$u55 zP?|Adb&|XjEpDZLh1)kfk@gL$nuzi+YO-PmBh~maKV~7;jb=*|yeU95?H;v)ZEFT*{1|>I^ zbmP6R=1wK_p1na=a6^W;*(6Z>^(v zSHccDt$9_Cy($j5C=b*a`)PLnRk2q2zK6r@Jg4_q);!*9?^0FG(Q83wm3>v~$YZv< zmTP7=sR^4+ku5G^CM=YxI)gy&Td&R5i+BmtoGjkwhfZ!3=1|p?PMXH)1QWr^)tS z-~gJmyYF^Ql6uEmsUaF1b3*{h35x{9= zF@ox8y9L7BB>M!}f;`Q-g3n)SylK4azwfwqOCMR%^#}!8BG#DV@37dwa=`J$!N5%> zUr_L0xIwQi4}t>!PRLo5-Ro}UD}1jHIvcaS60nx!(`ifyDfycu#$6)?0yOm0-2oI zzNt<=d#olQ>bG38(y?a8$yaGTV~<%~iE0)xbYcuKG+u*HIT7}PW>^o#9_d|S$8gN@ zZqQ=iN`z&MruBmpYEP?bU7PK0yPOZ(<$UPYS96T=+%qg^)DY|s8uJysr%uuEDAw!F ztexC>W8y0EU4Rmfv>`@(zzBqNWT}|ljKw5O%tIB zyJ=!9HCF5c7%HI7H;v!aqAsn%1Bn1;wo{@u?+n2MZ$Tq$Cb-FZrj%`zB{cD9!@#y& zK~$0)mrZg`v^@j^xb;eESYoXbXTq~wbfGH!)i}T-No>gh#!vmbrqI`~X5;IlM#GOp z<2PNcH>t5IudZwN2ElH1Z&bYB7TKEt`V14T%{0P$Di}iS|T3sG$auON~Za=)$_|={Zi2 zU?P!_`yi*0*XF#)xKuiN#4?xqsSx^h$8xaBhlV4i#5@;St9valyPl#}58 zTt-vXmAv72)eQn~hH3ldHcLdWskWUbm=wL8gvAAvL?Ycc@sU(^~JYyBY;|V`8IoU7(Y)Ip{bW zujuO))UVyTDuqX;)>n!Nxtq|};JHw`|8KB*3!EEW*Z-%qoJ+Ocm)L|w(Mk@95S(Ok zpn$>7-g?yzZBA@V3pWHY@WUfn}e&^RJ$glRyvV(wp@*0 z70*dujqww`v|!bi`XNPe0Eyd@bgxgkTa)fKrzO>`rQGZB>wG?USW-JxBQMb=d9=i5r~lfo{OqZ&)QZxBWtZ z<<1&Q+1aX*dwcJi@vRo&H%SCfvlM-5L4{VSQnNQEZd@hOYCPx0tBLr8v$gNX>N%NJ z79hoIO|&|hfX1Y7p$#VW$cHRt z_5cJ@bS}cjBp}6D!D^#c&3h*zMcrck?$A0_@#j)pp*~3GfP7pGKF!GQPDq$nTqc-@ zMdw8T(<6XI#bru7EZWEdiyi?iDlSu^KDZ5OkYf)x60DvhV+A+{umT(zE5I>;Rplth zNEP?{eO{s?ap;X6yJM=CGL8pVBh#Ejydc(}Sbm)VcZtZN`Q%sDgZTD|W94b8D+6tIor zU8rhLc}IM-&9m%~qh~@m70RBJ)lJ>w-a(xkN`$tv<`W@)Oz`LukW>mFJtlZC2}l|Q zkRB5}c0M0l$01r6JRpi=OYgvO7Y^nvjU6L5Ry~W=#3W=k_e6JudJuTNOo#8||P8xvtGZcao@gR#cOP}IF_L^b7*Sv)#B_}uq8OiVZc zcVJ6o@DJhr&2Z)b@soURvibS+t`iA4ql1_?!SmeSps@e5c8HG{crB6y{xK*o6-Gr; zRbHx!iln4GD=B-NNnf#S@JUlcCcV4;pGDX7`o#N)sA?PBFQU{xL1}J0&x%k{Sjm}J zR?Dj((vu-((E!J^&O;bQU4JyJEzw1qnM`JI=wL=<(V}t!K>7$ zWbqh^5oR2<6AIrXFeNHb1ZGaQxkR$CK**CoEEV!3D$8r{Shs`D=?dTt$M{kET;H!) z`8ep&c10?|(WMp~U8(_axLz{TKpm#;IJ)$ETYLk2p=L*}x7swlU0t_>6>pH@`%%k_ zu!vr~2l=R89K$1Khs=bYFfwo&(~~6y*QW7tJ%D4HDaYU;a;=0}yM1)+gjG9vbVCRV zwiB{EX5%35Whao;GcZZh4Qq7tj+-LxgBy_@jyiP8%^iw5ChHjxibO1lN|R<>rovm&5h+wi+^2<#F(&+#rkDi$2a~uU=a^Q!h1LOIPcN$A<16ztNV) zY7Mu_CUozZvxQJdmrWC_(risXY1sysu0?ndT_HwoGuMS}dJ?C>Jr?FOa#hz%n5v;+ zJ^d3X0f-Po3l)fC0>?3na}38cVK|1x-rn^a)()B*HE|SZQE5BX0rYRR`EosCnG@x+ zpnzk<>^j>&?{ws0C7<~Kqw6oQsOx*`M%XmOKw4{t(Cs%c&PbLRZpO?hs~Of1zvUeuyEmS--kCgGmwB z6y%#^<+Spw`oarp1mH%1S<`egT0$WfbS782rE8mgx4>nszTd}y(W?s2KuKf=_s|gA zIH|^hz_H|EF6I0i6w2HF#qX+oJx;Y`NK?Uic-P}-F6mb(gIP6?s?->mUmFm_W?T;y zd3w_UN*mAZqC*gc&ushpuwcQ33V7q%9F@2Mwz6|r_Q)$kvu!6N3OQDdB}_0_4A%;% zaYNagRyV-uWDUp0y=0XbYUr}w3E`IOO}-S_i2(Nu5v%q#T+M-%mzPX$xCS0Lcz8ix z@9W)zC`F_C*?+51g@V~^syzq{6xY>_>y;2{Tx(0nUMV=RU4enU57tZedLuLg1FN<* z{2X|AS>OI}NB9-b1|rn76HOyFcGG?n2Nx_gN>r#44$$~Q@3$~FSbg7>o|7&7INb(4 z_a*RH;>rzf6Hr6fPhw=Vh0u@DS+C>@?XBkOyVPHBzoWo#V?mdSIx%^DOfH3`h2IYp z>Rl>Ut3!<&WtXaJ5UY2oKm*i(Ys`sCmy%MDOI5j(OGT?A8ms2O%F9cpV;(wgO4eRrz@-6I|if>y;VaT^ZY@k-VRkin|d>6+j17m;A8=W|{YePHl zwF1fo4V?;Aih=fDc5Ge`j$?y?CBDNOHqpZyFVU!C>M3J-iQ-w|X+};(u5O2}5C6f| z+s1eMnJ84&AoyKAdJ|~~bC~!6dy(!eH8!(SP^Jye2xeVTyGwDp> z7BFesj4c{1N>g}NXSxh#ZnL-uuuV<+C;a<&lW)bbtvdhdhjU{-)N;&7_NFaqYs;3& zlh0y_ElE1YcABV~m@95?Ggt~ps`Lg3w!~duN=CA~JjNC;7vxU76PzVuIrB@=EUYxn zp@v%r#qIhvPnClQpaCf6Jh0q#&blp)yJF6|WXC9FJKD1c@Jx5?L)zKhuO>taO#1tg zJo9O$0Oh!lvDW|@R41vXU#CsvDui!Av0nR?tF-@3s%}OzJ{|uTsJy?X@-V3!<$9Il zb)BHfqgPdV^a_1DgG_e9&0 z?oK%k#H;_rT;>8SWtIzs+E8#CjW#{5yN#;T2=KpT{4f-}U+N7mCA)WcBa{ppZfcx) zY)L0;zLCA*YM58z`6fTE)=WO>Bw6c8GI?Y>4#DJ;(7KJZv!f+@$10_gZhW0Lf{<73 zD>YdCJ;W6nGuE9q|>*-Taj1W1g6B%Q&-F3RIuS>C_SzC1# z-pt@V$aq$AJz>PLWwN;J5l`ve`!P-o@{BDhV{5`I;%59J;kT5qZ(KlcumK9c30p6v z_yBU5B_#5t?$xtIlShH~L$z7L8-Tu7qnF6jd=f;&TO-{6&4G9nbdKHIYmI1w<>PN@ z3^d5%H0KJ+O&;YsOcPr>KFj+Ao;Y@Lw7|RQ%fvu6JcHvm*?B(1Ow{VhEN7yq9hVmm z6kBO#wCrny!r%4~iVp%yvhpFz3?Y^Q5j5UKO4r|@v**V&?plcFTwWvmPnCa;?$F@U zMBNmD#;|AzQ<&P4-sK=|?AS#4TNmMe*#xqkw|*8`WcqKtjP_{p5L)2zFdpNX6{Hx5 z`}!v|9*=Q+XtmKTtCEg2UHPK^Jk zVYnZJs5=vWfjTwek1a$2!mw@~RP@9|ZUTF;J zZJL4i?Qn5`(+e})`-f6zq)p(GZpW|x@WOKL<|K-5L{XNo%1W|j(6Ki0^GsS&0SrFC zi>RE}4gU4T>9;HnA>*Kl0-a> zjfNaK7w_mh5qgh4h6NvX6G4t$kKt!5AEBR#ycrZ8@N|U-jb#UVA?=%-mflZ)qY4AY ze+luzdYg_wMfoj2TqX}h{wFC<@r4B;pP(hPOPZoJGk0z!r_G*-!Aic+ADS?5KB3JT zCo*rPY8={bzA5w&4r8&wc@&E%ZPwG<77?P zd?#Xu#&GnD%@+_uFNFy8=;L5T2YlC;e)w>1;8&qQY#Ty2q<$L-hBX+Ul+g?O(B4l0 z)&rk(;>(oHu4CwbMs|0Ip_Bz4X$3Dzb2R^nmlhURU33&j;UmbP!Dm3wDuagQAOo8j z1bT~Ye%ISxrppmKG+ym<>XXm*?miUkaATrT%7d4dgYr1OJOr)E{v-)Q$)iZ-Bf7VO2dR)>pO9K?tWBLsCSmTlSLJX? zD;&PN!m1|)Po;YsQ=G+C0U?v^727(p*LQ#-hf(k%S0^j|X*{DgN8nk+Qt8J;FEoyy zPyp~wAh>jyhj)%CZm#42d=$WOmz)ex-ii_QT@1w;8^d?YMU`WXd+l)0DBoT7YeM5* zTbKPdhYJng3A9J)JdNo%1|&hjC2`+P(!g0zBScSwj}nDX;1@Lxg^(4ze2Eq?Qs7gt zGA59b;fiXz4uq~RCSG$(=U&{Mm~!%&+xm}BeD5m_?h9&G zkwN02_mEtT^5G<07K3HvL|#(m4VE$=#+ zLYb4|xr(*~0PhF#Y#lhBNXW@Ak*IM8S)S(_xa}BMjM;gt1*;QZj(+OH6+q@0&_i|_ z0+U~YCosI{LAOqxBy#5RY7BNHzlNu*gp=Yat0oR|7@~E~`T&3IB55L(={V1s_??l9 zbEd~gAxy$LWOC%}}G9CNYgMI}TDy$vv8<_*PsI#-HiUzT4^p#H!?;3PeCv^MqJf4o}T4tM#o27Bo z;S_JyppAlxn1H)BV-_uDPf&z#@jJ41#NJf5p*G=XI8I3GZjS3s-3D%MvWAA%p+K#z zQY~Js1WE^fV!VOy?5v>z&khxT29joe7Ks!3YN+^8WDra3uj0)<{yk^YSI6$eZ#y}? zGlP(bYx}r~J8N7J(z1sP;c0pQXw`nR=6F9D_I^t0-3b`ECb}*}w`jeVyiG+ZZiR|Z zfDT>D^1bW;sf2A$rSqeQ2Tvfyt0vyMS*r(Lho%Xk*8@8NGj>wNak9+%1vb~ z%ZY)I2YgB(&x}2|T|ye6`zT5zbs#To50&ALG1A{AK>9*t;O{o z`Z)c}$pdK~18o%pue^%ChYbex0{PTDbTBYpMg+gbHTaKV6B!iQr&bjJ>;C#q`x5zm z^vkOlR3&^_23E?oQ*J1Qm6<$H>(Ssna>p!WUhc9fk1Z+>s?3Ml*@3$83uyyXvO7#$ zzQ-T2LNXJ@uRHIc0gm#chtWU>SLS5q_^jlxx5PKyk34;m_rD_d1ASL+-N&umsZ%E4 zBKKc6ytxZuc>C{Rd8KE59+X$Y$ZhtZIA!vnwEx<%Ss!pQ0CEEa&Nc0FlP`0elJmF?{iU z6xUIin!y+8Ju%J`O!xBW5w}4E5;NjeC|wk{A^mGk{|4`unW9PgCqT9+1iyjPEK*m{ zkwRR&TbV`rB+{^mtAx{xG$HO(d)2Twjl3&<2_l5WfJU_kk;d_N7l`tmM#eD3myAy! z{Yy?$<`0m+8EIHl%-ewT(R8tDg`36CjZ=K~98U1^jP^=^)gOd=D{j8>crR zHO1iw;jeJ|r3lISZO&gGrToq))!xkMd!lc|n9I?il>Rk}cIedLJk`A(R%PH_nHJ$f zkKaS-S;!$v6KE|kVzW5VN2R||KB>GDec5}9tox$!5wT5t!Yh44`9+Zx zU!$cAFt@9p6*q~)x5?5W^*PA>C9hOgpBFu1@9nbg_3C%9hH66yAbuZI|5o&gGySsk zIW?@@A%1&6mY!2LD0{?h`(^3R)r>MEK76+<{hivQ+$HWiEK4D6k8(tejmT0`JD?mB z-#sQv?b>l=T-e9`(!I(F@yH2TI<6Iz`^0a1rPJE|%1P1qN?CVNdr&zo-s+Ve(_XL4 z330Eids2J1QV|Ee(r2{CmGff3D}6=#S>=M*H$|AQYx<`4q_QNMxb(KBi;+vl65xvX zmPTIu9i*E0YoxmP0a8Q!BT^IZfRdj_kouTOGOJ>YAtbHh{f!5@{MAGesV>eTHN-rqYfM2G?_@a1tcv#p^6zJyAS9T-vX*qHv3_*cs^RHSQvMiIBOG6c5?*Vi z@QA3aXH5{k&J+ys%K@oqj5P5y*M1JEA-;&z6we~H#2+E`=}3;GbG?oNwbHniUWZR` zzpcdi7PtN1NDc9Qu2nEusKP|5h-fvhi3IYxpjv}vQ$#b@Zb3?YQBiw?L4P@D6c9xm z=h~B8TSTghMWlvULW=Q1YKb=^wFT)}5pPFc6+ews6OSTQSU-w*H^V>5@LvG^koce= ztA7INFDXwUeMMcnoNpGrRs!)ZXKhw@iv89$q(`ib zx{e`7#Doa5K&vC-VQUxC%hqjblqpBWJFLBGvv?P3 zo5hD1=VQQc7Edwc^VVJJHpV$3eg}|oq#2|iv(6#CY(300pF|(OYP}x$Z-8$|`7`U| zpzs~Y+${bY=|-0GhvM&8Hs}qt|G>2`T2HBMOutX)_UF|BPPZ}sHkR;+2-#l%FT3=95Z`@E!vS;e0rUw{l7 zjaFq{WSeonxIMDNxTx%l^ck0xdm^_ZKOKpv_lx<+pz$tX!t0g0qHi%mEXijW5=CT* zA&S^IDX`(A8;~}NElAffqzP*Z8$E7Cnid_jY7yPyMlox=*60vh#Yd1{Cmu5fvD)~o zGA%{`w-KQ}XV7YlV;Mc)~2-wwbyFz(w@`4uQlqs^;!L``Y-8! zs_Vvj<1XWrF>8EF(bbfCM14kG)SlM<@;-Xw`R|d&guWtHeU4!*PwQ|0qli&Ii)Y)c zEO?JV4c3PW6@zWRBzn21BaRyQ^5?dL#hJyq{2k)%h5Y=%d}ZofzEsY49L>+qrl`mbZg*aQDE|%sBC&kFcawUIO+(sN|+*nz{NlShXpCU*u4UBN@vd?P z?TV)gb9pg}zskN?$`8#~N*9^np2fo44Ce+*`Ke0&*!|Qkcn$ z1NqXz;kl{#sglQ_PWhu37xHDWo~{&2-Qw873}_xK%paV(-~qeDXlZJ`e5zPF3tB|VS^22KQ}cnL<3k5V#OT1D14EM|g98VK#7N=n!d(7fzI;aPg((!~4&=|} z=L9PSLIkSi(01%CO`V64h&_eMS#-7@ab$XNZlS`|NIRAM4Cj5Mmw*LYO8p%#&MltJ zQ;V_~#5h$-i#%X^rz%rbuB6KXVfY+|=V$85{s{W@UU`2JqgsX0P*)3b$PX9iE}kyV z*TBH>VIB=0eoAQYyg~P>YGWV7y)$2__3~)Gj1H0o3JGK?z7#b)ulDGjdq#`WK0F9n zRe7+uIA0Nq<@_Yh3MO|>b%_o#A#sYVegRf5;M-C|3)IU6&!8);SWzfTM)?^=u4?mK zr#QD0hZN#maj_z%i}_QXJLRKGEELOdC5U~tfG-Smda+c>LyBo62oZ1|Hc#M}2Vf`V z!aO~Sr%sj8fA2YpmZwK38D$CKaOd*VVy-wN%4|ZO$B7xXNe?(ucpxuM%}rH66rJ~I ziIc?(7|*%lc`-GAdSrSELtCy)l`40iIwcU(B&2d4?(Jo1yrx-m6zDF1I@%l)=L<7X z(V2YV^cisQL&Z^OxNtV#F-*NHE{x<$=h(vTUaSmMp!JiBmAn8xi+vB1koo-{AqYJJ zfgi|^`h6q*g?SnoD6v$+c$LIyanc{1!^OgUr7RXIJMl%VT}6N=~@ z2@b=o_vBB*7Jc7aEFsRH&Q~Vu0E9QlRn=Lj#_F(V(`9Zaor)UpNC0mI#?k?d6x(OJifM-pzOcNji8{RjE2|^rNJUb#->QRz$lmMe* zXy$aDCuU4Z^QS9kM($snDj@*KNWeOkS?(!EB~s?mVudY&q3|rQJQm0w=ls$90%k)A zm-*v}-7r%O&%vpM1KB05g<5REMlcUcT0Lde0Co<)*)enr_~ z=|q%0C>;rEfkVp?9Nz2OgclwtEHlG>6hl1g8=^_wFVI9%VSALJ;>h9@yndd-T~z_2 z(8L_PpJI?_8lI)q+2PRqjG$?z+F=igr=Gz){0C8Sv?vdGh4;WjHx1E_Vh+ZVObidr z!zoHrC+G55nZOW^BEn%ggE1bZc;+$mi(=rUwBV{!$X<|s2n3NNz$=JjmBL(^mnKYe z94;L=v=k}3PR@iuhWx2RvXJ8XNP@JBHA7dGZ3@W9X z!Fs+Eo>)0tDUml1U09eaOcx|M8c{SjHjn=Sk8IL0&2uxHfuy<(W_}LVRaF?fmt2FD z?^x>Y8tCom>l$qD8N7KflEHoLeZ50H?SnUW_jT{>*|oQGU}zbNlu_JYH_X(6>+z|% zMQMDKlOyE2(*vc_)Wu==8kr=`rMK_gEw*hto3ETH&U9Yb-HA_EXZud!h5G&ZISfNt za62EkuaKXc**`TugDw!Q!qglnNtA0dLcqF`(G^o0lm)vloGOsP4?^9w-q6M+TM>D& zPfUqvJkv<0#612LG5e-5dlGD3EaEN&XQ#Pi$j@@^d89W1K9664)3<`}6mSZ-{mA16 zBP~uh#JxxRfGPz*6J3ur01F9LFo^M0!|_#OtWiZ~+%!BN(Ch*4mbS;_*Q zB&C$O44ei0D*}`HHpAPqw&9OxHE>;!Q58G+Q6D={yPCJpn zBWk8q#dgIO%au4>DTf#=hzPfYE@CkQxY4L&XEQrnHC0FtDjI5{x|vwHOuamK(CSdB zC9I4DaGF(0@UN9ilyO>B>ILO$Ukrc*)h$A@UN8kUAE`Vl2smW4q> z4(fNHvQ7B5ge;v6DzVekZcJ)7W?L{x_|VP<%U}#ST#4J!7j=^ri#i8McrriRGY`gy zC2sd94M|EvU^7g;eiw!!u^so@mc)yo8}i0)<-N@o6yh5k24LmA&z8|xD*PryK+ z2Q&i05QY(>1Z}pPg0#mzwDMlcHCc_$CXj&v*v>LhBt0)Xiy?9c`WJ1s5>5-@;==$S zfH%HmR@9YfL}rj*d2b73-6XNADPiHiWoidW;LbznSPZr$sPm?!BaK>V9scR{{;4*4YXU66v#O`xw(T=bP7PHfB8Hg7!vl2+tD7ctF3+3G_a}E4XkP4|1S;5cVF-Wi)(BW-uhepp_lOKLnogBvJBgc6mJ^h{1uml-Z||s z&RS35e3d@ixYa0X>D;)Cb6h&9Eua>^rsvNmbiB9-8Y6(0P&1EP*()hM53v-{S^d|8 zvuEf)v_T@Jioci7e5aYtLLHwpa655qP{TbA+!7?J$ - /home/root/libopenmetaverse/bin/OpenMetaverse.StructuredData + OpenMetaverse.StructuredData + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + + + @@ -81,283 +281,53 @@ + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/bin/OpenMetaverse.StructuredData.dll b/bin/OpenMetaverse.StructuredData.dll index 27ccfbcdd9994fa9b5b428c4bbb991d0e2570232..54681e4bfed65437999cf10f4cf7b64c91124b49 100644 GIT binary patch literal 102400 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 literal 95232 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 RRfA_k#s2^Q{jZb2{{!N=oT2~# diff --git a/bin/OpenMetaverse.XML b/bin/OpenMetaverse.XML index fa1057a944..ca9f359acd 100644 --- a/bin/OpenMetaverse.XML +++ b/bin/OpenMetaverse.XML @@ -1,14174 +1,208 @@ - /home/root/libopenmetaverse/bin/OpenMetaverse + OpenMetaverse - + - Permission request flags, asked when a script wants to control an Avatar + Capability to load TGAs to Bitmap - - Placeholder for empty values, shouldn't ever see this - - - Script wants ability to take money from you - - - Script wants to take camera controls for you - - - Script wants to remap avatars controls - - - Script wants to trigger avatar animations - This function is not implemented on the grid - - - Script wants to attach or detach the prim or primset to your avatar - - - Script wants permission to release ownership - This function is not implemented on the grid - The concept of "public" objects does not exist anymore. - - - Script wants ability to link/delink with other prims - - - Script wants permission to change joints - This function is not implemented on the grid - - - Script wants permissions to change permissions - This function is not implemented on the grid - - - Script wants to track avatars camera position and rotation - - - Script wants to control your camera - - - - Special commands used in Instant Messages - - - - Indicates a regular IM from another agent - - - Simple notification box with an OK button - - - You've been invited to join a group. - - - Inventory offer - - - Accepted inventory offer - - - Declined inventory offer - - - Group vote - - - An object is offering its inventory - - - Accept an inventory offer from an object - - - Decline an inventory offer from an object - - - Unknown - - - Start a session, or add users to a session - - - Start a session, but don't prune offline users - - - Start a session with your group - - - Start a session without a calling card (finder or objects) - - - Send a message to a session - - - Leave a session - - - Indicates that the IM is from an object - - - Sent an IM to a busy user, this is the auto response - - - Shows the message in the console and chat history - - - Send a teleport lure - - - Response sent to the agent which inititiated a teleport invitation - - - Response sent to the agent which inititiated a teleport invitation - - - Only useful if you have Linden permissions - - - A placeholder type for future expansion, currently not - used - - - IM to tell the user to go to an URL - - - IM for help - - - IM sent automatically on call for help, sends a lure - to each Helper reached - - - Like an IM but won't go to email - - - IM from a group officer to all group members - - - Unknown - - - Unknown - - - Accept a group invitation - - - Decline a group invitation - - - Unknown - - - An avatar is offering you friendship - - - An avatar has accepted your friendship offer - - - An avatar has declined your friendship offer - - - Indicates that a user has started typing - - - Indicates that a user has stopped typing - - - - Flag in Instant Messages, whether the IM should be delivered to - offline avatars as well - - - - Only deliver to online avatars - - - If the avatar is offline the message will be held until - they login next, and possibly forwarded to their e-mail account - - - - Conversion type to denote Chat Packet types in an easier-to-understand format - - - - Whisper (5m radius) - - - Normal chat (10/20m radius), what the official viewer typically sends - - - Shouting! (100m radius) - - - Event message when an Avatar has begun to type - - - Event message when an Avatar has stopped typing - - - Send the message to the debug channel - - - Event message when an object uses llOwnerSay - - - Special value to support llRegionSay, never sent to the client - - - - Identifies the source of a chat message - - - - Chat from the grid or simulator - - - Chat from another avatar - - - Chat from an object - - - - - - - - - - - - - - - - - - - - Effect type used in ViewerEffect packets - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Project a beam from a source to a destination, such as - the one used when editing an object - - - - - - - - - - - - - - - Create a swirl of particles around an object - - - - - - - - - - - Cause an avatar to look at an object - - - Cause an avatar to point at an object - - - - The action an avatar is doing when looking at something, used in - ViewerEffect packets for the LookAt effect - - - - - - - - - - - - - - - - - - - - - - - - - - - - Deprecated - - - - - - - - - - - - - - - - - - - - The action an avatar is doing when pointing at something, used in - ViewerEffect packets for the PointAt effect - - - - - - - - - - - - - - - - - - - - - Money transaction types - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Flags sent when a script takes or releases a control - - NOTE: (need to verify) These might be a subset of the ControlFlags enum in Movement, - - - No Flags set - - - Forward (W or up Arrow) - - - Back (S or down arrow) - - - Move left (shift+A or left arrow) - - - Move right (shift+D or right arrow) - - - Up (E or PgUp) - - - Down (C or PgDown) - - - Rotate left (A or left arrow) - - - Rotate right (D or right arrow) - - - Left Mouse Button - - - Left Mouse button in MouseLook - - - - Currently only used to hide your group title - - - - No flags set - - - Hide your group title - - - - Action state of the avatar, which can currently be typing and - editing - - - - - - - - - - - - - - - - - Current teleport status - - - - Unknown status - - - Teleport initialized - - - Teleport in progress - - - Teleport failed - - - Teleport completed - - - Teleport cancelled - - - - - - - No flags set, or teleport failed - - - Set when newbie leaves help island for first time - - - - - - - Via Lure - - - Via Landmark - - - Via Location - - - Via Home - - - Via Telehub - - - Via Login - - - Linden Summoned - - - Linden Forced me - - - - - - - Agent Teleported Home via Script - - - - - - - - - - - - - - - forced to new location for example when avatar is banned or ejected - - - Teleport Finished via a Lure - - - Finished, Sim Changed - - - Finished, Same Sim - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Instant Message - - - - Key of sender - - - Name of sender - - - Key of destination avatar - - - ID of originating estate - - - Key of originating region - - - Coordinates in originating region - - - Instant message type - - - Group IM session toggle - - - Key of IM session, for Group Messages, the groups UUID - - - Timestamp of the instant message - - - Instant message text - - - Whether this message is held for offline avatars - - - Context specific packed data - - - Print the struct data as a string - A string containing the field name, and field value - - - - Manager class for our own avatar - - - - - Constructor, setup callbacks for packets related to our avatar - - A reference to the Class - - - - Agent movement and camera control - Agent movement is controlled by setting specific - After the control flags are set, An AgentUpdate is required to update the simulator of the specified flags - This is most easily accomplished by setting one or more of the AgentMovement properties - Movement of an avatar is always based on a compass direction, for example AtPos will move the - agent from West to East or forward on the X Axis, AtNeg will of course move agent from - East to West or backward on the X Axis, LeftPos will be South to North or forward on the Y Axis - The Z axis is Up, finer grained control of movements can be done using the Nudge properties - - - - Default constructor - - - - Camera controls for the agent, mostly a thin wrapper around - CoordinateFrame. This class is only responsible for state - tracking and math, it does not send any packets - - - - - Default constructor - - - - - - - - The camera is a local frame of reference inside of - the larger grid space. This is where the math happens - - - - - - - - - - - - - - - - - - - Agent camera controls - - - Currently only used for hiding your group title - - - Action state of the avatar, which can currently be - typing and editing - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Timer for sending AgentUpdate packets - - - Move agent positive along the X axis - - - Move agent negative along the X axis - - - Move agent positive along the Y axis - - - Move agent negative along the Y axis - - - Move agent positive along the Z axis - - - Move agent negative along the Z axis - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Causes simulator to make agent fly - - - Stop movement - - - Finish animation - - - Stand up from a sit - - - Tells simulator to sit agent on ground - - - Place agent into mouselook mode - - - Nudge agent positive along the X axis - - - Nudge agent negative along the X axis - - - Nudge agent positive along the Y axis - - - Nudge agent negative along the Y axis - - - Nudge agent positive along the Z axis - - - Nudge agent negative along the Z axis - - - - - - - - - - - Tell simulator to mark agent as away - - - - - - - - - - - - - - - - - - - - Returns "always run" value, or changes it by sending a SetAlwaysRunPacket - - - - The current value of the agent control flags - - - Gets or sets the interval in milliseconds at which - AgentUpdate packets are sent to the current simulator. Setting - this to a non-zero value will also enable the packet sending if - it was previously off, and setting it to zero will disable - - - Gets or sets whether AgentUpdate packets are sent to - the current simulator - - - Reset movement controls every time we send an update - - - - Send an AgentUpdate with the camera set at the current agent - position and pointing towards the heading specified - - Camera rotation in radians - Whether to send the AgentUpdate reliable - or not - - - - Rotates the avatar body and camera toward a target position. - This will also anchor the camera position on the avatar - - Region coordinates to turn toward - - - - Send new AgentUpdate packet to update our current camera - position and rotation - - - - - Send new AgentUpdate packet to update our current camera - position and rotation - - Whether to require server acknowledgement - of this packet - - - - Send new AgentUpdate packet to update our current camera - position and rotation - - Whether to require server acknowledgement - of this packet - Simulator to send the update to - - - - Builds an AgentUpdate packet entirely from parameters. This - will not touch the state of Self.Movement or - Self.Movement.Camera in any way - - - - - - - - - - - - - - - - - - - - - - - - - - - Used to specify movement actions for your agent - - - - Empty flag - - - Move Forward (SL Keybinding: W/Up Arrow) - - - Move Backward (SL Keybinding: S/Down Arrow) - - - Move Left (SL Keybinding: Shift-(A/Left Arrow)) - - - Move Right (SL Keybinding: Shift-(D/Right Arrow)) - - - Not Flying: Jump/Flying: Move Up (SL Keybinding: E) - - - Not Flying: Croutch/Flying: Move Down (SL Keybinding: C) - - - Unused - - - Unused - - - Unused - - - Unused - - - ORed with AGENT_CONTROL_AT_* if the keyboard is being used - - - ORed with AGENT_CONTROL_LEFT_* if the keyboard is being used - - - ORed with AGENT_CONTROL_UP_* if the keyboard is being used - - - Fly - - - - - - - Finish our current animation - - - Stand up from the ground or a prim seat - - - Sit on the ground at our current location - - - Whether mouselook is currently enabled - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - - - - - - - - - Set when the avatar is idled or set to away. Note that the away animation is - activated separately from setting this flag - - - - - - - - - - - - - - - - - - - - Called once attachment resource usage information has been collected - - Indicates if operation was successfull - Attachment resource usage information - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - Reference to the GridClient instance - - - Used for movement and camera tracking - - - Currently playing animations for the agent. Can be used to - check the current movement status such as walking, hovering, aiming, - etc. by checking against system animations found in the Animations class - - - Dictionary containing current Group Chat sessions and members - - - Raised when a scripted object or agent within range sends a public message - - - Raised when a scripted object sends a dialog box containing possible - options an agent can respond to - - - Raised when an object requests a change in the permissions an agent has permitted - - - Raised when a script requests an agent open the specified URL - - - Raised when an agents currency balance is updated - - - Raised when a transaction occurs involving currency such as a land purchase - - - Raised when an ImprovedInstantMessage packet is recieved from the simulator, this is used for everything from - private messaging to friendship offers. The Dialog field defines what type of message has arrived - - - Raised when an agent has requested a teleport to another location, or when responding to a lure. Raised multiple times - for each teleport indicating the progress of the request - - - Raised when a simulator sends agent specific information for our avatar. - - - Raised when our agents animation playlist changes - - - Raised when an object or avatar forcefully collides with our agent - - - Raised when our agent crosses a region border into another region - - - Raised when our agent succeeds or fails to join a group chat session - - - Raised when a simulator sends an urgent message usually indication the recent failure of - another action we have attempted to take such as an attempt to enter a parcel where we are denied access - - - Raised when a script attempts to take or release specified controls for our agent - - - Raised when the simulator detects our agent is trying to view something - beyond its limits - - - Raised when a script sensor reply is received from a simulator - - - Raised in response to a request - - - Raised when an avatar enters a group chat session we are participating in - - - Raised when an agent exits a group chat session we are participating in - - - Your (client) avatars - "client", "agent", and "avatar" all represent the same thing - - - Temporary assigned to this session, used for - verifying our identity in packets - - - Shared secret that is never sent over the wire - - - Your (client) avatar ID, local to the current region/sim - - - Where the avatar started at login. Can be "last", "home" - or a login - - - The access level of this agent, usually M or PG - - - The CollisionPlane of Agent - - - An representing the velocity of our agent - - - An representing the acceleration of our agent - - - A which specifies the angular speed, and axis about which an Avatar is rotating. - - - Position avatar client will goto when login to 'home' or during - teleport request to 'home' region. - - - LookAt point saved/restored with HomePosition - - - Avatar First Name (i.e. Philip) - - - Avatar Last Name (i.e. Linden) - - - Avatar Full Name (i.e. Philip Linden) - - - Gets the health of the agent - - - Gets the current balance of the agent - - - Gets the local ID of the prim the agent is sitting on, - zero if the avatar is not currently sitting - - - Gets the of the agents active group. - - - Gets the Agents powers in the currently active group - - - Current status message for teleporting - - - Current position of the agent as a relative offset from - the simulator, or the parent object if we are sitting on something - - - Current rotation of the agent as a relative rotation from - the simulator, or the parent object if we are sitting on something - - - Current position of the agent in the simulator - - - - A representing the agents current rotation - - - - Returns the global grid position of the avatar - - - Raises the ChatFromSimulator event - A ChatEventArgs object containing the - data returned from the data server - - - Raises the ScriptDialog event - A SctriptDialogEventArgs object containing the - data returned from the data server - - - Raises the ScriptQuestion event - A ScriptQuestionEventArgs object containing the - data returned from the data server - - - Raises the LoadURL event - A LoadUrlEventArgs object containing the - data returned from the data server - - - Raises the MoneyBalance event - A BalanceEventArgs object containing the - data returned from the data server - - - Raises the MoneyBalanceReply event - A MoneyBalanceReplyEventArgs object containing the - data returned from the data server - - - Raises the IM event - A InstantMessageEventArgs object containing the - data returned from the data server - - - Raises the TeleportProgress event - A TeleportEventArgs object containing the - data returned from the data server - - - Raises the AgentDataReply event - A AgentDataReplyEventArgs object containing the - data returned from the data server - - - Raises the AnimationsChanged event - A AnimationsChangedEventArgs object containing the - data returned from the data server - - - Raises the MeanCollision event - A MeanCollisionEventArgs object containing the - data returned from the data server - - - Raises the RegionCrossed event - A RegionCrossedEventArgs object containing the - data returned from the data server - - - Raises the GroupChatJoined event - A GroupChatJoinedEventArgs object containing the - data returned from the data server - - - Raises the AlertMessage event - A AlertMessageEventArgs object containing the - data returned from the data server - - - Raises the ScriptControlChange event - A ScriptControlEventArgs object containing the - data returned from the data server - - - Raises the CameraConstraint event - A CameraConstraintEventArgs object containing the - data returned from the data server - - - Raises the ScriptSensorReply event - A ScriptSensorReplyEventArgs object containing the - data returned from the data server - - - Raises the AvatarSitResponse event - A AvatarSitResponseEventArgs object containing the - data returned from the data server - - - Raises the ChatSessionMemberAdded event - A ChatSessionMemberAddedEventArgs object containing the - data returned from the data server - - - Raises the ChatSessionMemberLeft event - A ChatSessionMemberLeftEventArgs object containing the - data returned from the data server - - - - Send a text message from the Agent to the Simulator - - A containing the message - The channel to send the message on, 0 is the public channel. Channels above 0 - can be used however only scripts listening on the specified channel will see the message - Denotes the type of message being sent, shout, whisper, etc. - - - - Request any instant messages sent while the client was offline to be resent. - - - - - Send an Instant Message to another Avatar - - The recipients - A containing the message to send - - - - Send an Instant Message to an existing group chat or conference chat - - The recipients - A containing the message to send - IM session ID (to differentiate between IM windows) - - - - Send an Instant Message - - The name this IM will show up as being from - Key of Avatar - Text message being sent - IM session ID (to differentiate between IM windows) - IDs of sessions for a conference - - - - Send an Instant Message - - The name this IM will show up as being from - Key of Avatar - Text message being sent - IM session ID (to differentiate between IM windows) - Type of instant message to send - Whether to IM offline avatars as well - Senders Position - RegionID Sender is In - Packed binary data that is specific to - the dialog type - - - - Send an Instant Message to a group - - - of the group to send message to - Text Message being sent. - - - - Send an Instant Message to a group the agent is a member of - - The name this IM will show up as being from - - of the group to send message to - Text message being sent - - - - Send a request to join a group chat session - - - of Group to leave - - - - Exit a group chat session. This will stop further Group chat messages - from being sent until session is rejoined. - - - of Group chat session to leave - - - - Reply to script dialog questions. - - Channel initial request came on - Index of button you're "clicking" - Label of button you're "clicking" - - of Object that sent the dialog request - - - - - Accept invite for to a chatterbox session - - - of session to accept invite to - - - - Start a friends conference - - - List of UUIDs to start a conference with - the temportary session ID returned in the callback> - - - - Start a particle stream between an agent and an object - - - Key of the source agent - - Key of the target object - - - The type from the enum - A unique for this effect - - - - Start a particle stream between an agent and an object - - - Key of the source agent - - Key of the target object - A representing the beams offset from the source - A which sets the avatars lookat animation - - of the Effect - - - - Create a particle beam between an avatar and an primitive - - The ID of source avatar - The ID of the target primitive - global offset - A object containing the combined red, green, blue and alpha - color values of particle beam - a float representing the duration the parcicle beam will last - A Unique ID for the beam - - - - - Create a particle swirl around a target position using a packet - - global offset - A object containing the combined red, green, blue and alpha - color values of particle beam - a float representing the duration the parcicle beam will last - A Unique ID for the beam - - - - Sends a request to sit on the specified object - - - of the object to sit on - Sit at offset - - - - Follows a call to to actually sit on the object - - - - Stands up from sitting on a prim or the ground - true of AgentUpdate was sent - - - - Does a "ground sit" at the avatar's current position - - - - - Starts or stops flying - - True to start flying, false to stop flying - - - - Starts or stops crouching - - True to start crouching, false to stop crouching - - - - Starts a jump (begin holding the jump key) - - - - - Use the autopilot sim function to move the avatar to a new - position. Uses double precision to get precise movements - - The z value is currently not handled properly by the simulator - Global X coordinate to move to - Global Y coordinate to move to - Z coordinate to move to - - - - Use the autopilot sim function to move the avatar to a new position - - The z value is currently not handled properly by the simulator - Integer value for the global X coordinate to move to - Integer value for the global Y coordinate to move to - Floating-point value for the Z coordinate to move to - - - - Use the autopilot sim function to move the avatar to a new position - - The z value is currently not handled properly by the simulator - Integer value for the local X coordinate to move to - Integer value for the local Y coordinate to move to - Floating-point value for the Z coordinate to move to - - - Macro to cancel autopilot sim function - Not certain if this is how it is really done - true if control flags were set and AgentUpdate was sent to the simulator - - - - Grabs an object - - an unsigned integer of the objects ID within the simulator - - - - - Overload: Grab a simulated object - - an unsigned integer of the objects ID within the simulator - - - The texture coordinates to grab - The surface coordinates to grab - The face of the position to grab - The region coordinates of the position to grab - The surface normal of the position to grab (A normal is a vector perpindicular to the surface) - The surface binormal of the position to grab (A binormal is a vector tangen to the surface - pointing along the U direction of the tangent space - - - - Drag an object - - - of the object to drag - Drag target in region coordinates - - - - Overload: Drag an object - - - of the object to drag - Drag target in region coordinates - - - The texture coordinates to grab - The surface coordinates to grab - The face of the position to grab - The region coordinates of the position to grab - The surface normal of the position to grab (A normal is a vector perpindicular to the surface) - The surface binormal of the position to grab (A binormal is a vector tangen to the surface - pointing along the U direction of the tangent space - - - - Release a grabbed object - - The Objects Simulator Local ID - - - - - - - Release a grabbed object - - The Objects Simulator Local ID - The texture coordinates to grab - The surface coordinates to grab - The face of the position to grab - The region coordinates of the position to grab - The surface normal of the position to grab (A normal is a vector perpindicular to the surface) - The surface binormal of the position to grab (A binormal is a vector tangen to the surface - pointing along the U direction of the tangent space - - - - Touches an object - - an unsigned integer of the objects ID within the simulator - - - - - Request the current L$ balance - - - - - Give Money to destination Avatar - - UUID of the Target Avatar - Amount in L$ - - - - Give Money to destination Avatar - - UUID of the Target Avatar - Amount in L$ - Description that will show up in the - recipients transaction history - - - - Give L$ to an object - - object to give money to - amount of L$ to give - name of object - - - - Give L$ to a group - - group to give money to - amount of L$ to give - - - - Give L$ to a group - - group to give money to - amount of L$ to give - description of transaction - - - - Pay texture/animation upload fee - - - - - Pay texture/animation upload fee - - description of the transaction - - - - Give Money to destination Object or Avatar - - UUID of the Target Object/Avatar - Amount in L$ - Reason (Optional normally) - The type of transaction - Transaction flags, mostly for identifying group - transactions - - - - Plays a gesture - - Asset of the gesture - - - - Mark gesture active - - Inventory of the gesture - Asset of the gesture - - - - Mark gesture inactive - - Inventory of the gesture - - - - Send an AgentAnimation packet that toggles a single animation on - - The of the animation to start playing - Whether to ensure delivery of this packet or not - - - - Send an AgentAnimation packet that toggles a single animation off - - The of a - currently playing animation to stop playing - Whether to ensure delivery of this packet or not - - - - Send an AgentAnimation packet that will toggle animations on or off - - A list of animation s, and whether to - turn that animation on or off - Whether to ensure delivery of this packet or not - - - - Teleports agent to their stored home location - - true on successful teleport to home location - - - - Teleport agent to a landmark - - - of the landmark to teleport agent to - true on success, false on failure - - - - Attempt to look up a simulator name and teleport to the discovered - destination - - Region name to look up - Position to teleport to - True if the lookup and teleport were successful, otherwise - false - - - - Attempt to look up a simulator name and teleport to the discovered - destination - - Region name to look up - Position to teleport to - Target to look at - True if the lookup and teleport were successful, otherwise - false - - - - Teleport agent to another region - - handle of region to teleport agent to - - position in destination sim to teleport to - true on success, false on failure - This call is blocking - - - - Teleport agent to another region - - handle of region to teleport agent to - - position in destination sim to teleport to - - direction in destination sim agent will look at - true on success, false on failure - This call is blocking - - - - Request teleport to a another simulator - - handle of region to teleport agent to - - position in destination sim to teleport to - - - - Request teleport to a another simulator - - handle of region to teleport agent to - - position in destination sim to teleport to - - direction in destination sim agent will look at - - - - Teleport agent to a landmark - - - of the landmark to teleport agent to - - - - Send a teleport lure to another avatar with default "Join me in ..." invitation message - - target avatars to lure - - - - Send a teleport lure to another avatar with custom invitation message - - target avatars to lure - custom message to send with invitation - - - - Respond to a teleport lure by either accepting it and initiating - the teleport, or denying it - - - of the avatar sending the lure - true to accept the lure, false to decline it - - - - Update agent profile - - - struct containing updated - profile information - - - - Update agents profile interests - - selection of interests from struct - - - - Set the height and the width of the client window. This is used - by the server to build a virtual camera frustum for our avatar - - New height of the viewer window - New width of the viewer window - - - - Request the list of muted objects and avatars for this agent - - - - - Sets home location to agents current position - - will fire an AlertMessage () with - success or failure message - - - - Move an agent in to a simulator. This packet is the last packet - needed to complete the transition in to a new simulator - - - Object - - - - Reply to script permissions request - - - Object - - of the itemID requesting permissions - - of the taskID requesting permissions - - list of permissions to allow - - - - Respond to a group invitation by either accepting or denying it - - UUID of the group (sent in the AgentID field of the invite message) - IM Session ID from the group invitation message - Accept the group invitation or deny it - - - - Requests script detection of objects and avatars - - name of the object/avatar to search for - UUID of the object or avatar to search for - Type of search from ScriptSensorTypeFlags - range of scan (96 max?) - the arc in radians to search within - an user generated ID to correlate replies with - Simulator to perform search in - - - - Create or update profile pick - - UUID of the pick to update, or random UUID to create a new pick - Is this a top pick? (typically false) - UUID of the parcel (UUID.Zero for the current parcel) - Name of the pick - Global position of the pick landmark - UUID of the image displayed with the pick - Long description of the pick - - - - Delete profile pick - - UUID of the pick to delete - - - - Create or update profile Classified - - UUID of the classified to update, or random UUID to create a new classified - Defines what catagory the classified is in - UUID of the image displayed with the classified - Price that the classified will cost to place for a week - Global position of the classified landmark - Name of the classified - Long description of the classified - if true, auto renew classified after expiration - - - - Create or update profile Classified - - UUID of the classified to update, or random UUID to create a new classified - Defines what catagory the classified is in - UUID of the image displayed with the classified - Price that the classified will cost to place for a week - Name of the classified - Long description of the classified - if true, auto renew classified after expiration - - - - Delete a classified ad - - The classified ads ID - - - - Fetches resource usage by agents attachmetns - - Called when the requested information is collected - - - - Take an incoming ImprovedInstantMessage packet, auto-parse, and if - OnInstantMessage is defined call that with the appropriate arguments - - The sender - The EventArgs object containing the packet data - - - - Take an incoming Chat packet, auto-parse, and if OnChat is defined call - that with the appropriate arguments. - - The sender - The EventArgs object containing the packet data - - - - Used for parsing llDialogs - - The sender - The EventArgs object containing the packet data - - - - Used for parsing llRequestPermissions dialogs - - The sender - The EventArgs object containing the packet data - - - - Handles Script Control changes when Script with permissions releases or takes a control - - The sender - The EventArgs object containing the packet data - - - - Used for parsing llLoadURL Dialogs - - The sender - The EventArgs object containing the packet data - - - - Update client's Position, LookAt and region handle from incoming packet - - The sender - The EventArgs object containing the packet data - This occurs when after an avatar moves into a new sim - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - Process TeleportFailed message sent via EventQueue, informs agent its last teleport has failed and why. - - The Message Key - An IMessage object Deserialized from the recieved message event - The simulator originating the event message - - - - Process TeleportFinish from Event Queue and pass it onto our TeleportHandler - - The message system key for this event - IMessage object containing decoded data from OSD - The simulator originating the event message - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - Crossed region handler for message that comes across the EventQueue. Sent to an agent - when the agent crosses a sim border into a new region. - - The message key - the IMessage object containing the deserialized data sent from the simulator - The which originated the packet - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - This packet is now being sent via the EventQueue - - - - Group Chat event handler - - The capability Key - IMessage object containing decoded data from OSD - - - - - - Response from request to join a group chat - - - - IMessage object containing decoded data from OSD - - - - - - Someone joined or left group chat - - - - IMessage object containing decoded data from OSD - - - - - - Handle a group chat Invitation - - Caps Key - IMessage object containing decoded data from OSD - Originating Simulator - - - - Moderate a chat session - - the of the session to moderate, for group chats this will be the groups UUID - the of the avatar to moderate - Either "voice" to moderate users voice, or "text" to moderate users text session - true to moderate (silence user), false to allow avatar to speak - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - - - - - Construct a new instance of the ChatEventArgs object - - Sim from which the message originates - The message sent - The audible level of the message - The type of message sent: whisper, shout, etc - The source type of the message sender - The name of the agent or object sending the message - The ID of the agent or object sending the message - The ID of the object owner, or the agent ID sending the message - The position of the agent or object sending the message - - - Get the simulator sending the message - - - Get the message sent - - - Get the audible level of the message - - - Get the type of message sent: whisper, shout, etc - - - Get the source type of the message sender - - - Get the name of the agent or object sending the message - - - Get the ID of the agent or object sending the message - - - Get the ID of the object owner, or the agent ID sending the message - - - Get the position of the agent or object sending the message - - - Contains the data sent when a primitive opens a dialog with this agent - - - - Construct a new instance of the ScriptDialogEventArgs - - The dialog message - The name of the object that sent the dialog request - The ID of the image to be displayed - The ID of the primitive sending the dialog - The first name of the senders owner - The last name of the senders owner - The communication channel the dialog was sent on - The string labels containing the options presented in this dialog - - - Get the dialog message - - - Get the name of the object that sent the dialog request - - - Get the ID of the image to be displayed - - - Get the ID of the primitive sending the dialog - - - Get the first name of the senders owner - - - Get the last name of the senders owner - - - Get the communication channel the dialog was sent on, responses - should also send responses on this same channel - - - Get the string labels containing the options presented in this dialog - - - Contains the data sent when a primitive requests debit or other permissions - requesting a YES or NO answer - - - - Construct a new instance of the ScriptQuestionEventArgs - - The simulator containing the object sending the request - The ID of the script making the request - The ID of the primitive containing the script making the request - The name of the primitive making the request - The name of the owner of the object making the request - The permissions being requested - - - Get the simulator containing the object sending the request - - - Get the ID of the script making the request - - - Get the ID of the primitive containing the script making the request - - - Get the name of the primitive making the request - - - Get the name of the owner of the object making the request - - - Get the permissions being requested - - - Contains the data sent when a primitive sends a request - to an agent to open the specified URL - - - - Construct a new instance of the LoadUrlEventArgs - - The name of the object sending the request - The ID of the object sending the request - The ID of the owner of the object sending the request - True if the object is owned by a group - The message sent with the request - The URL the object sent - - - Get the name of the object sending the request - - - Get the ID of the object sending the request - - - Get the ID of the owner of the object sending the request - - - True if the object is owned by a group - - - Get the message sent with the request - - - Get the URL the object sent - - - The date received from an ImprovedInstantMessage - - - - Construct a new instance of the InstantMessageEventArgs object - - the InstantMessage object - the simulator where the InstantMessage origniated - - - Get the InstantMessage object - - - Get the simulator where the InstantMessage origniated - - - Contains the currency balance - - - - Construct a new BalanceEventArgs object - - The currenct balance - - - - Get the currenct balance - - - - Contains the transaction summary when an item is purchased, - money is given, or land is purchased - - - - Construct a new instance of the MoneyBalanceReplyEventArgs object - - The ID of the transaction - True of the transaction was successful - The current currency balance - The meters credited - The meters comitted - A brief description of the transaction - - - Get the ID of the transaction - - - True of the transaction was successful - - - Get the remaining currency balance - - - Get the meters credited - - - Get the meters comitted - - - Get the description of the transaction - - - Data sent from the simulator containing information about your agent and active group information - - - - Construct a new instance of the AgentDataReplyEventArgs object - - The agents first name - The agents last name - The agents active group ID - The group title of the agents active group - The combined group powers the agent has in the active group - The name of the group the agent has currently active - - - Get the agents first name - - - Get the agents last name - - - Get the active group ID of your agent - - - Get the active groups title of your agent - - - Get the combined group powers of your agent - - - Get the active group name of your agent - - - Data sent by the simulator to indicate the active/changed animations - applied to your agent - - - - Construct a new instance of the AnimationsChangedEventArgs class - - The dictionary that contains the changed animations - - - Get the dictionary that contains the changed animations - - - - Data sent from a simulator indicating a collision with your agent - - - - - Construct a new instance of the MeanCollisionEventArgs class - - The type of collision that occurred - The ID of the agent or object that perpetrated the agression - The ID of the Victim - The strength of the collision - The Time the collision occurred - - - Get the Type of collision - - - Get the ID of the agent or object that collided with your agent - - - Get the ID of the agent that was attacked - - - A value indicating the strength of the collision - - - Get the time the collision occurred - - - Data sent to your agent when it crosses region boundaries - - - - Construct a new instance of the RegionCrossedEventArgs class - - The simulator your agent just left - The simulator your agent is now in - - - Get the simulator your agent just left - - - Get the simulator your agent is now in - - - Data sent from the simulator when your agent joins a group chat session - - - - Construct a new instance of the GroupChatJoinedEventArgs class - - The ID of the session - The name of the session - A temporary session id used for establishing new sessions - True of your agent successfully joined the session - - - Get the ID of the group chat session - - - Get the name of the session - - - Get the temporary session ID used for establishing new sessions - - - True if your agent successfully joined the session - - - Data sent by the simulator containing urgent messages - - - - Construct a new instance of the AlertMessageEventArgs class - - The alert message - - - Get the alert message - - - Data sent by a script requesting to take or release specified controls to your agent - - - - Construct a new instance of the ScriptControlEventArgs class - - The controls the script is attempting to take or release to the agent - True if the script is passing controls back to the agent - True if the script is requesting controls be released to the script - - - Get the controls the script is attempting to take or release to the agent - - - True if the script is passing controls back to the agent - - - True if the script is requesting controls be released to the script - - - - Data sent from the simulator to an agent to indicate its view limits - - - - - Construct a new instance of the CameraConstraintEventArgs class - - The collision plane - - - Get the collision plane - - - - Data containing script sensor requests which allow an agent to know the specific details - of a primitive sending script sensor requests - - - - - Construct a new instance of the ScriptSensorReplyEventArgs - - The ID of the primitive sending the sensor - The ID of the group associated with the primitive - The name of the primitive sending the sensor - The ID of the primitive sending the sensor - The ID of the owner of the primitive sending the sensor - The position of the primitive sending the sensor - The range the primitive specified to scan - The rotation of the primitive sending the sensor - The type of sensor the primitive sent - The velocity of the primitive sending the sensor - - - Get the ID of the primitive sending the sensor - - - Get the ID of the group associated with the primitive - - - Get the name of the primitive sending the sensor - - - Get the ID of the primitive sending the sensor - - - Get the ID of the owner of the primitive sending the sensor - - - Get the position of the primitive sending the sensor - - - Get the range the primitive specified to scan - - - Get the rotation of the primitive sending the sensor - - - Get the type of sensor the primitive sent - - - Get the velocity of the primitive sending the sensor - - - Contains the response data returned from the simulator in response to a - - - Construct a new instance of the AvatarSitResponseEventArgs object - - - Get the ID of the primitive the agent will be sitting on - - - True if the simulator Autopilot functions were involved - - - Get the camera offset of the agent when seated - - - Get the camera eye offset of the agent when seated - - - True of the agent will be in mouselook mode when seated - - - Get the position of the agent when seated - - - Get the rotation of the agent when seated - - - Data sent when an agent joins a chat session your agent is currently participating in - - - - Construct a new instance of the ChatSessionMemberAddedEventArgs object - - The ID of the chat session - The ID of the agent joining - - - Get the ID of the chat session - - - Get the ID of the agent that joined - - - Data sent when an agent exits a chat session your agent is currently participating in - - - - Construct a new instance of the ChatSessionMemberLeftEventArgs object - - The ID of the chat session - The ID of the Agent that left - - - Get the ID of the chat session - - - Get the ID of the agent that left - - - - Throttles the network traffic for various different traffic types. - Access this class through GridClient.Throttle - - - - - Default constructor, uses a default high total of 1500 KBps (1536000) - - - - - Constructor that decodes an existing AgentThrottle packet in to - individual values - - Reference to the throttle data in an AgentThrottle - packet - Offset position to start reading at in the - throttle data - This is generally not needed in clients as the server will - never send a throttle packet to the client - - - Maximum bits per second for resending unacknowledged packets - - - Maximum bits per second for LayerData terrain - - - Maximum bits per second for LayerData wind data - - - Maximum bits per second for LayerData clouds - - - Unknown, includes object data - - - Maximum bits per second for textures - - - Maximum bits per second for downloaded assets - - - Maximum bits per second the entire connection, divided up - between invidiual streams using default multipliers - - - - Send an AgentThrottle packet to the current server using the - current values - - - - - Send an AgentThrottle packet to the specified server using the - current values - - - - - Convert the current throttle values to a byte array that can be put - in an AgentThrottle packet - - Byte array containing all the throttle values - - - - Static pre-defined animations available to all agents - - - - Agent with afraid expression on face - - - Agent aiming a bazooka (right handed) - - - Agent aiming a bow (left handed) - - - Agent aiming a hand gun (right handed) - - - Agent aiming a rifle (right handed) - - - Agent with angry expression on face - - - Agent hunched over (away) - - - Agent doing a backflip - - - Agent laughing while holding belly - - - Agent blowing a kiss - - - Agent with bored expression on face - - - Agent bowing to audience - - - Agent brushing himself/herself off - - - Agent in busy mode - - - Agent clapping hands - - - Agent doing a curtsey bow - - - Agent crouching - - - Agent crouching while walking - - - Agent crying - - - Agent unanimated with arms out (e.g. setting appearance) - - - Agent re-animated after set appearance finished - - - Agent dancing - - - Agent dancing - - - Agent dancing - - - Agent dancing - - - Agent dancing - - - Agent dancing - - - Agent dancing - - - Agent dancing - - - Agent on ground unanimated - - - Agent boozing it up - - - Agent with embarassed expression on face - - - Agent with afraid expression on face - - - Agent with angry expression on face - - - Agent with bored expression on face - - - Agent crying - - - Agent showing disdain (dislike) for something - - - Agent with embarassed expression on face - - - Agent with frowning expression on face - - - Agent with kissy face - - - Agent expressing laughgter - - - Agent with open mouth - - - Agent with repulsed expression on face - - - Agent expressing sadness - - - Agent shrugging shoulders - - - Agent with a smile - - - Agent expressing surprise - - - Agent sticking tongue out - - - Agent with big toothy smile - - - Agent winking - - - Agent expressing worry - - - Agent falling down - - - Agent walking (feminine version) - - - Agent wagging finger (disapproval) - - - I'm not sure I want to know - - - Agent in superman position - - - Agent in superman position - - - Agent greeting another - - - Agent holding bazooka (right handed) - - - Agent holding a bow (left handed) - - - Agent holding a handgun (right handed) - - - Agent holding a rifle (right handed) - - - Agent throwing an object (right handed) - - - Agent in static hover - - - Agent hovering downward - - - Agent hovering upward - - - Agent being impatient - - - Agent jumping - - - Agent jumping with fervor - - - Agent point to lips then rear end - - - Agent landing from jump, finished flight, etc - - - Agent laughing - - - Agent landing from jump, finished flight, etc - - - Agent sitting on a motorcycle - - - - - - - Agent moving head side to side - - - Agent moving head side to side with unhappy expression - - - Agent taunting another - - - - - - - Agent giving peace sign - - - Agent pointing at self - - - Agent pointing at another - - - Agent preparing for jump (bending knees) - - - Agent punching with left hand - - - Agent punching with right hand - - - Agent acting repulsed - - - Agent trying to be Chuck Norris - - - Rocks, Paper, Scissors 1, 2, 3 - - - Agent with hand flat over other hand - - - Agent with fist over other hand - - - Agent with two fingers spread over other hand - - - Agent running - - - Agent appearing sad - - - Agent saluting - - - Agent shooting bow (left handed) - - - Agent cupping mouth as if shouting - - - Agent shrugging shoulders - - - Agent in sit position - - - Agent in sit position (feminine) - - - Agent in sit position (generic) - - - Agent sitting on ground - - - Agent sitting on ground - - - - - - - Agent sleeping on side - - - Agent smoking - - - Agent inhaling smoke - - - - - - - Agent taking a picture - - - Agent standing - - - Agent standing up - - - Agent standing - - - Agent standing - - - Agent standing - - - Agent standing - - - Agent stretching - - - Agent in stride (fast walk) - - - Agent surfing - - - Agent acting surprised - - - Agent striking with a sword - - - Agent talking (lips moving) - - - Agent throwing a tantrum - - - Agent throwing an object (right handed) - - - Agent trying on a shirt - - - Agent turning to the left - - - Agent turning to the right - - - Agent typing - - - Agent walking - - - Agent whispering - - - Agent whispering with fingers in mouth - - - Agent winking - - - Agent winking - - - Agent worried - - - Agent nodding yes - - - Agent nodding yes with happy face - - - Agent floating with legs and arms crossed - - - - A dictionary containing all pre-defined animations - - A dictionary containing the pre-defined animations, - where the key is the animations ID, and the value is a string - containing a name to identify the purpose of the animation - - - - Index of TextureEntry slots for avatar appearances - - - - - Bake layers for avatar appearance - - - - - Default constructor - - A reference to our agent - - - - Contains information about a wearable inventory item - - - - Inventory ItemID of the wearable - - - AssetID of the wearable asset - - - WearableType of the wearable - - - AssetType of the wearable - - - Asset data for the wearable - - - - Data collected from visual params for each wearable - needed for the calculation of the color - - - - - Holds a texture assetID and the data needed to bake this layer into - an outfit texture. Used to keep track of currently worn textures - and baking data - - - - A texture AssetID - - - Asset data for the texture - - - Collection of alpha masks that needs applying - - - Tint that should be applied to the texture - - - Maximum number of concurrent downloads for wearable assets and textures - - - Maximum number of concurrent uploads for baked textures - - - Timeout for fetching inventory listings - - - Timeout for fetching a single wearable, or receiving a single packet response - - - Timeout for fetching a single texture - - - Timeout for uploading a single baked texture - - - Number of times to retry bake upload - - - When changing outfit, kick off rebake after - 20 seconds has passed since the last change - - - Total number of wearables for each avatar - - - Total number of baked textures on each avatar - - - Total number of wearables per bake layer - - - Total number of textures on an avatar, baked or not - - - Mapping between BakeType and AvatarTextureIndex - - - Map of what wearables are included in each bake - - - Magic values to finalize the cache check hashes for each - bake - - - Default avatar texture, used to detect when a custom - texture is not set for a face - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - A cache of wearables currently being worn - - - A cache of textures currently being worn - - - Incrementing serial number for AgentCachedTexture packets - - - Incrementing serial number for AgentSetAppearance packets - - - Indicates whether or not the appearance thread is currently - running, to prevent multiple appearance threads from running - simultaneously - - - Reference to our agent - - - - Timer used for delaying rebake on changing outfit - - - - - Main appearance thread - - - - Triggered when an AgentWearablesUpdate packet is received, - telling us what our avatar is currently wearing - request. - - - Raised when an AgentCachedTextureResponse packet is - received, giving a list of cached bakes that were found on the - simulator - request. - - - - Raised when appearance data is sent to the simulator, also indicates - the main appearance thread is finished. - - request. - - - Triggered when the simulator requests the agent rebake its appearance. - - - - - - Returns true if AppearanceManager is busy and trying to set or change appearance will fail - - - - Raises the AgentWearablesReply event - An AgentWearablesReplyEventArgs object containing the - data returned from the data server - - - Raises the CachedBakesReply event - An AgentCachedBakesReplyEventArgs object containing the - data returned from the data server AgentCachedTextureResponse - - - Raises the AppearanceSet event - An AppearanceSetEventArgs object indicating if the operatin was successfull - - - Raises the RebakeAvatarRequested event - An RebakeAvatarTexturesEventArgs object containing the - data returned from the data server - - - - Obsolete method for setting appearance. This function no longer does anything. - Use RequestSetAppearance() to manually start the appearance thread - - - - - Obsolete method for setting appearance. This function no longer does anything. - Use RequestSetAppearance() to manually start the appearance thread - - Unused parameter - - - - Starts the appearance setting thread - - - - - Starts the appearance setting thread - - True to force rebaking, otherwise false - - - - Ask the server what textures our agent is currently wearing - - - - - Build hashes out of the texture assetIDs for each baking layer to - ask the simulator whether it has cached copies of each baked texture - - - - - Returns the AssetID of the asset that is currently being worn in a - given WearableType slot - - WearableType slot to get the AssetID for - The UUID of the asset being worn in the given slot, or - UUID.Zero if no wearable is attached to the given slot or wearables - have not been downloaded yet - - - - Add a wearable to the current outfit and set appearance - - Wearable to be added to the outfit - - - - Add a list of wearables to the current outfit and set appearance - - List of wearable inventory items to - be added to the outfit - - - - Remove a wearable from the current outfit and set appearance - - Wearable to be removed from the outfit - - - - Removes a list of wearables from the current outfit and set appearance - - List of wearable inventory items to - be removed from the outfit - - - - Replace the current outfit with a list of wearables and set appearance - - List of wearable inventory items that - define a new outfit - - - - Checks if an inventory item is currently being worn - - The inventory item to check against the agent - wearables - The WearableType slot that the item is being worn in, - or WearbleType.Invalid if it is not currently being worn - - - - Returns a copy of the agents currently worn wearables - - A copy of the agents currently worn wearables - Avoid calling this function multiple times as it will make - a copy of all of the wearable data each time - - - - Calls either or - depending on the value of - replaceItems - - List of wearable inventory items to add - to the outfit or become a new outfit - True to replace existing items with the - new list of items, false to add these items to the existing outfit - - - - Adds a list of attachments to our agent - - A List containing the attachments to add - If true, tells simulator to remove existing attachment - first - - - - Attach an item to our agent at a specific attach point - - A to attach - the on the avatar - to attach the item to - - - - Attach an item to our agent specifying attachment details - - The of the item to attach - The attachments owner - The name of the attachment - The description of the attahment - The to apply when attached - The of the attachment - The on the agent - to attach the item to - - - - Detach an item from our agent using an object - - An object - - - - Detach an item from our agent - - The inventory itemID of the item to detach - - - - Inform the sim which wearables are part of our current outfit - - - - - Replaces the Wearables collection with a list of new wearable items - - Wearable items to replace the Wearables collection with - - - - Calculates base color/tint for a specific wearable - based on its params - - All the color info gathered from wearable's VisualParams - passed as list of ColorParamInfo tuples - Base color/tint for the wearable - - - - Blocking method to populate the Wearables dictionary - - True on success, otherwise false - - - - Blocking method to populate the Textures array with cached bakes - - True on success, otherwise false - - - - Populates textures and visual params from a decoded asset - - Wearable to decode - - - - Blocking method to download and parse currently worn wearable assets - - True on success, otherwise false - - - - Get a list of all of the textures that need to be downloaded for a - single bake layer - - Bake layer to get texture AssetIDs for - A list of texture AssetIDs to download - - - - Helper method to lookup the TextureID for a single layer and add it - to a list if it is not already present - - - - - - - - - Blocking method to download all of the textures needed for baking - the given bake layers - - A list of layers that need baking - No return value is given because the baking will happen - whether or not all textures are successfully downloaded - - - - Blocking method to create and upload baked textures for all of the - missing bakes - - True on success, otherwise false - - - - Blocking method to create and upload a baked texture for a single - bake layer - - Layer to bake - True on success, otherwise false - - - - Blocking method to upload a baked texture - - Five channel JPEG2000 texture data to upload - UUID of the newly created asset on success, otherwise UUID.Zero - - - - Creates a dictionary of visual param values from the downloaded wearables - - A dictionary of visual param indices mapping to visual param - values for our agent that can be fed to the Baker class - - - - Create an AgentSetAppearance packet from Wearables data and the - Textures array and send it - - - - - Converts a WearableType to a bodypart or clothing WearableType - - A WearableType - AssetType.Bodypart or AssetType.Clothing or AssetType.Unknown - - - - Converts a BakeType to the corresponding baked texture slot in AvatarTextureIndex - - A BakeType - The AvatarTextureIndex slot that holds the given BakeType - - - - Gives the layer number that is used for morph mask - - >A BakeType - Which layer number as defined in BakeTypeToTextures is used for morph mask - - - - Converts a BakeType to a list of the texture slots that make up that bake - - A BakeType - A list of texture slots that are inputs for the given bake - - - Contains the Event data returned from the data server from an AgentWearablesRequest - - - Construct a new instance of the AgentWearablesReplyEventArgs class - - - Contains the Event data returned from the data server from an AgentCachedTextureResponse - - - Construct a new instance of the AgentCachedBakesReplyEventArgs class - - - Contains the Event data returned from an AppearanceSetRequest - - - - Triggered when appearance data is sent to the sim and - the main appearance thread is done. - Indicates whether appearance setting was successful - - - Indicates whether appearance setting was successful - - - Contains the Event data returned from the data server from an RebakeAvatarTextures - - - - Triggered when the simulator sends a request for this agent to rebake - its appearance - - The ID of the Texture Layer to bake - - - The ID of the Texture Layer to bake - - - - Class that handles the local asset cache - - - - - Default constructor - - A reference to the GridClient object - - - - Helper class for sorting files by their last accessed time - - - - - Allows setting weather to periodicale prune the cache if it grows too big - Default is enabled, when caching is enabled - - - - - How long (in ms) between cache checks (default is 5 min.) - - - - - Disposes cleanup timer - - - - - Only create timer when needed - - - - - Return bytes read from the local asset cache, null if it does not exist - - UUID of the asset we want to get - Raw bytes of the asset, or null on failure - - - - Returns ImageDownload object of the - image from the local image cache, null if it does not exist - - UUID of the image we want to get - ImageDownload object containing the image, or null on failure - - - - Constructs a file name of the cached asset - - UUID of the asset - String with the file name of the cahced asset - - - - Saves an asset to the local cache - - UUID of the asset - Raw bytes the asset consists of - Weather the operation was successfull - - - - Get the file name of the asset stored with gived UUID - - UUID of the asset - Null if we don't have that UUID cached on disk, file name if found in the cache folder - - - - Checks if the asset exists in the local cache - - UUID of the asset - True is the asset is stored in the cache, otherwise false - - - - Wipes out entire cache - - - - - Brings cache size to the 90% of the max size - - - - - Asynchronously brings cache size to the 90% of the max size - - - - - Adds up file sizes passes in a FileInfo array - - - - - Checks whether caching is enabled - - - - - Periodically prune the cache - - - - - Nicely formats file sizes - - Byte size we want to output - String with humanly readable file size - - - - - - - OK - - - Transfer completed - - - - - - - - - - - Unknown error occurred - - - Equivalent to a 404 error - - - Client does not have permission for that resource - - - Unknown status - - - - - - - - - - - Unknown - - - Virtually all asset transfers use this channel - - - - - - - - - - - Asset from the asset server - - - Inventory item - - - Estate asset, such as an estate covenant - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Image file format - - - - - - - - Number of milliseconds passed since the last transfer - packet was received - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Default constructor - - A reference to the GridClient object - - - - Callback used for various asset download requests - - Transfer information - Downloaded asset, null on fail - - - - Callback used upon competition of baked texture upload - - Asset UUID of the newly uploaded baked texture - - - Number of milliseconds to wait for a transfer header packet if out of order data was received - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - Texture download cache - - - Raised when the simulator responds sends - - - Raised during upload completes - - - Raised during upload with progres update - - - Fired when the simulator sends an InitiateDownloadPacket, used to download terrain .raw files - - - Fired when a texture is in the process of being downloaded by the TexturePipeline class - - - Raises the XferReceived event - A XferReceivedEventArgs object containing the - data returned from the simulator - - - Raises the AssetUploaded event - A AssetUploadedEventArgs object containing the - data returned from the simulator - - - Raises the UploadProgress event - A UploadProgressEventArgs object containing the - data returned from the simulator - - - Raises the InitiateDownload event - A InitiateDownloadEventArgs object containing the - data returned from the simulator - - - Raises the ImageReceiveProgress event - A ImageReceiveProgressEventArgs object containing the - data returned from the simulator - - - - Request an asset download - - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - The callback to fire when the simulator responds with the asset data - - - - Request an asset download - - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - Source location of the requested asset - The callback to fire when the simulator responds with the asset data - - - - Request an asset download - - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - Source location of the requested asset - UUID of the transaction - The callback to fire when the simulator responds with the asset data - - - - Request an asset download through the almost deprecated Xfer system - - Filename of the asset to request - Whether or not to delete the asset - off the server after it is retrieved - Use large transfer packets or not - UUID of the file to request, if filename is - left empty - Asset type of vFileID, or - AssetType.Unknown if filename is not empty - Sets the FilePath in the request to Cache - (4) if true, otherwise Unknown (0) is used - - - - - - - Use UUID.Zero if you do not have the - asset ID but have all the necessary permissions - The item ID of this asset in the inventory - Use UUID.Zero if you are not requesting an - asset from an object inventory - The owner of this asset - Asset type - Whether to prioritize this asset download or not - - - - - - Used to force asset data into the PendingUpload property, ie: for raw terrain uploads - - An AssetUpload object containing the data to upload to the simulator - - - - Request an asset be uploaded to the simulator - - The Object containing the asset data - If True, the asset once uploaded will be stored on the simulator - in which the client was connected in addition to being stored on the asset server - The of the transfer, can be used to correlate the upload with - events being fired - - - - Request an asset be uploaded to the simulator - - The of the asset being uploaded - A byte array containing the encoded asset data - If True, the asset once uploaded will be stored on the simulator - in which the client was connected in addition to being stored on the asset server - The of the transfer, can be used to correlate the upload with - events being fired - - - - Request an asset be uploaded to the simulator - - - - Asset type to upload this data as - A byte array containing the encoded asset data - If True, the asset once uploaded will be stored on the simulator - in which the client was connected in addition to being stored on the asset server - The of the transfer, can be used to correlate the upload with - events being fired - - - - Initiate an asset upload - - The ID this asset will have if the - upload succeeds - Asset type to upload this data as - Raw asset data to upload - Whether to store this asset on the local - simulator or the grid-wide asset server - The tranaction id for the upload - The transaction ID of this transfer - - - - Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - A float indicating the requested priority for the transfer. Higher priority values tell the simulator - to prioritize the request before lower valued requests. An image already being transferred using the can have - its priority changed by resending the request with the new priority value - Number of quality layers to discard. - This controls the end marker of the data sent. Sending with value -1 combined with priority of 0 cancels an in-progress - transfer. - A bug exists in the Linden Simulator where a -1 will occasionally be sent with a non-zero priority - indicating an off-by-one error. - The packet number to begin the request at. A value of 0 begins the request - from the start of the asset texture - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - If true, the callback will be fired for each chunk of the downloaded image. - The callback asset parameter will contain all previously received chunks of the texture asset starting - from the beginning of the request - - Request an image and fire a callback when the request is complete - - Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); - private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) - { - if(state == TextureRequestState.Finished) - { - Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", - asset.AssetID, - asset.AssetData.Length); - } - } - - Request an image and use an inline anonymous method to handle the downloaded texture data - - Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, delegate(TextureRequestState state, AssetTexture asset) - { - if(state == TextureRequestState.Finished) - { - Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", - asset.AssetID, - asset.AssetData.Length); - } - } - ); - - Request a texture, decode the texture to a bitmap image and apply it to a imagebox - - Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); - private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) - { - if(state == TextureRequestState.Finished) - { - ManagedImage imgData; - Image bitmap; - if (state == TextureRequestState.Finished) - { - OpenJPEG.DecodeToImage(assetTexture.AssetData, out imgData, out bitmap); - picInsignia.Image = bitmap; - } - } - } - - - - - Overload: Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - - - - Overload: Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - - - - Overload: Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - If true, the callback will be fired for each chunk of the downloaded image. - The callback asset parameter will contain all previously received chunks of the texture asset starting - from the beginning of the request - - - - Cancel a texture request - - The texture assets - - - - Lets TexturePipeline class fire the progress event - - The texture ID currently being downloaded - the number of bytes transferred - the total number of bytes expected - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Xfer data - - - Upload data - - - Filename used on the simulator - - - Filename used by the client - - - UUID of the image that is in progress - - - Number of bytes received so far - - - Image size in bytes - - - - Avatar profile flags - - - - - Represents an avatar (other than your own) - - - - - Default constructor - - - - - Positive and negative ratings - - - - Positive ratings for Behavior - - - Negative ratings for Behavior - - - Positive ratings for Appearance - - - Negative ratings for Appearance - - - Positive ratings for Building - - - Negative ratings for Building - - - Positive ratings given by this avatar - - - Negative ratings given by this avatar - - - - Avatar properties including about text, profile URL, image IDs and - publishing settings - - - - First Life about text - - - First Life image ID - - - - - - - - - - - - - - - - - - - Profile image ID - - - Flags of the profile - - - Web URL for this profile - - - Should this profile be published on the web - - - Avatar Online Status - - - Is this a mature profile - - - - - - - - - - - - Avatar interests including spoken languages, skills, and "want to" - choices - - - - Languages profile field - - - - - - - - - - - - - - - - - - - Groups that this avatar is a member of - - - Positive and negative ratings - - - Avatar properties including about text, profile URL, image IDs and - publishing settings - - - Avatar interests including spoken languages, skills, and "want to" - choices - - - Movement control flags for avatars. Typically not set or used by - clients. To move your avatar, use Client.Self.Movement instead - - - - Contains the visual parameters describing the deformation of the avatar - - - - First name - - - Last name - - - Full name - - - Active group - - - - Holds group information for Avatars such as those you might find in a profile - - - - true of Avatar accepts group notices - - - Groups Key - - - Texture Key for groups insignia - - - Name of the group - - - Powers avatar has in the group - - - Avatars Currently selected title - - - true of Avatar has chosen to list this in their profile - - - - Contains an animation currently being played by an agent - - - - The ID of the animation asset - - - A number to indicate start order of currently playing animations - On Linden Grids this number is unique per region, with OpenSim it is per client - - - - - - - - Holds group information on an individual profile pick - - - - - Retrieve friend status notifications, and retrieve avatar names and - profiles - - - - - Represents other avatars - - - - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - Raised when the simulator sends us data containing - an agents animation playlist - - - Raised when the simulator sends us data containing - the appearance information for an agent - - - Raised when the simulator sends us data containing - agent names/id values - - - Raised when the simulator sends us data containing - the interests listed in an agents profile - - - Raised when the simulator sends us data containing - profile property information for an agent - - - Raised when the simulator sends us data containing - the group membership an agent is a member of - - - Raised when the simulator sends us data containing - name/id pair - - - Raised when the simulator sends us data containing - the objects and effect when an agent is pointing at - - - Raised when the simulator sends us data containing - the objects and effect when an agent is looking at - - - Raised when the simulator sends us data containing - an agents viewer effect information - - - Raised when the simulator sends us data containing - the top picks from an agents profile - - - Raised when the simulator sends us data containing - the Pick details - - - Raised when the simulator sends us data containing - the classified ads an agent has placed - - - Raised when the simulator sends us data containing - the details of a classified ad - - - Raises the AvatarAnimation Event - An AvatarAnimationEventArgs object containing - the data sent from the simulator - - - Raises the AvatarAppearance Event - A AvatarAppearanceEventArgs object containing - the data sent from the simulator - - - Raises the UUIDNameReply Event - A UUIDNameReplyEventArgs object containing - the data sent from the simulator - - - Raises the AvatarInterestsReply Event - A AvatarInterestsReplyEventArgs object containing - the data sent from the simulator - - - Raises the AvatarPropertiesReply Event - A AvatarPropertiesReplyEventArgs object containing - the data sent from the simulator - - - Raises the AvatarGroupsReply Event - A AvatarGroupsReplyEventArgs object containing - the data sent from the simulator - - - Raises the AvatarPickerReply Event - A AvatarPickerReplyEventArgs object containing - the data sent from the simulator - - - Raises the ViewerEffectPointAt Event - A ViewerEffectPointAtEventArgs object containing - the data sent from the simulator - - - Raises the ViewerEffectLookAt Event - A ViewerEffectLookAtEventArgs object containing - the data sent from the simulator - - - Raises the ViewerEffect Event - A ViewerEffectEventArgs object containing - the data sent from the simulator - - - Raises the AvatarPicksReply Event - A AvatarPicksReplyEventArgs object containing - the data sent from the simulator - - - Raises the PickInfoReply Event - A PickInfoReplyEventArgs object containing - the data sent from the simulator - - - Raises the AvatarClassifiedReply Event - A AvatarClassifiedReplyEventArgs object containing - the data sent from the simulator - - - Raises the ClassifiedInfoReply Event - A ClassifiedInfoReplyEventArgs object containing - the data sent from the simulator - - - Tracks the specified avatar on your map - Avatar ID to track - - - - Request a single avatar name - - The avatar key to retrieve a name for - - - - Request a list of avatar names - - The avatar keys to retrieve names for - - - - Start a request for Avatar Properties - - - - - - - Search for an avatar (first name, last name) - - The name to search for - An ID to associate with this query - - - - Start a request for Avatar Picks - - UUID of the avatar - - - - Start a request for Avatar Classifieds - - UUID of the avatar - - - - Start a request for details of a specific profile pick - - UUID of the avatar - UUID of the profile pick - - - - Start a request for details of a specific profile classified - - UUID of the avatar - UUID of the profile classified - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - Crossed region handler for message that comes across the EventQueue. Sent to an agent - when the agent crosses a sim border into a new region. - - The message key - the IMessage object containing the deserialized data sent from the simulator - The which originated the packet - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Provides data for the event - The event occurs when the simulator sends - the animation playlist for an agent - - The following code example uses the and - properties to display the animation playlist of an avatar on the window. - - // subscribe to the event - Client.Avatars.AvatarAnimation += Avatars_AvatarAnimation; - private void Avatars_AvatarAnimation(object sender, AvatarAnimationEventArgs e) - { - // create a dictionary of "known" animations from the Animations class using System.Reflection - Dictionary<UUID, string> systemAnimations = new Dictionary<UUID, string>(); - Type type = typeof(Animations); - System.Reflection.FieldInfo[] fields = type.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); - foreach (System.Reflection.FieldInfo field in fields) - { - systemAnimations.Add((UUID)field.GetValue(type), field.Name); - } - // find out which animations being played are known animations and which are assets - foreach (Animation animation in e.Animations) - { - if (systemAnimations.ContainsKey(animation.AnimationID)) - { - Console.WriteLine("{0} is playing {1} ({2}) sequence {3}", e.AvatarID, - systemAnimations[animation.AnimationID], animation.AnimationSequence); - } - else - { - Console.WriteLine("{0} is playing {1} (Asset) sequence {2}", e.AvatarID, - animation.AnimationID, animation.AnimationSequence); - } - } - } - - - - - Construct a new instance of the AvatarAnimationEventArgs class - - The ID of the agent - The list of animations to start - - - Get the ID of the agent - - - Get the list of animations to start - - - Provides data for the event - The event occurs when the simulator sends - the appearance data for an avatar - - The following code example uses the and - properties to display the selected shape of an avatar on the window. - - // subscribe to the event - Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; - // handle the data when the event is raised - void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) - { - Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") - } - - - - - Construct a new instance of the AvatarAppearanceEventArgs class - - The simulator request was from - The ID of the agent - true of the agent is a trial account - The default agent texture - The agents appearance layer textures - The for the agent - - - Get the Simulator this request is from of the agent - - - Get the ID of the agent - - - true if the agent is a trial account - - - Get the default agent texture - - - Get the agents appearance layer textures - - - Get the for the agent - - - Represents the interests from the profile of an agent - - - Get the ID of the agent - - - The properties of an agent - - - Get the ID of the agent - - - Get the ID of the agent - - - Get the ID of the agent - - - Get the ID of the avatar - - - - Reads in a byte array of an Animation Asset created by the SecondLife(tm) client. - - - - - Searialize an animation asset into it's joints/keyframes/meta data - - - - - - - Rotation Keyframe count (used internally) - - - - - Position Keyframe count (used internally) - - - - - Animation Priority - - - - - The animation length in seconds. - - - - - Expression set in the client. Null if [None] is selected - - - - - The time in seconds to start the animation - - - - - The time in seconds to end the animation - - - - - Loop the animation - - - - - Meta data. Ease in Seconds. - - - - - Meta data. Ease out seconds. - - - - - Meta Data for the Hand Pose - - - - - Number of joints defined in the animation - - - - - Contains an array of joints - - - - - Variable length strings seem to be null terminated in the animation asset.. but.. - use with caution, home grown. - advances the index. - - The animation asset byte array - The offset to start reading - a string - - - - Read in a Joint from an animation asset byte array - Variable length Joint fields, yay! - Advances the index - - animation asset byte array - Byte Offset of the start of the joint - The Joint data serialized into the binBVHJoint structure - - - - Read Keyframes of a certain type - advance i - - Animation Byte array - Offset in the Byte Array. Will be advanced - Number of Keyframes - Scaling Min to pass to the Uint16ToFloat method - Scaling Max to pass to the Uint16ToFloat method - - - - - - A Joint and it's associated meta data and keyframes - - - - - Name of the Joint. Matches the avatar_skeleton.xml in client distros - - - - - Joint Animation Override? Was the same as the Priority in testing.. - - - - - Array of Rotation Keyframes in order from earliest to latest - - - - - Array of Position Keyframes in order from earliest to latest - This seems to only be for the Pelvis? - - - - - A Joint Keyframe. This is either a position or a rotation. - - - - - Either a Vector3 position or a Vector3 Euler rotation - - - - - Poses set in the animation metadata for the hands. - - - - - Wrapper around a byte array that allows bit to be packed and unpacked - one at a time or by a variable amount. Useful for very tightly packed - data like LayerData packets - - - - - Default constructor, initialize the bit packer / bit unpacker - with a byte array and starting position - - Byte array to pack bits in to or unpack from - Starting position in the byte array - - - - - - - - - - - - - - - - Pack a floating point value in to the data - - Floating point value to pack - - - - Pack part or all of an integer in to the data - - Integer containing the data to pack - Number of bits of the integer to pack - - - - Pack part or all of an unsigned integer in to the data - - Unsigned integer containing the data to pack - Number of bits of the integer to pack - - - - Pack a single bit in to the data - - Bit to pack - - - - - - - - - - - - - - - - - - - - - - - - - - - - Unpacking a floating point value from the data - - Unpacked floating point value - - - - Unpack a variable number of bits from the data in to integer format - - Number of bits to unpack - An integer containing the unpacked bits - This function is only useful up to 32 bits - - - - Unpack a variable number of bits from the data in to unsigned - integer format - - Number of bits to unpack - An unsigned integer containing the unpacked bits - This function is only useful up to 32 bits - - - - Unpack a 16-bit signed integer - - 16-bit signed integer - - - - Unpack a 16-bit unsigned integer - - 16-bit unsigned integer - - - - Unpack a 32-bit signed integer - - 32-bit signed integer - - - - Unpack a 32-bit unsigned integer - - 32-bit unsigned integer - - - - Capabilities is the name of the bi-directional HTTP REST protocol - used to communicate non real-time transactions such as teleporting or - group messaging - - - - - Default constructor - - - - - - - - - Triggered when an event is received via the EventQueueGet - capability - - Event name - Decoded event data - The simulator that generated the event - - - Reference to the simulator this system is connected to - - - Capabilities URI this system was initialized with - - - Whether the capabilities event queue is connected and - listening for incoming events - - - - Request the URI of a named capability - - Name of the capability to request - The URI of the requested capability, or String.Empty if - the capability does not exist - - - - Process any incoming events, check to see if we have a message created for the event, - - - - - - - - - Attempts to convert an LLSD structure to a known Packet type - - Event name, this must match an actual - packet name for a Packet to be successfully built - LLSD to convert to a Packet - A Packet on success, otherwise null - - - Origin position of this coordinate frame - - - X axis of this coordinate frame, or Forward/At in grid terms - - - Y axis of this coordinate frame, or Left in grid terms - - - Z axis of this coordinate frame, or Up in grid terms - - - - - Looking direction, must be a normalized vector - Up direction, must be a normalized vector - - - - Align the coordinate frame X and Y axis with a given rotation - around the Z axis in radians - - Absolute rotation around the Z axis in - radians - - - - Access to the data server which allows searching for land, events, people, etc - - - - - Constructs a new instance of the DirectoryManager class - - An instance of GridClient - - - Classified Ad categories - - - Classified is listed in the Any category - - - Classified is shopping related - - - Classified is - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Event Categories - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Query Flags used in many of the DirectoryManager methods to specify which query to execute and how to return the results. - Flags can be combined using the | (pipe) character, not all flags are available in all queries - - - - Query the People database - - - - - - - - - - - Query the Groups database - - - Query the Events database - - - Query the land holdings database for land owned by the currently connected agent - - - - - - - Query the land holdings database for land which is owned by a Group - - - Specifies the query should pre sort the results based upon traffic - when searching the Places database - - - - - - - - - - - - - - - - - - - Specifies the query should pre sort the results in an ascending order when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results using the SalePrice field when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results by calculating the average price/sq.m (SalePrice / Area) when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results using the ParcelSize field when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results using the Name field when searching the land sales database. - This flag is only used when searching the land sales database - - - When set, only parcels less than the specified Price will be included when searching the land sales database. - This flag is only used when searching the land sales database - - - When set, only parcels greater than the specified Size will be included when searching the land sales database. - This flag is only used when searching the land sales database - - - - - - - - - - - Include PG land in results. This flag is used when searching both the Groups, Events and Land sales databases - - - Include Mature land in results. This flag is used when searching both the Groups, Events and Land sales databases - - - Include Adult land in results. This flag is used when searching both the Groups, Events and Land sales databases - - - - - - - - Land types to search dataserver for - - - - Search Auction, Mainland and Estate - - - Land which is currently up for auction - - - Parcels which are on the mainland (Linden owned) continents - - - Parcels which are on privately owned simulators - - - - The content rating of the event - - - - Event is PG - - - Event is Mature - - - Event is Adult - - - - Classified Ad Options - - There appear to be two formats the flags are packed in. - This set of flags is for the newer style - - - - - - - - - - - - - - - - - - - - - - - - Classified ad query options - - - - Include all ads in results - - - Include PG ads in results - - - Include Mature ads in results - - - Include Adult ads in results - - - - The For Sale flag in PlacesReplyData - - - - Parcel is not listed for sale - - - Parcel is For Sale - - - - A classified ad on the grid - - - - UUID for this ad, useful for looking up detailed - information about it - - - The title of this classified ad - - - Flags that show certain options applied to the classified - - - Creation date of the ad - - - Expiration date of the ad - - - Price that was paid for this ad - - - Print the struct data as a string - A string containing the field name, and field value - - - - A parcel retrieved from the dataserver such as results from the - "For-Sale" listings or "Places" Search - - - - The unique dataserver parcel ID - This id is used to obtain additional information from the entry - by using the method - - - A string containing the name of the parcel - - - The size of the parcel - This field is not returned for Places searches - - - The price of the parcel - This field is not returned for Places searches - - - If True, this parcel is flagged to be auctioned - - - If true, this parcel is currently set for sale - - - Parcel traffic - - - Print the struct data as a string - A string containing the field name, and field value - - - - An Avatar returned from the dataserver - - - - Online status of agent - This field appears to be obsolete and always returns false - - - The agents first name - - - The agents last name - - - The agents - - - Print the struct data as a string - A string containing the field name, and field value - - - - Response to a "Groups" Search - - - - The Group ID - - - The name of the group - - - The current number of members - - - Print the struct data as a string - A string containing the field name, and field value - - - - Parcel information returned from a request - - Represents one of the following: - A parcel of land on the grid that has its Show In Search flag set - A parcel of land owned by the agent making the request - A parcel of land owned by a group the agent making the request is a member of - - In a request for Group Land, the First record will contain an empty record - - Note: This is not the same as searching the land for sale data source - - - - The ID of the Agent of Group that owns the parcel - - - The name - - - The description - - - The Size of the parcel - - - The billable Size of the parcel, for mainland - parcels this will match the ActualArea field. For Group owned land this will be 10 percent smaller - than the ActualArea. For Estate land this will always be 0 - - - Indicates the ForSale status of the parcel - - - The Gridwide X position - - - The Gridwide Y position - - - The Z position of the parcel, or 0 if no landing point set - - - The name of the Region the parcel is located in - - - The Asset ID of the parcels Snapshot texture - - - The calculated visitor traffic - - - The billing product SKU - Known values are: - 023Mainland / Full Region024Estate / Full Region027Estate / Openspace029Estate / Homestead129Mainland / Homestead (Linden Owned) - - - No longer used, will always be 0 - - - Get a SL URL for the parcel - A string, containing a standard SLURL - - - Print the struct data as a string - A string containing the field name, and field value - - - - An "Event" Listing summary - - - - The ID of the event creator - - - The name of the event - - - The events ID - - - A string containing the short date/time the event will begin - - - The event start time in Unixtime (seconds since epoch) - - - The events maturity rating - - - Print the struct data as a string - A string containing the field name, and field value - - - - The details of an "Event" - - - - The events ID - - - The ID of the event creator - - - The name of the event - - - The category - - - The events description - - - The short date/time the event will begin - - - The event start time in Unixtime (seconds since epoch) UTC adjusted - - - The length of the event in minutes - - - 0 if no cover charge applies - - - The cover charge amount in L$ if applicable - - - The name of the region where the event is being held - - - The gridwide location of the event - - - The maturity rating - - - Get a SL URL for the parcel where the event is hosted - A string, containing a standard SLURL - - - Print the struct data as a string - A string containing the field name, and field value - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raises the EventInfoReply event - An EventInfoReplyEventArgs object containing the - data returned from the data server - - - Raises the DirEventsReply event - An DirEventsReplyEventArgs object containing the - data returned from the data server - - - Raises the PlacesReply event - A PlacesReplyEventArgs object containing the - data returned from the data server - - - Raises the DirPlacesReply event - A DirPlacesReplyEventArgs object containing the - data returned from the data server - - - Raises the DirClassifiedsReply event - A DirClassifiedsReplyEventArgs object containing the - data returned from the data server - - - Raises the DirGroupsReply event - A DirGroupsReplyEventArgs object containing the - data returned from the data server - - - Raises the DirPeopleReply event - A DirPeopleReplyEventArgs object containing the - data returned from the data server - - - Raises the DirLandReply event - A DirLandReplyEventArgs object containing the - data returned from the data server - - - - Query the data server for a list of classified ads containing the specified string. - Defaults to searching for classified placed in any category, and includes PG, Adult and Mature - results. - Responses are sent 16 per response packet, there is no way to know how many results a query reply will contain however assuming - the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received - The event is raised when a response is received from the simulator - - A string containing a list of keywords to search for - A UUID to correlate the results when the event is raised - - - - Query the data server for a list of classified ads which contain specified keywords (Overload) - The event is raised when a response is received from the simulator - - A string containing a list of keywords to search for - The category to search - A set of flags which can be ORed to modify query options - such as classified maturity rating. - A UUID to correlate the results when the event is raised - - Search classified ads containing the key words "foo" and "bar" in the "Any" category that are either PG or Mature - - UUID searchID = StartClassifiedSearch("foo bar", ClassifiedCategories.Any, ClassifiedQueryFlags.PG | ClassifiedQueryFlags.Mature); - - - Responses are sent 16 at a time, there is no way to know how many results a query reply will contain however assuming - the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received - - - - - Starts search for places (Overloaded) - The event is raised when a response is received from the simulator - - Search text - Each request is limited to 100 places - being returned. To get the first 100 result entries of a request use 0, - from 100-199 use 1, 200-299 use 2, etc. - A UUID to correlate the results when the event is raised - - - - Queries the dataserver for parcels of land which are flagged to be shown in search - The event is raised when a response is received from the simulator - - A string containing a list of keywords to search for separated by a space character - A set of flags which can be ORed to modify query options - such as classified maturity rating. - The category to search - Each request is limited to 100 places - being returned. To get the first 100 result entries of a request use 0, - from 100-199 use 1, 200-299 use 2, etc. - A UUID to correlate the results when the event is raised - - Search places containing the key words "foo" and "bar" in the "Any" category that are either PG or Adult - - UUID searchID = StartDirPlacesSearch("foo bar", DirFindFlags.DwellSort | DirFindFlags.IncludePG | DirFindFlags.IncludeAdult, ParcelCategory.Any, 0); - - - Additional information on the results can be obtained by using the ParcelManager.InfoRequest method - - - - - Starts a search for land sales using the directory - The event is raised when a response is received from the simulator - - What type of land to search for. Auction, - estate, mainland, "first land", etc - The OnDirLandReply event handler must be registered before - calling this function. There is no way to determine how many - results will be returned, or how many times the callback will be - fired other than you won't get more than 100 total parcels from - each query. - - - - Starts a search for land sales using the directory - The event is raised when a response is received from the simulator - - What type of land to search for. Auction, - estate, mainland, "first land", etc - Maximum price to search for - Maximum area to search for - Each request is limited to 100 parcels - being returned. To get the first 100 parcels of a request use 0, - from 100-199 use 1, 200-299 use 2, etc. - The OnDirLandReply event handler must be registered before - calling this function. There is no way to determine how many - results will be returned, or how many times the callback will be - fired other than you won't get more than 100 total parcels from - each query. - - - - Send a request to the data server for land sales listings - - Flags sent to specify query options - Available flags: - Specify the parcel rating with one or more of the following: - IncludePG IncludeMature IncludeAdult - Specify the field to pre sort the results with ONLY ONE of the following: - PerMeterSort NameSort AreaSort PricesSort - Specify the order the results are returned in, if not specified the results are pre sorted in a Descending Order - SortAsc - Specify additional filters to limit the results with one or both of the following: - LimitByPrice LimitByArea - Flags can be combined by separating them with the | (pipe) character - Additional details can be found in - What type of land to search for. Auction, - Estate or Mainland - Maximum price to search for when the - DirFindFlags.LimitByPrice flag is specified in findFlags - Maximum area to search for when the - DirFindFlags.LimitByArea flag is specified in findFlags - Each request is limited to 100 parcels - being returned. To get the first 100 parcels of a request use 0, - from 100-199 use 100, 200-299 use 200, etc. - - The event will be raised with the response from the simulator - There is no way to determine how many results will be returned, or how many times the callback will be - fired other than you won't get more than 100 total parcels from - each reply. - Any land set for sale to either anybody or specific to the connected agent will be included in the - results if the land is included in the query - - - - // request all mainland, any maturity rating that is larger than 512 sq.m - StartLandSearch(DirFindFlags.SortAsc | DirFindFlags.PerMeterSort | DirFindFlags.LimitByArea | DirFindFlags.IncludePG | DirFindFlags.IncludeMature | DirFindFlags.IncludeAdult, SearchTypeFlags.Mainland, 0, 512, 0); - - - - - - Search for Groups - - The name or portion of the name of the group you wish to search for - Start from the match number - - - - - - Search for Groups - - The name or portion of the name of the group you wish to search for - Start from the match number - Search flags - - - - - - Search the People directory for other avatars - - The name or portion of the name of the avatar you wish to search for - - - - - - - - Search Places for parcels of land you personally own - - - - - Searches Places for land owned by the specified group - - ID of the group you want to recieve land list for (You must be a member of the group) - Transaction (Query) ID which can be associated with results from your request. - - - - Search the Places directory for parcels that are listed in search and contain the specified keywords - - A string containing the keywords to search for - Transaction (Query) ID which can be associated with results from your request. - - - - Search Places - All Options - - One of the Values from the DirFindFlags struct, ie: AgentOwned, GroupOwned, etc. - One of the values from the SearchCategory Struct, ie: Any, Linden, Newcomer - A string containing a list of keywords to search for separated by a space character - String Simulator Name to search in - LLUID of group you want to recieve results for - Transaction (Query) ID which can be associated with results from your request. - Transaction (Query) ID which can be associated with results from your request. - - - - Search All Events with specifid searchText in all categories, includes PG, Mature and Adult - - A string containing a list of keywords to search for separated by a space character - Each request is limited to 100 entries - being returned. To get the first group of entries of a request use 0, - from 100-199 use 100, 200-299 use 200, etc. - UUID of query to correlate results in callback. - - - - Search Events - - A string containing a list of keywords to search for separated by a space character - One or more of the following flags: DateEvents, IncludePG, IncludeMature, IncludeAdult - from the Enum - Multiple flags can be combined by separating the flags with the | (pipe) character - "u" for in-progress and upcoming events, -or- number of days since/until event is scheduled - For example "0" = Today, "1" = tomorrow, "2" = following day, "-1" = yesterday, etc. - Each request is limited to 100 entries - being returned. To get the first group of entries of a request use 0, - from 100-199 use 100, 200-299 use 200, etc. - EventCategory event is listed under. - UUID of query to correlate results in callback. - - - Requests Event Details - ID of Event returned from the method - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming event message - The Unique Capabilities Key - The event message containing the data - The simulator the message originated from - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming event message - The Unique Capabilities Key - The event message containing the data - The simulator the message originated from - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Contains the Event data returned from the data server from an EventInfoRequest - - - Construct a new instance of the EventInfoReplyEventArgs class - A single EventInfo object containing the details of an event - - - - A single EventInfo object containing the details of an event - - - - Contains the "Event" detail data returned from the data server - - - Construct a new instance of the DirEventsReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list containing the "Events" returned by the search query - - - The ID returned by - - - A list of "Events" returned by the data server - - - Contains the "Event" list data returned from the data server - - - Construct a new instance of PlacesReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list containing the "Places" returned by the data server query - - - The ID returned by - - - A list of "Places" returned by the data server - - - Contains the places data returned from the data server - - - Construct a new instance of the DirPlacesReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list containing land data returned by the data server - - - The ID returned by - - - A list containing Places data returned by the data server - - - Contains the classified data returned from the data server - - - Construct a new instance of the DirClassifiedsReplyEventArgs class - A list of classified ad data returned from the data server - - - A list containing Classified Ads returned by the data server - - - Contains the group data returned from the data server - - - Construct a new instance of the DirGroupsReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list of groups data returned by the data server - - - The ID returned by - - - A list containing Groups data returned by the data server - - - Contains the people data returned from the data server - - - Construct a new instance of the DirPeopleReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list of people data returned by the data server - - - The ID returned by - - - A list containing People data returned by the data server - - - Contains the land sales data returned from the data server - - - Construct a new instance of the DirLandReplyEventArgs class - A list of parcels for sale returned by the data server - - - A list containing land forsale data returned by the data server - - - - Represends individual HTTP Download request - - - - Default constructor - - - Constructor - - - URI of the item to fetch - - - Timout specified in milliseconds - - - Download progress callback - - - Download completed callback - - - Accept the following content type - - - - Manages async HTTP downloads with a limit on maximum - concurrent downloads - - - - Default constructor - - - Maximum number of parallel downloads from a single endpoint - - - Client certificate - - - Cleanup method - - - Setup http download request - - - Check the queue for pending work - - - Enqueue a new HTPP download - - - Describes tasks returned in LandStatReply - - - - Estate level administration and utilities - - - - - Constructor for EstateTools class - - - - - - Used in the ReportType field of a LandStatRequest - - - Used by EstateOwnerMessage packets - - - Used by EstateOwnerMessage packets - - - - - - - No flags set - - - Only return targets scripted objects - - - Only return targets objects if on others land - - - Returns target's scripted objects and objects on other parcels - - - Ground texture settings for each corner of the region - - - Used by GroundTextureHeightSettings - - - The high and low texture thresholds for each corner of the sim - - - Textures for each of the four terrain height levels - - - Upper/lower texture boundaries for each corner of the sim - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raises the TopCollidersReply event - A TopCollidersReplyEventArgs object containing the - data returned from the data server - - - Raises the TopScriptsReply event - A TopScriptsReplyEventArgs object containing the - data returned from the data server - - - Raises the EstateUsersReply event - A EstateUsersReplyEventArgs object containing the - data returned from the data server - - - Raises the EstateGroupsReply event - A EstateGroupsReplyEventArgs object containing the - data returned from the data server - - - Raises the EstateManagersReply event - A EstateManagersReplyEventArgs object containing the - data returned from the data server - - - Raises the EstateBansReply event - A EstateBansReplyEventArgs object containing the - data returned from the data server - - - Raises the EstateCovenantReply event - A EstateCovenantReplyEventArgs object containing the - data returned from the data server - - - Raises the EstateUpdateInfoReply event - A EstateUpdateInfoReplyEventArgs object containing the - data returned from the data server - - - - Requests estate information such as top scripts and colliders - - - - - - - - - - - - Requests estate settings, including estate manager and access/ban lists - - - Requests the "Top Scripts" list for the current region - - - Requests the "Top Colliders" list for the current region - - - - Set several estate specific configuration variables - - The Height of the waterlevel over the entire estate. Defaults to 20 - The maximum height change allowed above the baked terrain. Defaults to 4 - The minimum height change allowed below the baked terrain. Defaults to -4 - true to use - if True forces the sun position to the position in SunPosition - The current position of the sun on the estate, or when FixedSun is true the static position - the sun will remain. 6.0 = Sunrise, 30.0 = Sunset - - - - Request return of objects owned by specified avatar - - The Agents owning the primitives to return - specify the coverage and type of objects to be included in the return - true to perform return on entire estate - - - - - - - - - - - - Used for setting and retrieving various estate panel settings - - EstateOwnerMessage Method field - List of parameters to include - - - - Kick an avatar from an estate - - Key of Agent to remove - - - - Ban an avatar from an estate - Key of Agent to remove - Ban user from this estate and all others owned by the estate owner - - - Unban an avatar from an estate - Key of Agent to remove - /// Unban user from this estate and all others owned by the estate owner - - - Send a message dialog to everyone in an entire estate - - Message to send all users in the estate - - - - Send a message dialog to everyone in a simulator - - Message to send all users in the simulator - - - - Send an avatar back to their home location - - Key of avatar to send home - - - - Begin the region restart process - - - - - Cancels a region restart - - - - Estate panel "Region" tab settings - - - Estate panel "Debug" tab settings - - - Used for setting the region's terrain textures for its four height levels - - - - - - - - - - - Used for setting sim terrain texture heights - - - Requests the estate covenant - - - - Upload a terrain RAW file - - A byte array containing the encoded terrain data - The name of the file being uploaded - The Id of the transfer request - - - - Teleports all users home in current Estate - - - - - Remove estate manager - Key of Agent to Remove - removes manager to this estate and all others owned by the estate owner - - - - Add estate manager - Key of Agent to Add - Add agent as manager to this estate and all others owned by the estate owner - - - - Add's an agent to the estate Allowed list - Key of Agent to Add - Add agent as an allowed reisdent to All estates if true - - - - Removes an agent from the estate Allowed list - Key of Agent to Remove - Removes agent as an allowed reisdent from All estates if true - - - - Add's a group to the estate Allowed list - Key of Group to Add - Add Group as an allowed group to All estates if true - - - - Removes a group from the estate Allowed list - Key of Group to Remove - Removes Group as an allowed Group from All estates if true - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised on LandStatReply when the report type is for "top colliders" - - - Construct a new instance of the TopCollidersReplyEventArgs class - The number of returned items in LandStatReply - Dictionary of Object UUIDs to tasks returned in LandStatReply - - - - The number of returned items in LandStatReply - - - - - A Dictionary of Object UUIDs to tasks returned in LandStatReply - - - - Raised on LandStatReply when the report type is for "top Scripts" - - - Construct a new instance of the TopScriptsReplyEventArgs class - The number of returned items in LandStatReply - Dictionary of Object UUIDs to tasks returned in LandStatReply - - - - The number of scripts returned in LandStatReply - - - - - A Dictionary of Object UUIDs to tasks returned in LandStatReply - - - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateBansReplyEventArgs class - The estate's identifier on the grid - The number of returned items in LandStatReply - User UUIDs banned - - - - The identifier of the estate - - - - - The number of returned itmes - - - - - List of UUIDs of Banned Users - - - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateUsersReplyEventArgs class - The estate's identifier on the grid - The number of users - Allowed users UUIDs - - - - The identifier of the estate - - - - - The number of returned items - - - - - List of UUIDs of Allowed Users - - - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateGroupsReplyEventArgs class - The estate's identifier on the grid - The number of Groups - Allowed Groups UUIDs - - - - The identifier of the estate - - - - - The number of returned items - - - - - List of UUIDs of Allowed Groups - - - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateManagersReplyEventArgs class - The estate's identifier on the grid - The number of Managers - Managers UUIDs - - - - The identifier of the estate - - - - - The number of returned items - - - - - List of UUIDs of the Estate's Managers - - - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateCovenantReplyEventArgs class - The Covenant ID - The timestamp - The estate's name - The Estate Owner's ID (can be a GroupID) - - - - The Covenant - - - - - The timestamp - - - - - The Estate name - - - - - The Estate Owner's ID (can be a GroupID) - - - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateUpdateInfoReplyEventArgs class - The estate's name - The Estate Owners ID (can be a GroupID) - The estate's identifier on the grid - - - - - - The estate's name - - - - - The Estate Owner's ID (can be a GroupID) - - - - - The identifier of the estate on the grid - - - - - - - - - Registers, unregisters, and fires events generated by incoming packets - - - - - Default constructor - - - - - - - Object that is passed to worker threads in the ThreadPool for - firing packet callbacks - - - - Callback to fire for this packet - - - Reference to the simulator that this packet came from - - - The packet that needs to be processed - - - Reference to the GridClient object - - - - Register an event handler - - Use PacketType.Default to fire this event on every - incoming packet - Packet type to register the handler for - Callback to be fired - True if this callback should be ran - asynchronously, false to run it synchronous - - - - Unregister an event handler - - Packet type to unregister the handler for - Callback to be unregistered - - - - Fire the events registered for this packet type - - Incoming packet type - Incoming packet - Simulator this packet was received from - - - - Registers, unregisters, and fires events generated by the Capabilities - event queue - - - - - Default constructor - - Reference to the GridClient object - - - - Object that is passed to worker threads in the ThreadPool for - firing CAPS callbacks - - - - Callback to fire for this packet - - - Name of the CAPS event - - - Strongly typed decoded data - - - Reference to the simulator that generated this event - - - Reference to the GridClient object - - - - Register an new event handler for a capabilities event sent via the EventQueue - - Use String.Empty to fire this event on every CAPS event - Capability event name to register the - handler for - Callback to fire - - - - Unregister a previously registered capabilities handler - - Capability event name unregister the - handler for - Callback to unregister - - - - Fire the events registered for this event type synchronously - - Capability name - Decoded event body - Reference to the simulator that - generated this event - - - - Fire the events registered for this event type asynchronously - - Capability name - Decoded event body - Reference to the simulator that - generated this event - - - - - - - The avatar has no rights - - - The avatar can see the online status of the target avatar - - - The avatar can see the location of the target avatar on the map - - - The avatar can modify the ojects of the target avatar - - - - This class holds information about an avatar in the friends list. There are two ways - to interface to this class. The first is through the set of boolean properties. This is the typical - way clients of this class will use it. The second interface is through two bitflag properties, - TheirFriendsRights and MyFriendsRights - - - - - Used internally when building the initial list of friends at login time - - System ID of the avatar being prepesented - Rights the friend has to see you online and to modify your objects - Rights you have to see your friend online and to modify their objects - - - - System ID of the avatar - - - - - full name of the avatar - - - - - True if the avatar is online - - - - - True if the friend can see if I am online - - - - - True if the friend can see me on the map - - - - - True if the freind can modify my objects - - - - - True if I can see if my friend is online - - - - - True if I can see if my friend is on the map - - - - - True if I can modify my friend's objects - - - - - My friend's rights represented as bitmapped flags - - - - - My rights represented as bitmapped flags - - - - - FriendInfo represented as a string - - A string reprentation of both my rights and my friends rights - - - - This class is used to add and remove avatars from your friends list and to manage their permission. - - - - - Internal constructor - - A reference to the GridClient Object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - - A dictionary of key/value pairs containing known friends of this avatar. - The Key is the of the friend, the value is a - object that contains detailed information including permissions you have and have given to the friend - - - - - A Dictionary of key/value pairs containing current pending frienship offers. - The key is the of the avatar making the request, - the value is the of the request which is used to accept - or decline the friendship offer - - - - Raised when the simulator sends notification one of the members in our friends list comes online - - - Raised when the simulator sends notification one of the members in our friends list goes offline - - - Raised when the simulator sends notification one of the members in our friends list grants or revokes permissions - - - Raised when the simulator sends us the names on our friends list - - - Raised when the simulator sends notification another agent is offering us friendship - - - Raised when a request we sent to friend another agent is accepted or declined - - - Raised when the simulator sends notification one of the members in our friends list has terminated - our friendship - - - Raised when the simulator sends the location of a friend we have - requested map location info for - - - Raises the FriendOnline event - A FriendInfoEventArgs object containing the - data returned from the data server - - - Raises the FriendOffline event - A FriendInfoEventArgs object containing the - data returned from the data server - - - Raises the FriendRightsUpdate event - A FriendInfoEventArgs object containing the - data returned from the data server - - - Raises the FriendNames event - A FriendNamesEventArgs object containing the - data returned from the data server - - - Raises the FriendshipOffered event - A FriendshipOfferedEventArgs object containing the - data returned from the data server - - - Raises the FriendshipResponse event - A FriendshipResponseEventArgs object containing the - data returned from the data server - - - Raises the FriendshipTerminated event - A FriendshipTerminatedEventArgs object containing the - data returned from the data server - - - Raises the FriendFoundReply event - A FriendFoundReplyEventArgs object containing the - data returned from the data server - - - - Accept a friendship request - - agentID of avatatar to form friendship with - imSessionID of the friendship request message - - - - Decline a friendship request - - - of friend - imSessionID of the friendship request message - - - - Overload: Offer friendship to an avatar. - - System ID of the avatar you are offering friendship to - - - - Offer friendship to an avatar. - - System ID of the avatar you are offering friendship to - A message to send with the request - - - - Terminate a friendship with an avatar - - System ID of the avatar you are terminating the friendship with - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - Change the rights of a friend avatar. - - the of the friend - the new rights to give the friend - This method will implicitly set the rights to those passed in the rights parameter. - - - - Use to map a friends location on the grid. - - Friends UUID to find - - - - - - - Use to track a friends movement on the grid - - Friends Key - - - - Ask for a notification of friend's online status - - Friend's UUID - - - - This handles the asynchronous response of a RequestAvatarNames call. - - - - names cooresponding to the the list of IDs sent the the RequestAvatarNames call. - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - Populate FriendList with data from the login reply - - true if login was successful - true if login request is requiring a redirect - A string containing the response to the login request - A string containing the reason for the request - A object containing the decoded - reply from the login server - - - Contains information on a member of our friends list - - - - Construct a new instance of the FriendInfoEventArgs class - - The FriendInfo - - - Get the FriendInfo - - - Contains Friend Names - - - - Construct a new instance of the FriendNamesEventArgs class - - A dictionary where the Key is the ID of the Agent, - and the Value is a string containing their name - - - A dictionary where the Key is the ID of the Agent, - and the Value is a string containing their name - - - Sent when another agent requests a friendship with our agent - - - - Construct a new instance of the FriendshipOfferedEventArgs class - - The ID of the agent requesting friendship - The name of the agent requesting friendship - The ID of the session, used in accepting or declining the - friendship offer - - - Get the ID of the agent requesting friendship - - - Get the name of the agent requesting friendship - - - Get the ID of the session, used in accepting or declining the - friendship offer - - - A response containing the results of our request to form a friendship with another agent - - - - Construct a new instance of the FriendShipResponseEventArgs class - - The ID of the agent we requested a friendship with - The name of the agent we requested a friendship with - true if the agent accepted our friendship offer - - - Get the ID of the agent we requested a friendship with - - - Get the name of the agent we requested a friendship with - - - true if the agent accepted our friendship offer - - - Contains data sent when a friend terminates a friendship with us - - - - Construct a new instance of the FrindshipTerminatedEventArgs class - - The ID of the friend who terminated the friendship with us - The name of the friend who terminated the friendship with us - - - Get the ID of the agent that terminated the friendship with us - - - Get the name of the agent that terminated the friendship with us - - - - Data sent in response to a request which contains the information to allow us to map the friends location - - - - - Construct a new instance of the FriendFoundReplyEventArgs class - - The ID of the agent we have requested location information for - The region handle where our friend is located - The simulator local position our friend is located - - - Get the ID of the agent we have received location information for - - - Get the region handle where our mapped friend is located - - - Get the simulator local position where our friend is located - - - - Main class to expose grid functionality to clients. All of the - classes needed for sending and receiving data are accessible through - this class. - - - - // Example minimum code required to instantiate class and - // connect to a simulator. - using System; - using System.Collections.Generic; - using System.Text; - using OpenMetaverse; - namespace FirstBot - { - class Bot - { - public static GridClient Client; - static void Main(string[] args) - { - Client = new GridClient(); // instantiates the GridClient class - // to the global Client object - // Login to Simulator - Client.Network.Login("FirstName", "LastName", "Password", "FirstBot", "1.0"); - // Wait for a Keypress - Console.ReadLine(); - // Logout of simulator - Client.Network.Logout(); - } - } - } - - - - - - Default constructor - - - - Networking subsystem - - - Settings class including constant values and changeable - parameters for everything - - - Parcel (subdivided simulator lots) subsystem - - - Our own avatars subsystem - - - Other avatars subsystem - - - Estate subsystem - - - Friends list subsystem - - - Grid (aka simulator group) subsystem - - - Object subsystem - - - Group subsystem - - - Asset subsystem - - - Appearance subsystem - - - Inventory subsystem - - - Directory searches including classifieds, people, land - sales, etc - - - Handles land, wind, and cloud heightmaps - - - Handles sound-related networking - - - Throttling total bandwidth usage, or allocating bandwidth - for specific data stream types - - - - Return the full name of this instance - - Client avatars full name - - - - Map layer request type - - - - Objects and terrain are shown - - - Only the terrain is shown, no objects - - - Overlay showing land for sale and for auction - - - - Type of grid item, such as telehub, event, populator location, etc. - - - - Telehub - - - PG rated event - - - Mature rated event - - - Popular location - - - Locations of avatar groups in a region - - - Land for sale - - - Classified ad - - - Adult rated event - - - Adult land for sale - - - - Information about a region on the grid map - - - - Sim X position on World Map - - - Sim Y position on World Map - - - Sim Name (NOTE: In lowercase!) - - - - - - - Appears to always be zero (None) - - - Sim's defined Water Height - - - - - - - UUID of the World Map image - - - Unique identifier for this region, a combination of the X - and Y position - - - - - - - - - - - - - - - - - - - - - - - - Visual chunk of the grid map - - - - - Base class for Map Items - - - - The Global X position of the item - - - The Global Y position of the item - - - Get the Local X position of the item - - - Get the Local Y position of the item - - - Get the Handle of the region - - - - Represents an agent or group of agents location - - - - - Represents a Telehub location - - - - - Represents a non-adult parcel of land for sale - - - - - Represents an Adult parcel of land for sale - - - - - Represents a PG Event - - - - - Represents a Mature event - - - - - Represents an Adult event - - - - - Manages grid-wide tasks such as the world map - - - - - Constructor - - Instance of GridClient object to associate with this GridManager instance - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - A dictionary of all the regions, indexed by region name - - - A dictionary of all the regions, indexed by region handle - - - Raised when the simulator sends a - containing the location of agents in the simulator - - - Raised when the simulator sends a Region Data in response to - a Map request - - - Raised when the simulator sends GridLayer object containing - a map tile coordinates and texture information - - - Raised when the simulator sends GridItems object containing - details on events, land sales at a specific location - - - Raised in response to a Region lookup - - - Unknown - - - Current direction of the sun - - - Current angular velocity of the sun - - - Current world time - - - Raises the CoarseLocationUpdate event - A CoarseLocationUpdateEventArgs object containing the - data sent by simulator - - - Raises the GridRegion event - A GridRegionEventArgs object containing the - data sent by simulator - - - Raises the GridLayer event - A GridLayerEventArgs object containing the - data sent by simulator - - - Raises the GridItems event - A GridItemEventArgs object containing the - data sent by simulator - - - Raises the RegionHandleReply event - A RegionHandleReplyEventArgs object containing the - data sent by simulator - - - - - - - - - - Request a map layer - - The name of the region - The type of layer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Request data for all mainland (Linden managed) simulators - - - - - Request the region handle for the specified region UUID - - UUID of the region to look up - - - - Get grid region information using the region name, this function - will block until it can find the region or gives up - - Name of sim you're looking for - Layer that you are requesting - Will contain a GridRegion for the sim you're - looking for if successful, otherwise an empty structure - True if the GridRegion was successfully fetched, otherwise - false - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - Avatar group management - - - - Key of Group Member - - - Total land contribution - - - Online status information - - - Abilities that the Group Member has - - - Current group title - - - Is a group owner - - - - Role manager for a group - - - - Key of the group - - - Key of Role - - - Name of Role - - - Group Title associated with Role - - - Description of Role - - - Abilities Associated with Role - - - Returns the role's title - The role's title - - - - Class to represent Group Title - - - - Key of the group - - - ID of the role title belongs to - - - Group Title - - - Whether title is Active - - - Returns group title - - - - Represents a group on the grid - - - - Key of Group - - - Key of Group Insignia - - - Key of Group Founder - - - Key of Group Role for Owners - - - Name of Group - - - Text of Group Charter - - - Title of "everyone" role - - - Is the group open for enrolement to everyone - - - Will group show up in search - - - - - - - - - - - - - - - Is the group Mature - - - Cost of group membership - - - - - - - - - - - The total number of current members this group has - - - The number of roles this group has configured - - - Show this group in agent's profile - - - Returns the name of the group - A string containing the name of the group - - - - A group Vote - - - - Key of Avatar who created Vote - - - Text of the Vote proposal - - - Total number of votes - - - - A group proposal - - - - The Text of the proposal - - - The minimum number of members that must vote before proposal passes or failes - - - The required ration of yes/no votes required for vote to pass - The three options are Simple Majority, 2/3 Majority, and Unanimous - TODO: this should be an enum - - The duration in days votes are accepted - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Struct representing a group notice - - - - - - - - - - - - - - - - - - - - - - - - - - - Struct representing a group notice list entry - - - - Notice ID - - - Creation timestamp of notice - - - Agent name who created notice - - - Notice subject - - - Is there an attachment? - - - Attachment Type - - - - Struct representing a member of a group chat session and their settings - - - - The of the Avatar - - - True if user has voice chat enabled - - - True of Avatar has moderator abilities - - - True if a moderator has muted this avatars chat - - - True if a moderator has muted this avatars voice - - - - Role update flags - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Can send invitations to groups default role - - - Can eject members from group - - - Can toggle 'Open Enrollment' and change 'Signup fee' - - - Member is visible in the public member list - - - Can create new roles - - - Can delete existing roles - - - Can change Role names, titles and descriptions - - - Can assign other members to assigners role - - - Can assign other members to any role - - - Can remove members from roles - - - Can assign and remove abilities in roles - - - Can change group Charter, Insignia, 'Publish on the web' and which - members are publicly visible in group member listings - - - Can buy land or deed land to group - - - Can abandon group owned land to Governor Linden on mainland, or Estate owner for - private estates - - - Can set land for-sale information on group owned parcels - - - Can subdivide and join parcels - - - Can join group chat sessions - - - Can use voice chat in Group Chat sessions - - - Can moderate group chat sessions - - - Can toggle "Show in Find Places" and set search category - - - Can change parcel name, description, and 'Publish on web' settings - - - Can set the landing point and teleport routing on group land - - - Can change music and media settings - - - Can toggle 'Edit Terrain' option in Land settings - - - Can toggle various About Land > Options settings - - - Can always terraform land, even if parcel settings have it turned off - - - Can always fly while over group owned land - - - Can always rez objects on group owned land - - - Can always create landmarks for group owned parcels - - - Can set home location on any group owned parcel - - - Can modify public access settings for group owned parcels - - - Can manager parcel ban lists on group owned land - - - Can manage pass list sales information - - - Can eject and freeze other avatars on group owned land - - - Can return objects set to group - - - Can return non-group owned/set objects - - - Can return group owned objects - - - Can landscape using Linden plants - - - Can deed objects to group - - - Can move group owned objects - - - Can set group owned objects for-sale - - - Pay group liabilities and receive group dividends - - - Can send group notices - - - Can receive group notices - - - Can create group proposals - - - Can vote on group proposals - - - - Handles all network traffic related to reading and writing group - information - - - - - Construct a new instance of the GroupManager class - - A reference to the current instance - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - A reference to the current instance - - - Currently-active group members requests - - - Currently-active group roles requests - - - Currently-active group role-member requests - - - Dictionary keeping group members while request is in progress - - - Dictionary keeping mebmer/role mapping while request is in progress - - - Dictionary keeping GroupRole information while request is in progress - - - Caches group name lookups - - - Raised when the simulator sends us data containing - our current group membership - - - Raised when the simulator responds to a RequestGroupName - or RequestGroupNames request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when a response to a RequestGroupAccountSummary is returned - by the simulator - - - Raised when a request to create a group is successful - - - Raised when a request to join a group either - fails or succeeds - - - Raised when a request to leave a group either - fails or succeeds - - - Raised when A group is removed from the group server - - - Raised when a request to eject a member from a group either - fails or succeeds - - - Raised when the simulator sends us group notices - - - - Raised when another agent invites our avatar to join a group - - - Raises the CurrentGroups event - A CurrentGroupsEventArgs object containing the - data sent from the simulator - - - Raises the GroupNamesReply event - A GroupNamesEventArgs object containing the - data response from the simulator - - - Raises the GroupProfile event - An GroupProfileEventArgs object containing the - data returned from the simulator - - - Raises the GroupMembers event - A GroupMembersEventArgs object containing the - data returned from the simulator - - - Raises the GroupRolesDataReply event - A GroupRolesDataReplyEventArgs object containing the - data returned from the simulator - - - Raises the GroupRoleMembersReply event - A GroupRolesRoleMembersReplyEventArgs object containing the - data returned from the simulator - - - Raises the GroupTitlesReply event - A GroupTitlesReplyEventArgs object containing the - data returned from the simulator - - - Raises the GroupAccountSummary event - A GroupAccountSummaryReplyEventArgs object containing the - data returned from the simulator - - - Raises the GroupCreated event - An GroupCreatedEventArgs object containing the - data returned from the simulator - - - Raises the GroupJoined event - A GroupOperationEventArgs object containing the - result of the operation returned from the simulator - - - Raises the GroupLeft event - A GroupOperationEventArgs object containing the - result of the operation returned from the simulator - - - Raises the GroupDropped event - An GroupDroppedEventArgs object containing the - the group your agent left - - - Raises the GroupMemberEjected event - An GroupMemberEjectedEventArgs object containing the - data returned from the simulator - - - Raises the GroupNoticesListReply event - An GroupNoticesListReplyEventArgs object containing the - data returned from the simulator - - - Raises the GroupInvitation event - An GroupInvitationEventArgs object containing the - data returned from the simulator - - - - Request a current list of groups the avatar is a member of. - - CAPS Event Queue must be running for this to work since the results - come across CAPS. - - - - Lookup name of group based on groupID - - groupID of group to lookup name for. - - - - Request lookup of multiple group names - - List of group IDs to request. - - - Lookup group profile data such as name, enrollment, founder, logo, etc - Subscribe to OnGroupProfile event to receive the results. - group ID (UUID) - - - Request a list of group members. - Subscribe to OnGroupMembers event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache - - - Request group roles - Subscribe to OnGroupRoles event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache - - - Request members (members,role) role mapping for a group. - Subscribe to OnGroupRolesMembers event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache - - - Request a groups Titles - Subscribe to OnGroupTitles event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache - - - Begin to get the group account summary - Subscribe to the OnGroupAccountSummary event to receive the results. - group ID (UUID) - How long of an interval - Which interval (0 for current, 1 for last) - - - Invites a user to a group - The group to invite to - A list of roles to invite a person to - Key of person to invite - - - Set a group as the current active group - group ID (UUID) - - - Change the role that determines your active title - Group ID to use - Role ID to change to - - - Set this avatar's tier contribution - Group ID to change tier in - amount of tier to donate - - - - Save wheather agent wants to accept group notices and list this group in their profile - - Group - Accept notices from this group - List this group in the profile - - - Request to join a group - Subscribe to OnGroupJoined event for confirmation. - group ID (UUID) to join. - - - - Request to create a new group. If the group is successfully - created, L$100 will automatically be deducted - - Subscribe to OnGroupCreated event to receive confirmation. - Group struct containing the new group info - - - Update a group's profile and other information - Groups ID (UUID) to update. - Group struct to update. - - - Eject a user from a group - Group ID to eject the user from - Avatar's key to eject - - - Update role information - Modified role to be updated - - - Create a new group role - Group ID to update - Role to create - - - Delete a group role - Group ID to update - Role to delete - - - Remove an avatar from a role - Group ID to update - Role ID to be removed from - Avatar's Key to remove - - - Assign an avatar to a role - Group ID to update - Role ID to assign to - Avatar's ID to assign to role - - - Request the group notices list - Group ID to fetch notices for - - - Request a group notice by key - ID of group notice - - - Send out a group notice - Group ID to update - - GroupNotice structure containing notice data - - - Start a group proposal (vote) - The Group ID to send proposal to - - GroupProposal structure containing the proposal - - - Request to leave a group - Subscribe to OnGroupLeft event to receive confirmation - The group to leave - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Contains the current groups your agent is a member of - - - Construct a new instance of the CurrentGroupsEventArgs class - The current groups your agent is a member of - - - Get the current groups your agent is a member of - - - A Dictionary of group names, where the Key is the groups ID and the value is the groups name - - - Construct a new instance of the GroupNamesEventArgs class - The Group names dictionary - - - Get the Group Names dictionary - - - Represents the members of a group - - - - Construct a new instance of the GroupMembersReplyEventArgs class - - The ID of the request - The ID of the group - The membership list of the group - - - Get the ID as returned by the request to correlate - this result set and the request - - - Get the ID of the group - - - Get the dictionary of members - - - Represents the roles associated with a group - - - Construct a new instance of the GroupRolesDataReplyEventArgs class - The ID as returned by the request to correlate - this result set and the request - The ID of the group - The dictionary containing the roles - - - Get the ID as returned by the request to correlate - this result set and the request - - - Get the ID of the group - - - Get the dictionary containing the roles - - - Represents the Role to Member mappings for a group - - - Construct a new instance of the GroupRolesMembersReplyEventArgs class - The ID as returned by the request to correlate - this result set and the request - The ID of the group - The member to roles map - - - Get the ID as returned by the request to correlate - this result set and the request - - - Get the ID of the group - - - Get the member to roles map - - - Represents the titles for a group - - - Construct a new instance of the GroupTitlesReplyEventArgs class - The ID as returned by the request to correlate - this result set and the request - The ID of the group - The titles - - - Get the ID as returned by the request to correlate - this result set and the request - - - Get the ID of the group - - - Get the titles - - - Represents the summary data for a group - - - Construct a new instance of the GroupAccountSummaryReplyEventArgs class - The ID of the group - The summary data - - - Get the ID of the group - - - Get the summary data - - - A response to a group create request - - - Construct a new instance of the GroupCreatedReplyEventArgs class - The ID of the group - the success or faulure of the request - A string containing additional information - - - Get the ID of the group - - - true of the group was created successfully - - - A string containing the message - - - Represents a response to a request - - - Construct a new instance of the GroupOperationEventArgs class - The ID of the group - true of the request was successful - - - Get the ID of the group - - - true of the request was successful - - - Represents your agent leaving a group - - - Construct a new instance of the GroupDroppedEventArgs class - The ID of the group - - - Get the ID of the group - - - Represents a list of active group notices - - - Construct a new instance of the GroupNoticesListReplyEventArgs class - The ID of the group - The list containing active notices - - - Get the ID of the group - - - Get the notices list - - - Represents the profile of a group - - - Construct a new instance of the GroupProfileEventArgs class - The group profile - - - Get the group profile - - - - Provides notification of a group invitation request sent by another Avatar - - The invitation is raised when another avatar makes an offer for our avatar - to join a group. - - - The ID of the Avatar sending the group invitation - - - The name of the Avatar sending the group invitation - - - A message containing the request information which includes - the name of the group, the groups charter and the fee to join details - - - The Simulator - - - Set to true to accept invitation, false to decline - - - - Static helper functions and global variables - - - - - Passed to Logger.Log() to identify the severity of a log entry - - - - No logging information will be output - - - Non-noisy useful information, may be helpful in - debugging a problem - - - A non-critical error occurred. A warning will not - prevent the rest of the library from operating as usual, - although it may be indicative of an underlying issue - - - A critical error has occurred. Generally this will - be followed by the network layer shutting down, although the - stability of the library after an error is uncertain - - - Used for internal testing, this logging level can - generate very noisy (long and/or repetitive) messages. Don't - pass this to the Log() function, use DebugLog() instead. - - - - This header flag signals that ACKs are appended to the packet - - - This header flag signals that this packet has been sent before - - - This header flags signals that an ACK is expected for this packet - - - This header flag signals that the message is compressed using zerocoding - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Given an X/Y location in absolute (grid-relative) terms, a region - handle is returned along with the local X/Y location in that region - - The absolute X location, a number such as - 255360.35 - The absolute Y location, a number such as - 255360.35 - The sim-local X position of the global X - position, a value from 0.0 to 256.0 - The sim-local Y position of the global Y - position, a value from 0.0 to 256.0 - A 64-bit region handle that can be used to teleport to - - - - Converts a floating point number to a terse string format used for - transmitting numbers in wearable asset files - - Floating point number to convert to a string - A terse string representation of the input number - - - - Convert a variable length field (byte array) to a string, with a - field name prepended to each line of the output - - If the byte array has unprintable characters in it, a - hex dump will be written instead - The StringBuilder object to write to - The byte array to convert to a string - A field name to prepend to each line of output - - - - Decode a zerocoded byte array, used to decompress packets marked - with the zerocoded flag - - Any time a zero is encountered, the next byte is a count - of how many zeroes to expand. One zero is encoded with 0x00 0x01, - two zeroes is 0x00 0x02, three zeroes is 0x00 0x03, etc. The - first four bytes are copied directly to the output buffer. - - The byte array to decode - The length of the byte array to decode. This - would be the length of the packet up to (but not including) any - appended ACKs - The output byte array to decode to - The length of the output buffer - - - - Encode a byte array with zerocoding. Used to compress packets marked - with the zerocoded flag. Any zeroes in the array are compressed down - to a single zero byte followed by a count of how many zeroes to expand - out. A single zero becomes 0x00 0x01, two zeroes becomes 0x00 0x02, - three zeroes becomes 0x00 0x03, etc. The first four bytes are copied - directly to the output buffer. - - The byte array to encode - The length of the byte array to encode - The output byte array to encode to - The length of the output buffer - - - - Calculates the CRC (cyclic redundancy check) needed to upload inventory. - - Creation date - Sale type - Inventory type - Type - Asset ID - Group ID - Sale price - Owner ID - Creator ID - Item ID - Folder ID - Everyone mask (permissions) - Flags - Next owner mask (permissions) - Group mask (permissions) - Owner mask (permissions) - The calculated CRC - - - - Attempts to load a file embedded in the assembly - - The filename of the resource to load - A Stream for the requested file, or null if the resource - was not successfully loaded - - - - Attempts to load a file either embedded in the assembly or found in - a given search path - - The filename of the resource to load - An optional path that will be searched if - the asset is not found embedded in the assembly - A Stream for the requested file, or null if the resource - was not successfully loaded - - - - Converts a list of primitives to an object that can be serialized - with the LLSD system - - Primitives to convert to a serializable object - An object that can be serialized with LLSD - - - - Deserializes OSD in to a list of primitives - - Structure holding the serialized primitive list, - must be of the SDMap type - A list of deserialized primitives - - - - Converts a struct or class object containing fields only into a key value separated string - - The struct object - A string containing the struct fields as the keys, and the field value as the value separated - - - // Add the following code to any struct or class containing only fields to override the ToString() - // method to display the values of the passed object - /// Print the struct data as a string - ///A string containing the field name, and field value - public override string ToString() - { - return Helpers.StructToString(this); - } - - - - - - The InternalDictionary class is used through the library for storing key/value pairs. - It is intended to be a replacement for the generic Dictionary class and should - be used in its place. It contains several methods for allowing access to the data from - outside the library that are read only and thread safe. - - Key - Value - - - - Initializes a new instance of the Class - with the specified key/value, has the default initial capacity. - - - - // initialize a new InternalDictionary named testDict with a string as the key and an int as the value. - public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(); - - - - - - Initializes a new instance of the Class - with the specified key/value, has its initial valies copied from the specified - - - - to copy initial values from - - - // initialize a new InternalDictionary named testAvName with a UUID as the key and an string as the value. - // populates with copied values from example KeyNameCache Dictionary. - // create source dictionary - Dictionary<UUID, string> KeyNameCache = new Dictionary<UUID, string>(); - KeyNameCache.Add("8300f94a-7970-7810-cf2c-fc9aa6cdda24", "Jack Avatar"); - KeyNameCache.Add("27ba1e40-13f7-0708-3e98-5819d780bd62", "Jill Avatar"); - // Initialize new dictionary. - public InternalDictionary<UUID, string> testAvName = new InternalDictionary<UUID, string>(KeyNameCache); - - - - - - Initializes a new instance of the Class - with the specified key/value, With its initial capacity specified. - - Initial size of dictionary - - - // initialize a new InternalDictionary named testDict with a string as the key and an int as the value, - // initially allocated room for 10 entries. - public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(10); - - - - - Internal dictionary that this class wraps around. Do not - modify or enumerate the contents of this dictionary without locking - on this member - - - - Indexer for the dictionary - - The key - The value - - - - Gets the number of Key/Value pairs contained in the - - - - Try to get entry from with specified key - - Key to use for lookup - Value returned - - if specified key exists, if not found - - - // find your avatar using the Simulator.ObjectsAvatars InternalDictionary: - Avatar av; - if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) - Console.WriteLine("Found Avatar {0}", av.Name); - - - - - - - Finds the specified match. - - The match. - Matched value - - - // use a delegate to find a prim in the ObjectsPrimitives InternalDictionary - // with the ID 95683496 - uint findID = 95683496; - Primitive findPrim = sim.ObjectsPrimitives.Find( - delegate(Primitive prim) { return prim.ID == findID; }); - - - - - Find All items in an - return matching items. - a containing found items. - - Find All prims within 20 meters and store them in a List - - int radius = 20; - List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( - delegate(Primitive prim) { - Vector3 pos = prim.Position; - return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); - } - ); - - - - Find All items in an - return matching keys. - a containing found keys. - - Find All keys which also exist in another dictionary - - List<UUID> matches = myDict.FindAll( - delegate(UUID id) { - return myOtherDict.ContainsKey(id); - } - ); - - - - Perform an on each entry in an - - to perform - - - // Iterates over the ObjectsPrimitives InternalDictionary and prints out some information. - Client.Network.CurrentSim.ObjectsPrimitives.ForEach( - delegate(Primitive prim) - { - if (prim.Text != null) - { - Console.WriteLine("NAME={0} ID = {1} TEXT = '{2}'", - prim.PropertiesFamily.Name, prim.ID, prim.Text); - } - }); - - - - - Perform an on each key of an - - to perform - - - - Perform an on each KeyValuePair of an - - to perform - - - Check if Key exists in Dictionary - Key to check for - - if found, otherwise - - - Check if Value exists in Dictionary - Value to check for - - if found, otherwise - - - - Adds the specified key to the dictionary, dictionary locking is not performed, - - The key - The value - - - - Removes the specified key, dictionary locking is not performed - - The key. - - if successful, otherwise - - - - Exception class to identify inventory exceptions - - - - - Responsible for maintaining inventory structure. Inventory constructs nodes - and manages node children as is necessary to maintain a coherant hirarchy. - Other classes should not manipulate or create InventoryNodes explicitly. When - A node's parent changes (when a folder is moved, for example) simply pass - Inventory the updated InventoryFolder and it will make the appropriate changes - to its internal representation. - - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - - By using the bracket operator on this class, the program can get the - InventoryObject designated by the specified uuid. If the value for the corresponding - UUID is null, the call is equivelant to a call to RemoveNodeFor(this[uuid]). - If the value is non-null, it is equivelant to a call to UpdateNodeFor(value), - the uuid parameter is ignored. - - The UUID of the InventoryObject to get or set, ignored if set to non-null value. - The InventoryObject corresponding to uuid. - - - - The root folder of this avatars inventory - - - - - The default shared library folder - - - - - The root node of the avatars inventory - - - - - The root node of the default shared library - - - - Raises the InventoryObjectUpdated Event - A InventoryObjectUpdatedEventArgs object containing - the data sent from the simulator - - - Raises the InventoryObjectRemoved Event - A InventoryObjectRemovedEventArgs object containing - the data sent from the simulator - - - Raises the InventoryObjectAdded Event - A InventoryObjectAddedEventArgs object containing - the data sent from the simulator - - - - Returns the contents of the specified folder - - A folder's UUID - The contents of the folder corresponding to folder - When folder does not exist in the inventory - - - - Updates the state of the InventoryNode and inventory data structure that - is responsible for the InventoryObject. If the item was previously not added to inventory, - it adds the item, and updates structure accordingly. If it was, it updates the - InventoryNode, changing the parent node if item.parentUUID does - not match node.Parent.Data.UUID. - You can not set the inventory root folder using this method - - The InventoryObject to store - - - - Removes the InventoryObject and all related node data from Inventory. - - The InventoryObject to remove. - - - - Used to find out if Inventory contains the InventoryObject - specified by uuid. - - The UUID to check. - true if inventory contains uuid, false otherwise - - - - Saves the current inventory structure to a cache file - - Name of the cache file to save to - - - - Loads in inventory cache file into the inventory structure. Note only valid to call after login has been successful. - - Name of the cache file to load - The number of inventory items sucessfully reconstructed into the inventory node tree - - - Sort by name - - - Sort by date - - - Sort folders by name, regardless of whether items are - sorted by name or date - - - Place system folders at the top - - - - Possible destinations for DeRezObject request - - - - - - - - Copy from in-world to agent inventory - - - Derez to TaskInventory - - - - - - - Take Object - - - - - - - Delete Object - - - Put an avatar attachment into agent inventory - - - - - - - Return an object back to the owner's inventory - - - Return a deeded object back to the last owner's inventory - - - - Upper half of the Flags field for inventory items - - - - Indicates that the NextOwner permission will be set to the - most restrictive set of permissions found in the object set - (including linkset items and object inventory items) on next rez - - - Indicates that the object sale information has been - changed - - - If set, and a slam bit is set, indicates BaseMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates OwnerMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates GroupMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates EveryoneMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates NextOwnerMask will be overwritten on Rez - - - Indicates whether this object is composed of multiple - items or not - - - Indicates that the asset is only referenced by this - inventory item. If this item is deleted or updated to reference a - new assetID, the asset can be deleted - - - - Base Class for Inventory Items - - - - - Constructor, takes an itemID as a parameter - - The of the item - - - - - - - - - - of item/folder - - - - of parent folder - - - Name of item/folder - - - Item/Folder Owners - - - - - - - - - - Generates a number corresponding to the value of the object to support the use of a hash table, - suitable for use in hashing algorithms and data structures such as a hash table - - A Hashcode of all the combined InventoryBase fields - - - - Determine whether the specified object is equal to the current object - - InventoryBase object to compare against - true if objects are the same - - - - Determine whether the specified object is equal to the current object - - InventoryBase object to compare against - true if objects are the same - - - - An Item in Inventory - - - - - Construct a new InventoryItem object - - The of the item - - - - Construct a new InventoryItem object of a specific Type - - The type of item from - - of the item - - - - - - - - - The of this item - - - The combined of this item - - - The type of item from - - - The type of item from the enum - - - The of the creator of this item - - - A Description of this item - - - The s this item is set to or owned by - - - If true, item is owned by a group - - - The price this item can be purchased for - - - The type of sale from the enum - - - Combined flags from - - - Time and date this inventory item was created, stored as - UTC (Coordinated Universal Time) - - - Used to update the AssetID in requests sent to the server - - - The of the previous owner of the item - - - - Indicates inventory item is a link - - True if inventory item is a link to another inventory item - - - - - - - - - - Generates a number corresponding to the value of the object to support the use of a hash table. - Suitable for use in hashing algorithms and data structures such as a hash table - - A Hashcode of all the combined InventoryItem fields - - - - Compares an object - - The object to compare - true if comparison object matches - - - - Determine whether the specified object is equal to the current object - - The object to compare against - true if objects are the same - - - - Determine whether the specified object is equal to the current object - - The object to compare against - true if objects are the same - - - - InventoryTexture Class representing a graphical image - - - - - - Construct an InventoryTexture object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryTexture object from a serialization stream - - - - - InventorySound Class representing a playable sound - - - - - Construct an InventorySound object - - A which becomes the - objects AssetUUID - - - - Construct an InventorySound object from a serialization stream - - - - - InventoryCallingCard Class, contains information on another avatar - - - - - Construct an InventoryCallingCard object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryCallingCard object from a serialization stream - - - - - InventoryLandmark Class, contains details on a specific location - - - - - Construct an InventoryLandmark object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryLandmark object from a serialization stream - - - - - Landmarks use the InventoryItemFlags struct and will have a flag of 1 set if they have been visited - - - - - InventoryObject Class contains details on a primitive or coalesced set of primitives - - - - - Construct an InventoryObject object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryObject object from a serialization stream - - - - - Gets or sets the upper byte of the Flags value - - - - - Gets or sets the object attachment point, the lower byte of the Flags value - - - - - InventoryNotecard Class, contains details on an encoded text document - - - - - Construct an InventoryNotecard object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryNotecard object from a serialization stream - - - - - InventoryCategory Class - - TODO: Is this even used for anything? - - - - Construct an InventoryCategory object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryCategory object from a serialization stream - - - - - InventoryLSL Class, represents a Linden Scripting Language object - - - - - Construct an InventoryLSL object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryLSL object from a serialization stream - - - - - InventorySnapshot Class, an image taken with the viewer - - - - - Construct an InventorySnapshot object - - A which becomes the - objects AssetUUID - - - - Construct an InventorySnapshot object from a serialization stream - - - - - InventoryAttachment Class, contains details on an attachable object - - - - - Construct an InventoryAttachment object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryAttachment object from a serialization stream - - - - - Get the last AttachmentPoint this object was attached to - - - - - InventoryWearable Class, details on a clothing item or body part - - - - - Construct an InventoryWearable object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryWearable object from a serialization stream - - - - - The , Skin, Shape, Skirt, Etc - - - - - InventoryAnimation Class, A bvh encoded object which animates an avatar - - - - - Construct an InventoryAnimation object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryAnimation object from a serialization stream - - - - - InventoryGesture Class, details on a series of animations, sounds, and actions - - - - - Construct an InventoryGesture object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryGesture object from a serialization stream - - - - - A folder contains s and has certain attributes specific - to itself - - - - - Constructor - - UUID of the folder - - - - Construct an InventoryFolder object from a serialization stream - - - - The Preferred for a folder. - - - The Version of this folder - - - Number of child items this folder contains. - - - - - - - - - - Get Serilization data for this InventoryFolder object - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tools for dealing with agents inventory - - - - - Default constructor - - Reference to the GridClient object - - - - Callback for inventory item creation finishing - - Whether the request to create an inventory - item succeeded or not - Inventory item being created. If success is - false this will be null - - - - Callback for an inventory item being create from an uploaded asset - - true if inventory item creation was successful - - - - - - - - - - - - - - - - Reply received when uploading an inventory asset - - Has upload been successful - Error message if upload failed - Inventory asset UUID - New asset UUID - - - - Delegate that is invoked when script upload is completed - - Has upload succeded (note, there still might be compile errors) - Upload status message - Is compilation successful - If compilation failed, list of error messages, null on compilation success - Script inventory UUID - Script's new asset UUID - - - Used for converting shadow_id to asset_id - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - Partial mapping of AssetTypes to folder names - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - an inventory object sent by another avatar or primitive - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - - Get this agents Inventory data - - - - Raises the ItemReceived Event - A ItemReceivedEventArgs object containing - the data sent from the simulator - - - Raises the FolderUpdated Event - A FolderUpdatedEventArgs object containing - the data sent from the simulator - - - Raises the InventoryObjectOffered Event - A InventoryObjectOfferedEventArgs object containing - the data sent from the simulator - - - Raises the TaskItemReceived Event - A TaskItemReceivedEventArgs object containing - the data sent from the simulator - - - Raises the FindObjectByPath Event - A FindObjectByPathEventArgs object containing - the data sent from the simulator - - - Raises the TaskInventoryReply Event - A TaskInventoryReplyEventArgs object containing - the data sent from the simulator - - - Raises the SaveAssetToInventory Event - A SaveAssetToInventoryEventArgs object containing - the data sent from the simulator - - - Raises the ScriptRunningReply Event - A ScriptRunningReplyEventArgs object containing - the data sent from the simulator - - - - Fetch an inventory item from the dataserver - - The items - The item Owners - a integer representing the number of milliseconds to wait for results - An object on success, or null if no item was found - Items will also be sent to the event - - - - Request A single inventory item - - The items - The item Owners - - - - - Request inventory items - - Inventory items to request - Owners of the inventory items - - - - - Get contents of a folder - - The of the folder to search - The of the folders owner - true to retrieve folders - true to retrieve items - sort order to return results in - a integer representing the number of milliseconds to wait for results - A list of inventory items matching search criteria within folder - - InventoryFolder.DescendentCount will only be accurate if both folders and items are - requested - - - - Request the contents of an inventory folder - - The folder to search - The folder owners - true to return s contained in folder - true to return s containd in folder - the sort order to return items in - - - - - Returns the UUID of the folder (category) that defaults to - containing 'type'. The folder is not necessarily only for that - type - - This will return the root folder if one does not exist - - - The UUID of the desired folder if found, the UUID of the RootFolder - if not found, or UUID.Zero on failure - - - - Find an object in inventory using a specific path to search - - The folder to begin the search in - The object owners - A string path to search - milliseconds to wait for a reply - Found items or if - timeout occurs or item is not found - - - - Find inventory items by path - - The folder to begin the search in - The object owners - A string path to search, folders/objects separated by a '/' - Results are sent to the event - - - - Search inventory Store object for an item or folder - - The folder to begin the search in - An array which creates a path to search - Number of levels below baseFolder to conduct searches - if True, will stop searching after first match is found - A list of inventory items found - - - - Move an inventory item or folder to a new location - - The item or folder to move - The to move item or folder to - - - - Move an inventory item or folder to a new location and change its name - - The item or folder to move - The to move item or folder to - The name to change the item or folder to - - - - Move and rename a folder - - The source folders - The destination folders - The name to change the folder to - - - - Update folder properties - - - of the folder to update - Sets folder's parent to - Folder name - Folder type - - - - Move a folder - - The source folders - The destination folders - - - - Move multiple folders, the keys in the Dictionary parameter, - to a new parents, the value of that folder's key. - - A Dictionary containing the - of the source as the key, and the - of the destination as the value - - - - Move an inventory item to a new folder - - The of the source item to move - The of the destination folder - - - - Move and rename an inventory item - - The of the source item to move - The of the destination folder - The name to change the folder to - - - - Move multiple inventory items to new locations - - A Dictionary containing the - of the source item as the key, and the - of the destination folder as the value - - - - Remove descendants of a folder - - The of the folder - - - - Remove a single item from inventory - - The of the inventory item to remove - - - - Remove a folder from inventory - - The of the folder to remove - - - - Remove multiple items or folders from inventory - - A List containing the s of items to remove - A List containing the s of the folders to remove - - - - Empty the Lost and Found folder - - - - - Empty the Trash folder - - - - - - - - - - - - - - Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. - - - - - - - - - - - - - - - - - - - Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. - - - - - - - - - - - - Creates a new inventory folder - - ID of the folder to put this folder in - Name of the folder to create - The UUID of the newly created folder - - - - Creates a new inventory folder - - ID of the folder to put this folder in - Name of the folder to create - Sets this folder as the default folder - for new assets of the specified type. Use AssetType.Unknown - to create a normal folder, otherwise it will likely create a - duplicate of an existing folder type - The UUID of the newly created folder - If you specify a preferred type of AsseType.Folder - it will create a new root folder which may likely cause all sorts - of strange problems - - - - Create an inventory item and upload asset data - - Asset data - Inventory item name - Inventory item description - Asset type - Inventory type - Put newly created inventory in this folder - Delegate that will receive feedback on success or failure - - - - Create an inventory item and upload asset data - - Asset data - Inventory item name - Inventory item description - Asset type - Inventory type - Put newly created inventory in this folder - Permission of the newly created item - (EveryoneMask, GroupMask, and NextOwnerMask of Permissions struct are supported) - Delegate that will receive feedback on success or failure - - - - Creates inventory link to another inventory item or folder - - Put newly created link in folder with this UUID - Inventory item or folder - Method to call upon creation of the link - - - - Creates inventory link to another inventory item - - Put newly created link in folder with this UUID - Original inventory item - Method to call upon creation of the link - - - - Creates inventory link to another inventory folder - - Put newly created link in folder with this UUID - Original inventory folder - Method to call upon creation of the link - - - - Creates inventory link to another inventory item or folder - - Put newly created link in folder with this UUID - Original item's UUID - Name - Description - Asset Type - Inventory Type - Transaction UUID - Method to call upon creation of the link - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Request a copy of an asset embedded within a notecard - - Usually UUID.Zero for copying an asset from a notecard - UUID of the notecard to request an asset from - Target folder for asset to go to in your inventory - UUID of the embedded asset - callback to run when item is copied to inventory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Save changes to notecard embedded in object contents - - Encoded notecard asset data - Notecard UUID - Object's UUID - Called upon finish of the upload with status information - - - - Upload new gesture asset for an inventory gesture item - - Encoded gesture asset - Gesture inventory UUID - Callback whick will be called when upload is complete - - - - Update an existing script in an agents Inventory - - A byte[] array containing the encoded scripts contents - the itemID of the script - if true, sets the script content to run on the mono interpreter - - - - - - Update an existing script in an task Inventory - - A byte[] array containing the encoded scripts contents - the itemID of the script - UUID of the prim containting the script - if true, sets the script content to run on the mono interpreter - if true, sets the script to running - - - - - - Rez an object from inventory - - Simulator to place object in - Rotation of the object when rezzed - Vector of where to place object - InventoryItem object containing item details - - - - Rez an object from inventory - - Simulator to place object in - Rotation of the object when rezzed - Vector of where to place object - InventoryItem object containing item details - UUID of group to own the object - - - - Rez an object from inventory - - Simulator to place object in - Rotation of the object when rezzed - Vector of where to place object - InventoryItem object containing item details - UUID of group to own the object - User defined queryID to correlate replies - If set to true, the CreateSelected flag - will be set on the rezzed object - - - - DeRez an object from the simulator to the agents Objects folder in the agents Inventory - - The simulator Local ID of the object - If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed - - - - DeRez an object from the simulator and return to inventory - - The simulator Local ID of the object - The type of destination from the enum - The destination inventory folders -or- - if DeRezzing object to a tasks Inventory, the Tasks - The transaction ID for this request which - can be used to correlate this request with other packets - If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed - - - - Rez an item from inventory to its previous simulator location - - - - - - - - - - - - - Give an inventory item to another avatar - - The of the item to give - The name of the item - The type of the item from the enum - The of the recipient - true to generate a beameffect during transfer - - - - Give an inventory Folder with contents to another avatar - - The of the Folder to give - The name of the folder - The type of the item from the enum - The of the recipient - true to generate a beameffect during transfer - - - - Copy or move an from agent inventory to a task (primitive) inventory - - The target object - The item to copy or move from inventory - - - For items with copy permissions a copy of the item is placed in the tasks inventory, - for no-copy items the object is moved to the tasks inventory - - - - Retrieve a listing of the items contained in a task (Primitive) - - The tasks - The tasks simulator local ID - milliseconds to wait for reply from simulator - A list containing the inventory items inside the task or null - if a timeout occurs - This request blocks until the response from the simulator arrives - or timeoutMS is exceeded - - - - Request the contents of a tasks (primitives) inventory from the - current simulator - - The LocalID of the object - - - - - Request the contents of a tasks (primitives) inventory - - The simulator Local ID of the object - A reference to the simulator object that contains the object - - - - - Move an item from a tasks (Primitive) inventory to the specified folder in the avatars inventory - - LocalID of the object in the simulator - UUID of the task item to move - The ID of the destination folder in this agents inventory - Simulator Object - Raises the event - - - - Remove an item from an objects (Prim) Inventory - - LocalID of the object in the simulator - UUID of the task item to remove - Simulator Object - You can confirm the removal by comparing the tasks inventory serial before and after the - request with the request combined with - the event - - - - Copy an InventoryScript item from the Agents Inventory into a primitives task inventory - - An unsigned integer representing a primitive being simulated - An which represents a script object from the agents inventory - true to set the scripts running state to enabled - A Unique Transaction ID - - The following example shows the basic steps necessary to copy a script from the agents inventory into a tasks inventory - and assumes the script exists in the agents inventory. - - uint primID = 95899503; // Fake prim ID - UUID scriptID = UUID.Parse("92a7fe8a-e949-dd39-a8d8-1681d8673232"); // Fake Script UUID in Inventory - Client.Inventory.FolderContents(Client.Inventory.FindFolderForType(AssetType.LSLText), Client.Self.AgentID, - false, true, InventorySortOrder.ByName, 10000); - Client.Inventory.RezScript(primID, (InventoryItem)Client.Inventory.Store[scriptID]); - - - - - Request the running status of a script contained in a task (primitive) inventory - - The ID of the primitive containing the script - The ID of the script - The event can be used to obtain the results of the - request - - - - - Send a request to set the running state of a script contained in a task (primitive) inventory - - The ID of the primitive containing the script - The ID of the script - true to set the script running, false to stop a running script - To verify the change you can use the method combined - with the event - - - - Create a CRC from an InventoryItem - - The source InventoryItem - A uint representing the source InventoryItem as a CRC - - - - Reverses a cheesy XORing with a fixed UUID to convert a shadow_id to an asset_id - - Obfuscated shadow_id value - Deobfuscated asset_id value - - - - Does a cheesy XORing with a fixed UUID to convert an asset_id to a shadow_id - - asset_id value to obfuscate - Obfuscated shadow_id value - - - - Wrapper for creating a new object - - The type of item from the enum - The of the newly created object - An object with the type and id passed - - - - Parse the results of a RequestTaskInventory() response - - A string which contains the data from the task reply - A List containing the items contained within the tasks inventory - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - UpdateCreateInventoryItem packets are received when a new inventory item - is created. This may occur when an object that's rezzed in world is - taken into inventory, when an item is created using the CreateInventoryItem - packet, or when an object is purchased - - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Set to true to accept offer, false to decline it - - - The folder to accept the inventory into, if null default folder for will be used - - - - Callback when an inventory object is accepted and received from a - task inventory. This is the callback in which you actually get - the ItemID, as in ObjectOfferedCallback it is null when received - from a task. - - - - - - - - - - - - - - - De-serialization constructor for the InventoryNode Class - - - - - De-serialization handler for the InventoryNode Class - - - - - - - - - - - - - - - - - - - - - For inventory folder nodes specifies weather the folder needs to be - refreshed from the server - - - - - Serialization handler for the InventoryNode Class - - - - - - - - - - - Singleton logging class for the entire library - - - - - Default constructor - - - - - Callback used for client apps to receive log messages from - the library - - Data being logged - The severity of the log entry from - - - log4net logging engine - - - Triggered whenever a message is logged. If this is left - null, log messages will go to the console - - - - Send a log message to the logging engine - - The log message - The severity of the log entry - - - - Send a log message to the logging engine - - The log message - The severity of the log entry - Instance of the client - - - - Send a log message to the logging engine - - The log message - The severity of the log entry - Exception that was raised - - - - Send a log message to the logging engine - - The log message - The severity of the log entry - Instance of the client - Exception that was raised - - - - If the library is compiled with DEBUG defined, an event will be - fired if an OnLogMessage handler is registered and the - message will be sent to the logging engine - - The message to log at the DEBUG level to the - current logging engine - - - - If the library is compiled with DEBUG defined and - GridClient.Settings.DEBUG is true, an event will be - fired if an OnLogMessage handler is registered and the - message will be sent to the logging engine - - The message to log at the DEBUG level to the - current logging engine - Instance of the client - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Login Request Parameters - - - - - Default constuctor, initializes sane default values - - - - - Instantiates new LoginParams object and fills in the values - - Instance of GridClient to read settings from - Login first name - Login last name - Password - Login channnel (application name) - Client version, should be application name + version number - - - - Instantiates new LoginParams object and fills in the values - - Instance of GridClient to read settings from - Login first name - Login last name - Password - Login channnel (application name) - Client version, should be application name + version number - URI of the login server - - - The URL of the Login Server - - - The number of milliseconds to wait before a login is considered - failed due to timeout - - - The request method - login_to_simulator is currently the only supported method - - - The Agents First name - - - The Agents Last name - - - A md5 hashed password - plaintext password will be automatically hashed - - - The agents starting location once logged in - Either "last", "home", or a string encoded URI - containing the simulator name and x/y/z coordinates e.g: uri:hooper&128&152&17 - - - A string containing the client software channel information - Second Life Release - - - The client software version information - The official viewer uses: Second Life Release n.n.n.n - where n is replaced with the current version of the viewer - - - A string containing the platform information the agent is running on - - - A string hash of the network cards Mac Address - - - Unknown or deprecated - - - A string hash of the first disk drives ID used to identify this clients uniqueness - - - A string containing the viewers Software, this is not directly sent to the login server but - instead is used to generate the Version string - - - A string representing the software creator. This is not directly sent to the login server but - is used by the library to generate the Version information - - - If true, this agent agrees to the Terms of Service of the grid its connecting to - - - Unknown - - - An array of string sent to the login server to enable various options - - - A randomly generated ID to distinguish between login attempts. This value is only used - internally in the library and is never sent over the wire - - - - The decoded data returned from the login server after a successful login - - - - true, false, indeterminate - - - Login message of the day - - - M or PG, also agent_region_access and agent_access_max - - - - Parse LLSD Login Reply Data - - An - contaning the login response data - XML-RPC logins do not require this as XML-RPC.NET - automatically populates the struct properly using attributes - - - - Login Routines - - - NetworkManager is responsible for managing the network layer of - OpenMetaverse. It tracks all the server connections, serializes - outgoing traffic and deserializes incoming traffic, and provides - instances of delegates for network-related events. - - - - - Default constructor - - Reference to the GridClient object - - - - Explains why a simulator or the grid disconnected from us - - - - The client requested the logout or simulator disconnect - - - The server notified us that it is disconnecting - - - Either a socket was closed or network traffic timed out - - - The last active simulator shut down - - - - Holds a simulator reference and a decoded packet, these structs are put in - the packet inbox for event handling - - - - Reference to the simulator that this packet came from - - - Packet that needs to be processed - - - - Holds a simulator reference and a serialized packet, these structs are put in - the packet outbox for sending - - - - Reference to the simulator this packet is destined for - - - Packet that needs to be sent - - - Sequence number of the wrapped packet - - - Number of times this packet has been resent - - - Environment.TickCount when this packet was last sent over the wire - - - - - - - - - - - - - - - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - Seed CAPS URL returned from the login server - - - A list of packets obtained during the login process which - networkmanager will log but not process - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - All of the simulators we are currently connected to - - - Handlers for incoming capability events - - - Handlers for incoming packets - - - Incoming packets that are awaiting handling - - - Outgoing packets that are awaiting handling - - - Raised when the simulator sends us data containing - ... - - - Called when a reply is received from the login server, the - login sequence will block until this event returns - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Current state of logging in - - - Upon login failure, contains a short string key for the - type of login error that occurred - - - The raw XML-RPC reply from the login server, exactly as it - was received (minus the HTTP header) - - - During login this contains a descriptive version of - LoginStatusCode. After a successful login this will contain the - message of the day, and after a failed login a descriptive error - message will be returned - - - Unique identifier associated with our connections to - simulators - - - The simulator that the logged in avatar is currently - occupying - - - Shows whether the network layer is logged in to the - grid or not - - - Number of packets in the incoming queue - - - Number of packets in the outgoing queue - - - Raises the LoginProgress Event - A LoginProgressEventArgs object containing - the data sent from the simulator - - - - Generate sane default values for a login request - - Account first name - Account last name - Account password - Client application name - Client application version - A populated struct containing - sane defaults - - - - Simplified login that takes the most common and required fields - - Account first name - Account last name - Account password - Client application name - Client application version - Whether the login was successful or not. On failure the - LoginErrorKey string will contain the error code and LoginMessage - will contain a description of the error - - - - Simplified login that takes the most common fields along with a - starting location URI, and can accept an MD5 string instead of a - plaintext password - - Account first name - Account last name - Account password or MD5 hash of the password - such as $1$1682a1e45e9f957dcdf0bb56eb43319c - Client application name - Starting location URI that can be built with - StartLocation() - Client application version - Whether the login was successful or not. On failure the - LoginErrorKey string will contain the error code and LoginMessage - will contain a description of the error - - - - Login that takes a struct of all the values that will be passed to - the login server - - The values that will be passed to the login - server, all fields must be set even if they are String.Empty - Whether the login was successful or not. On failure the - LoginErrorKey string will contain the error code and LoginMessage - will contain a description of the error - - - - Build a start location URI for passing to the Login function - - Name of the simulator to start in - X coordinate to start at - Y coordinate to start at - Z coordinate to start at - String with a URI that can be used to login to a specified - location - - - - Handles response from XML-RPC login replies - - - - - Handle response from LLSD login replies - - - - - - - - - - - Get current OS - - Either "Win" or "Linux" - - - - Get clients default Mac Address - - A string containing the first found Mac Address - - - Raises the PacketSent Event - A PacketSentEventArgs object containing - the data sent from the simulator - - - Raises the LoggedOut Event - A LoggedOutEventArgs object containing - the data sent from the simulator - - - Raises the SimConnecting Event - A SimConnectingEventArgs object containing - the data sent from the simulator - - - Raises the SimConnected Event - A SimConnectedEventArgs object containing - the data sent from the simulator - - - Raises the SimDisconnected Event - A SimDisconnectedEventArgs object containing - the data sent from the simulator - - - Raises the Disconnected Event - A DisconnectedEventArgs object containing - the data sent from the simulator - - - Raises the SimChanged Event - A SimChangedEventArgs object containing - the data sent from the simulator - - - Raises the EventQueueRunning Event - A EventQueueRunningEventArgs object containing - the data sent from the simulator - - - - Register an event handler for a packet. This is a low level event - interface and should only be used if you are doing something not - supported in the library - - Packet type to trigger events for - Callback to fire when a packet of this type - is received - - - - Register an event handler for a packet. This is a low level event - interface and should only be used if you are doing something not - supported in the library - - Packet type to trigger events for - Callback to fire when a packet of this type - is received - True if the callback should be ran - asynchronously. Only set this to false (synchronous for callbacks - that will always complete quickly) - If any callback for a packet type is marked as - asynchronous, all callbacks for that packet type will be fired - asynchronously - - - - Unregister an event handler for a packet. This is a low level event - interface and should only be used if you are doing something not - supported in the library - - Packet type this callback is registered with - Callback to stop firing events for - - - - Register a CAPS event handler. This is a low level event interface - and should only be used if you are doing something not supported in - the library - - Name of the CAPS event to register a handler for - Callback to fire when a CAPS event is received - - - - Unregister a CAPS event handler. This is a low level event interface - and should only be used if you are doing something not supported in - the library - - Name of the CAPS event this callback is - registered with - Callback to stop firing events for - - - - Send a packet to the simulator the avatar is currently occupying - - Packet to send - - - - Send a packet to a specified simulator - - Packet to send - Simulator to send the packet to - - - - Connect to a simulator - - IP address to connect to - Port to connect to - Handle for this simulator, to identify its - location in the grid - Whether to set CurrentSim to this new - connection, use this if the avatar is moving in to this simulator - URL of the capabilities server to use for - this sim connection - A Simulator object on success, otherwise null - - - - Connect to a simulator - - IP address and port to connect to - Handle for this simulator, to identify its - location in the grid - Whether to set CurrentSim to this new - connection, use this if the avatar is moving in to this simulator - URL of the capabilities server to use for - this sim connection - A Simulator object on success, otherwise null - - - - Initiate a blocking logout request. This will return when the logout - handshake has completed or when Settings.LOGOUT_TIMEOUT - has expired and the network layer is manually shut down - - - - - Initiate the logout process. Check if logout succeeded with the - OnLogoutReply event, and if this does not fire the - Shutdown() function needs to be manually called - - - - - Close a connection to the given simulator - - - - - - - - - Shutdown will disconnect all the sims except for the current sim - first, and then kill the connection to CurrentSim. This should only - be called if the logout process times out on RequestLogout - Type of shutdown - - - - Shutdown will disconnect all the sims except for the current sim - first, and then kill the connection to CurrentSim. This should only - be called if the logout process times out on RequestLogout - Type of shutdown - Shutdown message - - - - Searches through the list of currently connected simulators to find - one attached to the given IPEndPoint - - IPEndPoint of the Simulator to search for - A Simulator reference on success, otherwise null - - - - Fire an event when an event queue connects for capabilities - - Simulator the event queue is attached to - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - A Name Value pair with additional settings, used in the protocol - primarily to transmit avatar names and active group in object packets - - - - - Constructor that takes all the fields as parameters - - - - - - - - - - - - - - - Constructor that takes a single line from a NameValue field - - - - - - Type of the value - - - Unknown - - - String value - - - - - - - - - - - - - - - - - - - Deprecated - - - String value, but designated as an asset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - No report - - - Unknown report type - - - Bug report - - - Complaint report - - - Customer service report - - - - Bitflag field for ObjectUpdateCompressed data blocks, describing - which options are present for each object - - - - Unknown - - - Whether the object has a TreeSpecies - - - Whether the object has floating text ala llSetText - - - Whether the object has an active particle system - - - Whether the object has sound attached to it - - - Whether the object is attached to a root object or not - - - Whether the object has texture animation settings - - - Whether the object has an angular velocity - - - Whether the object has a name value pairs string - - - Whether the object has a Media URL set - - - - Specific Flags for MultipleObjectUpdate requests - - - - None - - - Change position of prims - - - Change rotation of prims - - - Change size of prims - - - Perform operation on link set - - - Scale prims uniformly, same as selecing ctrl+shift in the - viewer. Used in conjunction with Scale - - - - Special values in PayPriceReply. If the price is not one of these - literal value of the price should be use - - - - - Indicates that this pay option should be hidden - - - - - Indicates that this pay option should have the default value - - - - - Contains the variables sent in an object update packet for objects. - Used to track position and movement of prims and avatars - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Handles all network traffic related to prims and avatar positions and - movement. - - - - - Construct a new instance of the ObjectManager class - - A reference to the instance - - - - Callback for getting object media data via CAP - - Indicates if the operation was succesfull - Object media version string - Array indexed on prim face of media entry data - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - Reference to the GridClient object - - - Does periodic dead reckoning calculation to convert - velocity and acceleration to new positions for objects - - - Raised when the simulator sends us data containing - A , Foliage or Attachment - - - - - Raised when the simulator sends us data containing - additional information - - - - - Raised when the simulator sends us data containing - Primitive.ObjectProperties for an object we are currently tracking - - - Raised when the simulator sends us data containing - additional and details - - - - Raised when the simulator sends us data containing - updated information for an - - - Raised when the simulator sends us data containing - and movement changes - - - Raised when the simulator sends us data containing - updates to an Objects DataBlock - - - Raised when the simulator informs us an - or is no longer within view - - - Raised when the simulator sends us data containing - updated sit information for our - - - Raised when the simulator sends us data containing - purchase price information for a - - - Raises the ObjectProperties Event - A ObjectPropertiesEventArgs object containing - the data sent from the simulator - - - Raises the ObjectPropertiesUpdated Event - A ObjectPropertiesUpdatedEventArgs object containing - the data sent from the simulator - - - Raises the ObjectPropertiesFamily Event - A ObjectPropertiesFamilyEventArgs object containing - the data sent from the simulator - - - Raises the AvatarUpdate Event - A AvatarUpdateEventArgs object containing - the data sent from the simulator - - - Raises the ObjectDataBlockUpdate Event - A ObjectDataBlockUpdateEventArgs object containing - the data sent from the simulator - - - Raises the KillObject Event - A KillObjectEventArgs object containing - the data sent from the simulator - - - Raises the AvatarSitChanged Event - A AvatarSitChangedEventArgs object containing - the data sent from the simulator - - - Raises the PayPriceReply Event - A PayPriceReplyEventArgs object containing - the data sent from the simulator - - - - Request information for a single object from a - you are currently connected to - - The the object is located - The Local ID of the object - - - - Request information for multiple objects contained in - the same simulator - - The the objects are located - An array containing the Local IDs of the objects - - - - Attempt to purchase an original object, a copy, or the contents of - an object - - The the object is located - The Local ID of the object - Whether the original, a copy, or the object - contents are on sale. This is used for verification, if the this - sale type is not valid for the object the purchase will fail - Price of the object. This is used for - verification, if it does not match the actual price the purchase - will fail - Group ID that will be associated with the new - purchase - Inventory folder UUID where the object or objects - purchased should be placed - - - BuyObject(Client.Network.CurrentSim, 500, SaleType.Copy, - 100, UUID.Zero, Client.Self.InventoryRootFolderUUID); - - - - - - Request prices that should be displayed in pay dialog. This will triggger the simulator - to send us back a PayPriceReply which can be handled by OnPayPriceReply event - - The the object is located - The ID of the object - The result is raised in the event - - - - Select a single object. This will cause the to send us - an which will raise the event - - The the object is located - The Local ID of the object - - - - - Select a single object. This will cause the to send us - an which will raise the event - - The the object is located - The Local ID of the object - if true, a call to is - made immediately following the request - - - - - Select multiple objects. This will cause the to send us - an which will raise the event - - The the objects are located - An array containing the Local IDs of the objects - Should objects be deselected immediately after selection - - - - - Select multiple objects. This will cause the to send us - an which will raise the event - - The the objects are located - An array containing the Local IDs of the objects - - - - - Update the properties of an object - - The the object is located - The Local ID of the object - true to turn the objects physical property on - true to turn the objects temporary property on - true to turn the objects phantom property on - true to turn the objects cast shadows property on - - - - Sets the sale properties of a single object - - The the object is located - The Local ID of the object - One of the options from the enum - The price of the object - - - - Sets the sale properties of multiple objects - - The the objects are located - An array containing the Local IDs of the objects - One of the options from the enum - The price of the object - - - - Deselect a single object - - The the object is located - The Local ID of the object - - - - Deselect multiple objects. - - The the objects are located - An array containing the Local IDs of the objects - - - - Perform a click action on an object - - The the object is located - The Local ID of the object - - - - Perform a click action (Grab) on a single object - - The the object is located - The Local ID of the object - The texture coordinates to touch - The surface coordinates to touch - The face of the position to touch - The region coordinates of the position to touch - The surface normal of the position to touch (A normal is a vector perpindicular to the surface) - The surface binormal of the position to touch (A binormal is a vector tangen to the surface - pointing along the U direction of the tangent space - - - - Create (rez) a new prim object in a simulator - - A reference to the object to place the object in - Data describing the prim object to rez - Group ID that this prim will be set to, or UUID.Zero if you - do not want the object to be associated with a specific group - An approximation of the position at which to rez the prim - Scale vector to size this prim - Rotation quaternion to rotate this prim - Due to the way client prim rezzing is done on the server, - the requested position for an object is only close to where the prim - actually ends up. If you desire exact placement you'll need to - follow up by moving the object after it has been created. This - function will not set textures, light and flexible data, or other - extended primitive properties - - - - Create (rez) a new prim object in a simulator - - A reference to the object to place the object in - Data describing the prim object to rez - Group ID that this prim will be set to, or UUID.Zero if you - do not want the object to be associated with a specific group - An approximation of the position at which to rez the prim - Scale vector to size this prim - Rotation quaternion to rotate this prim - Specify the - Due to the way client prim rezzing is done on the server, - the requested position for an object is only close to where the prim - actually ends up. If you desire exact placement you'll need to - follow up by moving the object after it has been created. This - function will not set textures, light and flexible data, or other - extended primitive properties - - - - Rez a Linden tree - - A reference to the object where the object resides - The size of the tree - The rotation of the tree - The position of the tree - The Type of tree - The of the group to set the tree to, - or UUID.Zero if no group is to be set - true to use the "new" Linden trees, false to use the old - - - - Rez grass and ground cover - - A reference to the object where the object resides - The size of the grass - The rotation of the grass - The position of the grass - The type of grass from the enum - The of the group to set the tree to, - or UUID.Zero if no group is to be set - - - - Set the textures to apply to the faces of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The texture data to apply - - - - Set the textures to apply to the faces of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The texture data to apply - A media URL (not used) - - - - Set the Light data on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A object containing the data to set - - - - Set the flexible data on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A object containing the data to set - - - - Set the sculptie texture and data on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A object containing the data to set - - - - Unset additional primitive parameters on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The extra parameters to set - - - - Link multiple prims into a linkset - - A reference to the object where the objects reside - An array which contains the IDs of the objects to link - The last object in the array will be the root object of the linkset TODO: Is this true? - - - - Delink/Unlink multiple prims from a linkset - - A reference to the object where the objects reside - An array which contains the IDs of the objects to delink - - - - Change the rotation of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new rotation of the object - - - - Set the name of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A string containing the new name of the object - - - - Set the name of multiple objects - - A reference to the object where the objects reside - An array which contains the IDs of the objects to change the name of - An array which contains the new names of the objects - - - - Set the description of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A string containing the new description of the object - - - - Set the descriptions of multiple objects - - A reference to the object where the objects reside - An array which contains the IDs of the objects to change the description of - An array which contains the new descriptions of the objects - - - - Attach an object to this avatar - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The point on the avatar the object will be attached - The rotation of the attached object - - - - Drop an attached object from this avatar - - A reference to the - object where the objects reside. This will always be the simulator the avatar is currently in - - The object's ID which is local to the simulator the object is in - - - - Detach an object from yourself - - A reference to the - object where the objects reside - This will always be the simulator the avatar is currently in - - An array which contains the IDs of the objects to detach - - - - Change the position of an object, Will change position of entire linkset - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new position of the object - - - - Change the position of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new position of the object - if true, will change position of (this) child prim only, not entire linkset - - - - Change the Scale (size) of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new scale of the object - If true, will change scale of this prim only, not entire linkset - True to resize prims uniformly - - - - Change the Rotation of an object that is either a child or a whole linkset - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new scale of the object - If true, will change rotation of this prim only, not entire linkset - - - - Send a Multiple Object Update packet to change the size, scale or rotation of a primitive - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new rotation, size, or position of the target object - The flags from the Enum - - - - Deed an object (prim) to a group, Object must be shared with group which - can be accomplished with SetPermissions() - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The of the group to deed the object to - - - - Deed multiple objects (prims) to a group, Objects must be shared with group which - can be accomplished with SetPermissions() - - A reference to the object where the object resides - An array which contains the IDs of the objects to deed - The of the group to deed the object to - - - - Set the permissions on multiple objects - - A reference to the object where the objects reside - An array which contains the IDs of the objects to set the permissions on - The new Who mask to set - The new Permissions mark to set - TODO: What does this do? - - - - Request additional properties for an object - - A reference to the object where the object resides - - - - - - Request additional properties for an object - - A reference to the object where the object resides - Absolute UUID of the object - Whether to require server acknowledgement of this request - - - - Set the ownership of a list of objects to the specified group - - A reference to the object where the objects reside - An array which contains the IDs of the objects to set the group id on - The Groups ID - - - - Update current URL of the previously set prim media - - UUID of the prim - Set current URL to this - Prim face number - Simulator in which prim is located - - - - Set object media - - UUID of the prim - Array the length of prims number of faces. Null on face indexes where there is - no media, on faces which contain the media - Simulatior in which prim is located - - - - Retrieve information about object media - - UUID of the primitive - Simulator where prim is located - Call this callback when done - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - A terse object update, used when a transformation matrix or - velocity/acceleration for an object changes but nothing else - (scale/position/rotation/acceleration/velocity) - - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - Setup construction data for a basic primitive shape - - Primitive shape to construct - Construction data that can be plugged into a - - - - - - - - - - - - - - - - - - - - - - - - Set the Shape data of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - Data describing the prim shape - - - - Set the Material data of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new material of the object - - - - - - - - - - - - - - - - - - - - - - - - - - - Provides data for the event - - The event occurs when the simulator sends - an containing a Primitive, Foliage or Attachment data - Note 1: The event will not be raised when the object is an Avatar - Note 2: It is possible for the to be - raised twice for the same object if for example the primitive moved to a new simulator, then returned to the current simulator or - if an Avatar crosses the border into a new simulator and returns to the current simulator - - - The following code example uses the , , and - properties to display new Primitives and Attachments on the window. - - // Subscribe to the event that gives us prim and foliage information - Client.Objects.ObjectUpdate += Objects_ObjectUpdate; - private void Objects_ObjectUpdate(object sender, PrimEventArgs e) - { - Console.WriteLine("Primitive {0} {1} in {2} is an attachment {3}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name, e.IsAttachment); - } - - - - - - - - Construct a new instance of the PrimEventArgs class - - The simulator the object originated from - The Primitive - The simulator time dilation - The prim was not in the dictionary before this update - true if the primitive represents an attachment to an agent - - - Get the simulator the originated from - - - Get the details - - - true if the did not exist in the dictionary before this update (always true if object tracking has been disabled) - - - true if the is attached to an - - - Get the simulator Time Dilation - - - Provides data for the event - - The event occurs when the simulator sends - an containing Avatar data - Note 1: The event will not be raised when the object is an Avatar - Note 2: It is possible for the to be - raised twice for the same avatar if for example the avatar moved to a new simulator, then returned to the current simulator - - - The following code example uses the property to make a request for the top picks - using the method in the class to display the names - of our own agents picks listings on the window. - - // subscribe to the AvatarUpdate event to get our information - Client.Objects.AvatarUpdate += Objects_AvatarUpdate; - Client.Avatars.AvatarPicksReply += Avatars_AvatarPicksReply; - private void Objects_AvatarUpdate(object sender, AvatarUpdateEventArgs e) - { - // we only want our own data - if (e.Avatar.LocalID == Client.Self.LocalID) - { - // Unsubscribe from the avatar update event to prevent a loop - // where we continually request the picks every time we get an update for ourselves - Client.Objects.AvatarUpdate -= Objects_AvatarUpdate; - // make the top picks request through AvatarManager - Client.Avatars.RequestAvatarPicks(e.Avatar.ID); - } - } - private void Avatars_AvatarPicksReply(object sender, AvatarPicksReplyEventArgs e) - { - // we'll unsubscribe from the AvatarPicksReply event since we now have the data - // we were looking for - Client.Avatars.AvatarPicksReply -= Avatars_AvatarPicksReply; - // loop through the dictionary and extract the names of the top picks from our profile - foreach (var pickName in e.Picks.Values) - { - Console.WriteLine(pickName); - } - } - - - - - - - Construct a new instance of the AvatarUpdateEventArgs class - - The simulator the packet originated from - The data - The simulator time dilation - The avatar was not in the dictionary before this update - - - Get the simulator the object originated from - - - Get the data - - - Get the simulator time dilation - - - true if the did not exist in the dictionary before this update (always true if avatar tracking has been disabled) - - - Provides additional primitive data for the event - - The event occurs when the simulator sends - an containing additional details for a Primitive, Foliage data or Attachment data - The event is also raised when a request is - made. - - - The following code example uses the , and - - properties to display new attachments and send a request for additional properties containing the name of the - attachment then display it on the window. - - // Subscribe to the event that provides additional primitive details - Client.Objects.ObjectProperties += Objects_ObjectProperties; - // handle the properties data that arrives - private void Objects_ObjectProperties(object sender, ObjectPropertiesEventArgs e) - { - Console.WriteLine("Primitive Properties: {0} Name is {1}", e.Properties.ObjectID, e.Properties.Name); - } - - - - - Construct a new instance of the ObjectPropertiesEventArgs class - - The simulator the object is located - The primitive Properties - - - Get the simulator the object is located - - - Get the primitive properties - - - Provides additional primitive data for the event - - The event occurs when the simulator sends - an containing additional details for a Primitive or Foliage data that is currently - being tracked in the dictionary - The event is also raised when a request is - made and is enabled - - - - - Construct a new instance of the ObjectPropertiesUpdatedEvenrArgs class - - The simulator the object is located - The Primitive - The primitive Properties - - - Get the simulator the object is located - - - Get the primitive details - - - Get the primitive properties - - - Provides additional primitive data, permissions and sale info for the event - - The event occurs when the simulator sends - an containing additional details for a Primitive, Foliage data or Attachment. This includes - Permissions, Sale info, and other basic details on an object - The event is also raised when a request is - made, the viewer equivalent is hovering the mouse cursor over an object - - - - Get the simulator the object is located - - - - - - - - - - - Provides primitive data containing updated location, velocity, rotation, textures for the event - - The event occurs when the simulator sends updated location, velocity, rotation, etc - - - - Get the simulator the object is located - - - Get the primitive details - - + + Represents a primitive asset - + + Base class for all Asset types - - - - - - Get the simulator the object is located - - - Get the primitive details - - - - - - - - - - - - - - - - - - - Provides notification when an Avatar, Object or Attachment is DeRezzed or moves out of the avatars view for the - event - - - Get the simulator the object is located - - - The LocalID of the object - - - - Provides updates sit position data - - - - Get the simulator the object is located - - - - - - - - - - - - + + A byte array containing the raw asset data - - - - - - Get the simulator the object is located - - - - - - - - - - - - - - - - Indicates if the operation was successful - - - - - Media version string - - - - - Array of media entries indexed by face number - - - - - Create an allocated UDP packet buffer for receiving a packet - + + True if the asset it only stored on the server temporarily - - - Create an allocated UDP packet buffer for sending a packet - - EndPoint of the remote host + + A unique ID - + - Create an allocated UDP packet buffer for sending a packet + Construct a new Asset object - EndPoint of the remote host - Size of the buffer to allocate for packet data - - - Size of the byte array used to store raw packet data - - - Raw packet data buffer - - Length of the data to transmit - - - EndPoint of the remote host - - + - Object pool for packet buffers. This is used to allocate memory for all - incoming and outgoing packets, and zerocoding buffers for those packets + Construct a new Asset object + A unique specific to this asset + A byte array containing the raw asset data - + - Initialize the object pool in client mode + Regenerates the AssetData byte array from the properties + of the derived class. - Server to connect to - - - - - + - Initialize the object pool in server mode + Decodes the AssetData, placing it in appropriate properties of the derived + class. - - - - + True if the asset decoding succeeded, otherwise false - - - Returns a packet buffer with EndPoint set if the buffer is in - client mode, or with EndPoint set to null in server mode - - Initialized UDPPacketBuffer object + + The assets unique ID - + - Default constructor + The "type" of asset, Notecard, Animation, etc - - - Check a packet buffer out of the pool - - A packet buffer object + + Initializes a new instance of an AssetPrim object - + - Returns an instance of the class that has been checked out of the Object Pool. + - + - Checks the instance back into the object pool + + - - - Creates a new instance of the ObjectPoolBase class. Initialize MUST be called - after using this constructor. - + + Override the base classes AssetType - + - Creates a new instance of the ObjectPool Base class. + Only used internally for XML serialization/deserialization - The object pool is composed of segments, which - are allocated whenever the size of the pool is exceeded. The number of items - in a segment should be large enough that allocating a new segmeng is a rare - thing. For example, on a server that will have 10k people logged in at once, - the receive buffer object pool should have segment sizes of at least 1000 - byte arrays per segment. - - The minimun number of segments that may exist. - Perform a full GC.Collect whenever a segment is allocated, and then again after allocation to compact the heap. - The frequency which segments are checked to see if they're eligible for cleanup. - + - The total number of segments created. Intended to be used by the Unit Tests. + pre-defined built in sounds - - - The number of items that are in a segment. Items in a segment - are all allocated at the same time, and are hopefully close to - each other in the managed heap. - + + - - - The minimum number of segments. When segments are reclaimed, - this number of segments will always be left alone. These - segments are allocated at startup. - + + - - - The age a segment must be before it's eligible for cleanup. - This is used to prevent thrash, and typical values are in - the 5 minute range. - + + - - - The frequence which the cleanup thread runs. This is typically - expected to be in the 5 minute range. - + + - - - Forces the segment cleanup algorithm to be run. This method is intended - primarly for use from the Unit Test libraries. - + + - - - Responsible for allocate 1 instance of an object that will be stored in a segment. - - An instance of whatever objec the pool is pooling. + + - - - Checks in an instance of T owned by the object pool. This method is only intended to be called - by the WrappedObject class. - - The segment from which the instance is checked out. - The instance of T to check back into the segment. + + - - - Checks an instance of T from the pool. If the pool is not sufficient to - allow the checkout, a new segment is created. - - A WrappedObject around the instance of T. To check - the instance back into the segment, be sureto dispose the WrappedObject - when finished. + + - - - + + coins - - - + + cash register bell - - - + + - - - + + - - - The ObservableDictionary class is used for storing key/value pairs. It has methods for firing - events to subscribers when items are added, removed, or changed. - - Key - Value + + rubber - - - Initializes a new instance of the Class - with the specified key/value, has the default initial capacity. - - - - // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value. - public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(); - - + + plastic - - - Initializes a new instance of the Class - with the specified key/value, With its initial capacity specified. - - Initial size of dictionary - - - // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value, - // initially allocated room for 10 entries. - public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(10); - - + + flesh - - - A dictionary of callbacks to fire when specified action occurs - + + wood splintering? - - Internal dictionary that this class wraps around. Do not - modify or enumerate the contents of this dictionary without locking + + glass break - - - Indexer for the dictionary - - The key - The value + + metal clunk - - - Gets the number of Key/Value pairs contained in the + + whoosh - - - Register a callback to be fired when an action occurs - - The action - The callback to fire + + shake - - - Unregister a callback - - The action - The callback to fire + + - - - - - - - + + ding - - - Try to get entry from the with specified key - - Key to use for lookup - Value returned - - if specified key exists, if not found - - - // find your avatar using the Simulator.ObjectsAvatars ObservableDictionary: - Avatar av; - if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) - Console.WriteLine("Found Avatar {0}", av.Name); - - - + + - - - Finds the specified match. - - The match. - Matched value - - - // use a delegate to find a prim in the ObjectsPrimitives ObservableDictionary - // with the ID 95683496 - uint findID = 95683496; - Primitive findPrim = sim.ObjectsPrimitives.Find( - delegate(Primitive prim) { return prim.ID == findID; }); - - + + - - Find All items in an - return matching items. - a containing found items. - - Find All prims within 20 meters and store them in a List - - int radius = 20; - List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( - delegate(Primitive prim) { - Vector3 pos = prim.Position; - return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); - } - ); - + + - - Find All items in an - return matching keys. - a containing found keys. - - Find All keys which also exist in another dictionary - - List<UUID> matches = myDict.FindAll( - delegate(UUID id) { - return myOtherDict.ContainsKey(id); - } - ); - + + - - Check if Key exists in Dictionary - Key to check for - - if found, otherwise + + - - Check if Value exists in Dictionary - Value to check for - - if found, otherwise + + - - - Adds the specified key to the dictionary, dictionary locking is not performed, - - The key - The value + + - - - Removes the specified key, dictionary locking is not performed - - The key. - - if successful, otherwise + + - - - Clear the contents of the dictionary - + + - - - Enumerator for iterating dictionary entries - - - + + - - - A custom decoder callback - - The key of the object - the data to decode - A string represending the fieldData + + - - - Add a custom decoder callback - - The key of the field to decode - The custom decode handler + + - - - Remove a custom decoder callback - - The key of the field to decode - The custom decode handler + + - - - Creates a formatted string containing the values of a Packet - - The Packet - A formatted string of values of the nested items in the Packet object + + - + - Decode an IMessage object into a beautifully formatted string + A dictionary containing all pre-defined sounds - The IMessage object - Recursion level (used for indenting) - A formatted string containing the names and values of the source object + A dictionary containing the pre-defined sounds, + where the key is the sounds ID, and the value is a string + containing a name to identify the purpose of the sound @@ -14176,8 +210,7 @@ - - + Return objects owned by parcel owner @@ -14409,11 +442,11 @@ If Deeded, owner contributes required tier to group parcel is deeded to - Restrict sounds originating on this parcel to the + Restrict sounds originating on this parcel to the parcel boundaries - Objects on this parcel are sold when the land is + Objects on this parcel are sold when the land is purchsaed @@ -14438,7 +471,7 @@ Allow group-owned scripts to run - Allow object creation by group members or group + Allow object creation by group members or group objects @@ -14553,12 +586,12 @@ Start the current media stream playing and stop when the end is reached - Start the current media stream playing, + Start the current media stream playing, loop to the beginning when the end is reached and continue to play Specifies the texture to replace with video - If passing the key of a texture, it must be explicitly typecast as a key, + If passing the key of a texture, it must be explicitly typecast as a key, not just passed within double quotes. @@ -14571,15 +604,15 @@ Specifies a single agent to apply the media command to - Unloads the stream. While the stop command sets the texture to the first frame of the movie, + Unloads the stream. While the stop command sets the texture to the first frame of the movie, unload resets it to the real texture that the movie was replacing. - Turn on/off the auto align feature, similar to the auto align checkbox in the parcel media properties + Turn on/off the auto align feature, similar to the auto align checkbox in the parcel media properties (NOT to be confused with the "align" function in the textures view of the editor!) Takes TRUE or FALSE as parameter. - Allows a Web page or image to be placed on a prim (1.19.1 RC0 and later only). + Allows a Web page or image to be placed on a prim (1.19.1 RC0 and later only). Use "text/html" for HTML. @@ -14598,7 +631,7 @@ Global Key of record - Parcel Owners + Parcel Owners Name field of parcel, limited to 128 characters @@ -14628,7 +661,7 @@ Name of simulator parcel is located in - Texture of parcels display picture + Texture of parcels display picture Float representing calculated traffic based on time spent on parcel by avatars @@ -14651,7 +684,7 @@ A boolean, if true the viewer should loop the media - The Asset UUID of the Texture which when applied to a + The Asset UUID of the Texture which when applied to a primitive will display the media @@ -14674,14 +707,8 @@ Parcel of land, a portion of virtual real estate in a simulator - - - Defalt constructor - - Local ID of this parcel - - The total number of contiguous 4x4 meter blocks your agent owns within this parcel + The total number of contiguous 4x4 meter blocks your agent owns within this parcel The total number of contiguous 4x4 meter blocks contained in this parcel owned by a group or agent other than your own @@ -14699,8 +726,7 @@ Whether the land is deeded to a group or not - - + Date land was claimed @@ -14720,15 +746,14 @@ parcel - Bitmap describing land layout in 4x4m squares across the + Bitmap describing land layout in 4x4m squares across the entire region Total parcel land area - - + Maximum primitives across the entire simulator owned by the same agent or group that owns this parcel that can be used @@ -14748,7 +773,7 @@ for parcels owned by an individual this inicates the number of prims owned by the individual - Total number of primitives owned by the parcel group on + Total number of primitives owned by the parcel group on this parcel, or for parcels owned by an individual with a group set the total number of prims set to that group. @@ -14763,8 +788,7 @@ Autoreturn value in minutes for others' objects - - + Sale price of the parcel, only useful if ForSale is set @@ -14782,8 +806,7 @@ URL For Music Stream - - + Price for a temporary pass @@ -14792,8 +815,7 @@ How long is pass valid for - - + Key of authorized buyer @@ -14808,19 +830,16 @@ The landing point LookAt - The type of landing enforced from the enum + The type of landing enforced from the enum - - + - - + - - + Access list of who is whitelisted on this @@ -14848,6 +867,12 @@ string containing key=value pairs of a parcel object + + + Defalt constructor + + Local ID of this parcel + Update the simulator with any local changes to this Parcel object @@ -14867,180 +892,111 @@ Parcel (subdivided simulator lots) subsystem - - - Default constructor - - A reference to the GridClient object - - - - Parcel Accesslist - - - - Agents - - - - - - - Flags for specific entry in white/black lists - - - - Owners of primitives on parcel - - - - Prim Owners - - - True of owner is group - - - Total count of prims owned by OwnerID - - - true of OwnerID is currently online and is not a group - - - The date of the most recent prim left by OwnerID - - - - Called once parcel resource usage information has been collected - - Indicates if operation was successfull - Parcel resource usage information - The event subscribers. null if no subcribers + + Raises the ParcelDwellReply event + A ParcelDwellReplyEventArgs object containing the + data returned from the simulator + Thread sync lock object The event subscribers. null if no subcribers + + Raises the ParcelInfoReply event + A ParcelInfoReplyEventArgs object containing the + data returned from the simulator + Thread sync lock object The event subscribers. null if no subcribers + + Raises the ParcelProperties event + A ParcelPropertiesEventArgs object containing the + data returned from the simulator + Thread sync lock object The event subscribers. null if no subcribers + + Raises the ParcelAccessListReply event + A ParcelAccessListReplyEventArgs object containing the + data returned from the simulator + Thread sync lock object The event subscribers. null if no subcribers + + Raises the ParcelObjectOwnersReply event + A ParcelObjectOwnersReplyEventArgs object containing the + data returned from the simulator + Thread sync lock object The event subscribers. null if no subcribers + + Raises the SimParcelsDownloaded event + A SimParcelsDownloadedEventArgs object containing the + data returned from the simulator + Thread sync lock object The event subscribers. null if no subcribers + + Raises the ForceSelectObjectsReply event + A ForceSelectObjectsReplyEventArgs object containing the + data returned from the simulator + Thread sync lock object The event subscribers. null if no subcribers + + Raises the ParcelMediaUpdateReply event + A ParcelMediaUpdateReplyEventArgs object containing the + data returned from the simulator + Thread sync lock object The event subscribers. null if no subcribers - - Thread sync lock object - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a Parcel Update request - - - Raised when the parcel your agent is located sends a ParcelMediaCommand - - - Raises the ParcelDwellReply event - A ParcelDwellReplyEventArgs object containing the - data returned from the simulator - - - Raises the ParcelInfoReply event - A ParcelInfoReplyEventArgs object containing the - data returned from the simulator - - - Raises the ParcelProperties event - A ParcelPropertiesEventArgs object containing the - data returned from the simulator - - - Raises the ParcelAccessListReply event - A ParcelAccessListReplyEventArgs object containing the - data returned from the simulator - - - Raises the ParcelObjectOwnersReply event - A ParcelObjectOwnersReplyEventArgs object containing the - data returned from the simulator - - - Raises the SimParcelsDownloaded event - A SimParcelsDownloadedEventArgs object containing the - data returned from the simulator - - - Raises the ForceSelectObjectsReply event - A ForceSelectObjectsReplyEventArgs object containing the - data returned from the simulator - - - Raises the ParcelMediaUpdateReply event - A ParcelMediaUpdateReplyEventArgs object containing the - data returned from the simulator - Raises the ParcelMediaCommand event A ParcelMediaCommandEventArgs object containing the data returned from the simulator + + Thread sync lock object + + + + Default constructor + + A reference to the GridClient object + Request basic information for a single parcel @@ -15066,8 +1022,7 @@ An arbitrary integer that will be returned with the ParcelAccessList reply, useful for distinguishing between multiple simultaneous requests - - + @@ -15087,14 +1042,14 @@ - Request all simulator parcel properties (used for populating the Simulator.Parcels + Request all simulator parcel properties (used for populating the Simulator.Parcels dictionary) Simulator to request parcels from (must be connected) - Request all simulator parcel properties (used for populating the Simulator.Parcels + Request all simulator parcel properties (used for populating the Simulator.Parcels dictionary) Simulator to request parcels from (must be connected) @@ -15115,12 +1070,11 @@ The Simulator the parcel is located in The parcels region specific local ID true if this parcel is being purchased by a group - The groups + The groups true to remove tier contribution if purchase is successful The parcels size The purchase price of the parcel - - + @@ -15135,7 +1089,7 @@ The simulator the parcel is in The parcels region specific local ID - The groups + The groups @@ -15150,38 +1104,28 @@ Simulator parcel is in The parcels region specific local ID - the type of objects to return, - A list containing object owners s to return + the type of objects to return, + A list containing object owners s to return Subdivide (split) a parcel - - - - - - - - - - + + + + + Join two parcels of land creating a single parcel - - - - - - - - - - + + + + + @@ -15202,7 +1146,7 @@ From Enum, Raise, Lower, Level, Smooth, Etc. Size of area to modify true on successful request sent. - Settings.STORE_LAND_PATCHES must be true, + Settings.STORE_LAND_PATCHES must be true, Parcel information must be downloaded using RequestAllSimParcels() @@ -15217,7 +1161,7 @@ From Enum, Raise, Lower, Level, Smooth, Etc. Size of area to modify true on successful request sent. - Settings.STORE_LAND_PATCHES must be true, + Settings.STORE_LAND_PATCHES must be true, Parcel information must be downloaded using RequestAllSimParcels() @@ -15234,7 +1178,7 @@ Size of area to modify How many meters + or - to lower, 1 = 1 meter true on successful request sent. - Settings.STORE_LAND_PATCHES must be true, + Settings.STORE_LAND_PATCHES must be true, Parcel information must be downloaded using RequestAllSimParcels() @@ -15258,9 +1202,9 @@ Simulator local ID of parcel Owners, Others, Etc - List containing keys of avatars objects to select; + List containing keys of avatars objects to select; if List is null will return Objects of type selectType - Response data is returned in the event + Response data is returned in the event @@ -15292,43 +1236,35 @@ Remote region UUID If successful UUID of the remote parcel, UUID.Zero otherwise - - - Retrieves information on resources used by the parcel - - UUID of the parcel - Should per object resource usage be requested - Callback invoked when the request is complete - Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - Raises the event + Raises the event Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - Raises the event + Raises the event Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - Raises the event + Raises the event Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - Raises the event + Raises the event Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - Raises the event + Raises the event Process an incoming packet and raise the appropriate events @@ -15339,10 +1275,71 @@ Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - Raises the event + Raises the event + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a Parcel Update request + + + Raised when the parcel your agent is located sends a ParcelMediaCommand + + + + Parcel Accesslist + + + + Agents + + + + + + Flags for specific entry in white/black lists + + + + Owners of primitives on parcel + + + + Prim Owners + + + True of owner is group + + + Total count of prims owned by OwnerID + + + true of OwnerID is currently online and is not a group + + + The date of the most recent prim left by OwnerID - Contains a parcels dwell data returned from the simulator in response to an + Contains a parcels dwell data returned from the simulator in response to an @@ -15362,29 +1359,29 @@ Get the calculated dwell - Contains basic parcel information data returned from the - simulator in response to an request + Contains basic parcel information data returned from the + simulator in response to an request Construct a new instance of the ParcelInfoReplyEventArgs class - The object containing basic parcel info + The object containing basic parcel info - Get the object containing basic parcel info + Get the object containing basic parcel info - Contains basic parcel information data returned from the simulator in response to an request + Contains basic parcel information data returned from the simulator in response to an request Construct a new instance of the ParcelPropertiesEventArgs class - The object containing the details - The object containing the details + The object containing the details + The object containing the details The result of the request - The number of primitieves your agent is + The number of primitieves your agent is currently selecting and or sitting on in this parcel The user assigned ID used to correlate a request with these results @@ -15394,14 +1391,14 @@ Get the simulator the parcel is located in - Get the object containing the details + Get the object containing the details If Result is NoData, this object will not contain valid data Get the result of the request - Get the number of primitieves your agent is + Get the number of primitieves your agent is currently selecting and or sitting on in this parcel @@ -15412,7 +1409,7 @@ TODO: - Contains blacklist and whitelist data returned from the simulator in response to an request + Contains blacklist and whitelist data returned from the simulator in response to an request @@ -15442,8 +1439,8 @@ Get the list containing the white/blacklisted agents for the parcel - Contains blacklist and whitelist data returned from the - simulator in response to an request + Contains blacklist and whitelist data returned from the + simulator in response to an request @@ -15461,7 +1458,7 @@ Contains the data returned when all parcel data has been retrieved from a simulator - + Construct a new instance of the SimParcelsDownloadedEventArgs class @@ -15481,7 +1478,7 @@ to each 64x64 parcel's LocalID. - Contains the data returned when a request + Contains the data returned when a request @@ -15526,603 +1523,5601 @@ Construct a new instance of the ParcelMediaCommandEventArgs class The simulator the parcel media command was issued in - - - - + + The media command that was sent - - + Get the simulator the parcel media command was issued in - - + - - + Get the media command that was sent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The ObservableDictionary class is used for storing key/value pairs. It has methods for firing + events to subscribers when items are added, removed, or changed. + + Key + Value + + + + A dictionary of callbacks to fire when specified action occurs + + + + + Register a callback to be fired when an action occurs + + The action + The callback to fire + + + + Unregister a callback + + The action + The callback to fire + + + + + + + + + + Internal dictionary that this class wraps around. Do not + modify or enumerate the contents of this dictionary without locking + + + + Initializes a new instance of the Class + with the specified key/value, has the default initial capacity. + + + + // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value. + public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(); + + + + + + Initializes a new instance of the Class + with the specified key/value, With its initial capacity specified. + + Initial size of dictionary + + + // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value, + // initially allocated room for 10 entries. + public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(10); + + + + + + Try to get entry from the with specified key + + Key to use for lookup + Value returned + if specified key exists, if not found + + + // find your avatar using the Simulator.ObjectsAvatars ObservableDictionary: + Avatar av; + if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) + Console.WriteLine("Found Avatar {0}", av.Name); + + + + + + + Finds the specified match. + + The match. + Matched value + + + // use a delegate to find a prim in the ObjectsPrimitives ObservableDictionary + // with the ID 95683496 + uint findID = 95683496; + Primitive findPrim = sim.ObjectsPrimitives.Find( + delegate(Primitive prim) { return prim.ID == findID; }); + + + + + Find All items in an + return matching items. + a containing found items. + + Find All prims within 20 meters and store them in a List + + int radius = 20; + List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( + delegate(Primitive prim) { + Vector3 pos = prim.Position; + return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); + } + ); + + + + + Find All items in an + return matching keys. + a containing found keys. + + Find All keys which also exist in another dictionary + + List<UUID> matches = myDict.FindAll( + delegate(UUID id) { + return myOtherDict.ContainsKey(id); + } + ); + + + + + Check if Key exists in Dictionary + Key to check for + if found, otherwise + + + Check if Value exists in Dictionary + Value to check for + if found, otherwise + + + + Adds the specified key to the dictionary, dictionary locking is not performed, + + + The key + The value + + + + Removes the specified key, dictionary locking is not performed + + The key. + if successful, otherwise + + + + Clear the contents of the dictionary + + + + + Enumerator for iterating dictionary entries + + + + + + Gets the number of Key/Value pairs contained in the + + + + + Indexer for the dictionary + + The key + The value + + + + A Wrapper around openjpeg to encode and decode images to and from byte arrays + + + + TGA Header size + + + OpenJPEG is not threadsafe, so this object is used to lock + during calls into unmanaged code + + + + Encode a object into a byte array + + The object to encode + true to enable lossless conversion, only useful for small images ie: sculptmaps + A byte array containing the encoded Image object + + + + Encode a object into a byte array + + The object to encode + a byte array of the encoded image + + + + Decode JPEG2000 data to an and + + + JPEG2000 encoded data + ManagedImage object to decode to + Image object to decode to + True if the decode succeeds, otherwise false + + + + + + + + + + + + + + + + + + + + + Encode a object into a byte array + + The source object to encode + true to enable lossless decoding + A byte array containing the source Bitmap object + + + + Defines the beginning and ending file positions of a layer in an + LRCP-progression JPEG2000 file + + + + + This structure is used to marshal both encoded and decoded images. + MUST MATCH THE STRUCT IN dotnet.h! + + + + + Information about a single packet in a JPEG2000 stream + + + + Packet start position + + + Packet header end position + + + Packet end position + + + + Represents a Sound Asset + + + + Initializes a new instance of an AssetSound object + + + Initializes a new instance of an AssetSound object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + + TODO: Encodes a sound file + + + + + TODO: Decode a sound file + + true + + + Override the base classes AssetType + + + + Represents a Landmark with RegionID and Position vector + + + + UUID of the Landmark target region + + + Local position of the target + + + Construct an Asset of type Landmark + + + + Construct an Asset object of type Landmark + + A unique specific to this asset + A byte array containing the raw asset data + + + + Constuct an asset of type Landmark + + UUID of the target region + Local position of landmark + + + + Encode the raw contents of a string with the specific Landmark format + + + + + Decode the raw asset data, populating the RegionID and Position + + true if the AssetData was successfully decoded to a UUID and Vector + + + Override the base classes AssetType + + + + Represents an that can be worn on an avatar + such as a Shirt, Pants, etc. + + + + + Represents a Wearable Asset, Clothing, Hair, Skin, Etc + + + + A string containing the name of the asset + + + A string containing a short description of the asset + + + The Assets WearableType + + + The For-Sale status of the object + + + An Integer representing the purchase price of the asset + + + The of the assets creator + + + The of the assets current owner + + + The of the assets prior owner + + + The of the Group this asset is set to + + + True if the asset is owned by a + + + The Permissions mask of the asset + + + A Dictionary containing Key/Value pairs of the objects parameters + + + A Dictionary containing Key/Value pairs where the Key is the textures Index and the Value is the Textures + + + Initializes a new instance of an AssetWearable object + + + Initializes a new instance of an AssetWearable object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + Initializes a new instance of an AssetWearable object with parameters + A string containing the asset parameters + + + + Decode an assets byte encoded data to a string + + true if the asset data was decoded successfully + + + + Encode the assets string represantion into a format consumable by the asset server + + + + Initializes a new instance of an AssetScriptBinary object + + + Initializes a new instance of an AssetScriptBinary object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + Initializes a new instance of an AssetScriptBinary object with parameters + A string containing the Clothings data + + + Override the base classes AssetType + + + + Represents an Animation + + + + Default Constructor + + + + Construct an Asset object of type Animation + + A unique specific to this asset + A byte array containing the raw asset data + + + Override the base classes AssetType + + + + Operation to apply when applying color to texture + + + + + Information needed to translate visual param value to RGBA color + + + + + Construct VisualColorParam + + Operation to apply when applying color to texture + Colors + + + + Represents alpha blending and bump infor for a visual parameter + such as sleive length + + + + Stregth of the alpha to apply + + + File containing the alpha channel + + + Skip blending if parameter value is 0 + + + Use miltiply insted of alpha blending + + + + Create new alhpa information for a visual param + + Stregth of the alpha to apply + File containing the alpha channel + Skip blending if parameter value is 0 + Use miltiply insted of alpha blending + + + + A single visual characteristic of an avatar mesh, such as eyebrow height + + + + Index of this visual param + + + Internal name + + + Group ID this parameter belongs to + + + Name of the wearable this parameter belongs to + + + Displayable label of this characteristic + + + Displayable label for the minimum value of this characteristic + + + Displayable label for the maximum value of this characteristic + + + Default value + + + Minimum value + + + Maximum value + + + Is this param used for creation of bump layer? + + + Alpha blending/bump info + + + Color information + + + Array of param IDs that are drivers for this parameter + + + + Set all the values through the constructor + + Index of this visual param + Internal name + + + Displayable label of this characteristic + Displayable label for the minimum value of this characteristic + Displayable label for the maximum value of this characteristic + Default value + Minimum value + Maximum value + Is this param used for creation of bump layer? + Array of param IDs that are drivers for this parameter + Alpha blending/bump info + Color information + + + + Holds the Params array of all the avatar appearance parameters + + + + X position of this patch + + + Y position of this patch + + + A 16x16 array of floats holding decompressed layer data + + + + Creates a LayerData packet for compressed land data given a full + simulator heightmap and an array of indices of patches to compress + + A 256 * 256 array of floating point values + specifying the height at each meter in the simulator + Array of indexes in the 16x16 grid of patches + for this simulator. For example if 1 and 17 are specified, patches + x=1,y=0 and x=1,y=1 are sent + + + + + Add a patch of terrain to a BitPacker + + BitPacker to write the patch to + Heightmap of the simulator, must be a 256 * + 256 float array + X offset of the patch to create, valid values are + from 0 to 15 + Y offset of the patch to create, valid values are + from 0 to 15 + + + + A Name Value pair with additional settings, used in the protocol + primarily to transmit avatar names and active group in object packets + + + + + + + + + + + + + + + + + + + + Constructor that takes all the fields as parameters + + + + + + + + + + Constructor that takes a single line from a NameValue field + + + + + Type of the value + + + Unknown + + + String value + + + + + + + + + + + + + + + Deprecated + + + String value, but designated as an asset + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Starts a thread that keeps the daemon running + + + + + + + Stops the daemon and the thread keeping it running + + + + + + + + + + + + + This is used to initialize and stop the Connector as a whole. The Connector + Create call must be completed successfully before any other requests are made + (typically during application initialization). The shutdown should be called + when the application is shutting down to gracefully release resources + + A string value indicting the Application name + URL for the management server + LoggingSettings + + + + + + Shutdown Connector -- Should be called when the application is shutting down + to gracefully release resources + + Handle returned from successful Connector ‘create’ request + + + + Mute or unmute the microphone + + Handle returned from successful Connector ‘create’ request + true (mute) or false (unmute) + + + + Mute or unmute the speaker + + Handle returned from successful Connector ‘create’ request + true (mute) or false (unmute) + + + + Set microphone volume + + Handle returned from successful Connector ‘create’ request + The level of the audio, a number between -100 and 100 where + 0 represents ‘normal’ speaking volume + + + + Set local speaker volume + + Handle returned from successful Connector ‘create’ request + The level of the audio, a number between -100 and 100 where + 0 represents ‘normal’ speaking volume + + + + Create a Session + Sessions typically represent a connection to a media session with one or more + participants. This is used to generate an ‘outbound’ call to another user or + channel. The specifics depend on the media types involved. A session handle is + required to control the local user functions within the session (or remote + users if the current account has rights to do so). Currently creating a + session automatically connects to the audio media, there is no need to call + Session.Connect at this time, this is reserved for future use. + + Handle returned from successful Connector ‘create’ request + This is the URI of the terminating point of the session (ie who/what is being called) + This is the display name of the entity being called (user or channel) + Only needs to be supplied when the target URI is password protected + This indicates the format of the password as passed in. This can either be + “ClearText” or “SHA1UserName”. If this element does not exist, it is assumed to be “ClearText”. If it is + “SHA1UserName”, the password as passed in is the SHA1 hash of the password and username concatenated together, + then base64 encoded, with the final “=” character stripped off. + + + + + + + Used to accept a call + + SessionHandle such as received from SessionNewEvent + "default" + + + + + This command is used to start the audio render process, which will then play + the passed in file through the selected audio render device. This command + should not be issued if the user is on a call. + + The fully qualified path to the sound file. + True if the file is to be played continuously and false if it is should be played once. + + + + + This command is used to stop the audio render process. + + The fully qualified path to the sound file issued in the start render command. + + + + + This is used to ‘end’ an established session (i.e. hang-up or disconnect). + + Handle returned from successful Session ‘create’ request or a SessionNewEvent + + + + + Set the combined speaking and listening position in 3D space. + + Handle returned from successful Session ‘create’ request or a SessionNewEvent + Speaking position + Listening position + + + + + Set User Volume for a particular user. Does not affect how other users hear that user. + + Handle returned from successful Session ‘create’ request or a SessionNewEvent + + The level of the audio, a number between -100 and 100 where 0 represents ‘normal’ speaking volume + + + + + Start up the Voice service. + + + + + Handle miscellaneous request status + + + + ///If something goes wrong, we log it. + + + + Cleanup oject resources + + + + + Request voice cap when changing regions + + + + + Handle a change in session state + + + + + Close a voice session + + + + + + Locate a Session context from its handle + + Creates the session context if it does not exist. + + + + Handle completion of main voice cap request. + + + + + + + + Daemon has started so connect to it. + + + + + The daemon TCP connection is open. + + + + + Handle creation of the Connector. + + + + + Handle response to audio output device query + + + + + Handle response to audio input device query + + + + + Set voice channel for new parcel + + + + + + Request info from a parcel capability Uri. + + + + + + Receive parcel voice cap + + + + + + + + Tell Vivox where we are standing + + This has to be called when we move or turn. + + + + Start and stop updating out position. + + + + + + This is used to login a specific user account(s). It may only be called after + Connector initialization has completed successfully + + Handle returned from successful Connector ‘create’ request + User's account name + User's account password + Values may be “AutoAnswer” or “VerifyAnswer” + "" + This is an integer that specifies how often + the daemon will send participant property events while in a channel. If this is not set + the default will be “on state change”, which means that the events will be sent when + the participant starts talking, stops talking, is muted, is unmuted. + The valid values are: + 0 – Never + 5 – 10 times per second + 10 – 5 times per second + 50 – 1 time per second + 100 – on participant state change (this is the default) + false + + + + + This is used to logout a user session. It should only be called with a valid AccountHandle. + + Handle returned from successful Connector ‘login’ request + + + + + This is used to get a list of audio devices that can be used for capture (input) of voice. + + + + + + This is used to get a list of audio devices that can be used for render (playback) of voice. + + + + + This command is used to select the render device. + + The name of the device as returned by the Aux.GetRenderDevices command. + + + + This command is used to select the capture device. + + The name of the device as returned by the Aux.GetCaptureDevices command. + + + + This command is used to start the audio capture process which will cause + AuxAudioProperty Events to be raised. These events can be used to display a + microphone VU meter for the currently selected capture device. This command + should not be issued if the user is on a call. + + (unused but required) + + + + + This command is used to stop the audio capture process. + + + + + + This command is used to set the mic volume while in the audio tuning process. + Once an acceptable mic level is attained, the application must issue a + connector set mic volume command to have that level be used while on voice + calls. + + the microphone volume (-100 to 100 inclusive) + + + + + This command is used to set the speaker volume while in the audio tuning + process. Once an acceptable speaker level is attained, the application must + issue a connector set speaker volume command to have that level be used while + on voice calls. + + the speaker volume (-100 to 100 inclusive) + + + + + Event for most mundane request reposnses. + + + + Response to Connector.Create request + + + Response to Aux.GetCaptureDevices request + + + Response to Aux.GetRenderDevices request + + + Audio Properties Events are sent after audio capture is started. + These events are used to display a microphone VU meter + + + Response to Account.Login request + + + This event message is sent whenever the login state of the + particular Account has transitioned from one value to another + + + + List of audio input devices + + + + + List of audio output devices + + + + + Set audio test mode + + + + Enable logging + + + The folder where any logs will be created + + + This will be prepended to beginning of each log file + + + The suffix or extension to be appended to each log file + + + + 0: NONE - No logging + 1: ERROR - Log errors only + 2: WARNING - Log errors and warnings + 3: INFO - Log errors, warnings and info + 4: DEBUG - Log errors, warnings, info and debug + + + + + Constructor for default logging settings + + + + Audio Properties Events are sent after audio capture is started. These events are used to display a microphone VU meter + + + + Interface requirements for Messaging system + + + + + The current status of a texture request as it moves through the pipeline or final result of a texture request. + + + + The initial state given to a request. Requests in this state + are waiting for an available slot in the pipeline + + + A request that has been added to the pipeline and the request packet + has been sent to the simulator + + + A request that has received one or more packets back from the simulator + + + A request that has received all packets back from the simulator + + + A request that has taken longer than + to download OR the initial packet containing the packet information was never received + + + The texture request was aborted by request of the agent + + + The simulator replied to the request that it was not able to find the requested texture + + + + A callback fired to indicate the status or final state of the requested texture. For progressive + downloads this will fire each time new asset data is returned from the simulator. + + The indicating either Progress for textures not fully downloaded, + or the final result of the request after it has been processed through the TexturePipeline + The object containing the Assets ID, raw data + and other information. For progressive rendering the will contain + the data from the beginning of the file. For failed, aborted and timed out requests it will contain + an empty byte array. + + + + Texture request download handler, allows a configurable number of download slots which manage multiple + concurrent texture downloads from the + + This class makes full use of the internal + system for full texture downloads. + + + A dictionary containing all pending and in-process transfer requests where the Key is both the RequestID + and also the Asset Texture ID, and the value is an object containing the current state of the request and also + the asset data as it is being re-assembled + + + Holds the reference to the client object + + + Maximum concurrent texture requests allowed at a time + + + An array of objects used to manage worker request threads + + + An array of worker slots which shows the availablity status of the slot + + + The primary thread which manages the requests. + + + true if the TexturePipeline is currently running + + + A synchronization object used by the primary thread + + + A refresh timer used to increase the priority of stalled requests + + + + Default constructor, Instantiates a new copy of the TexturePipeline class + + Reference to the instantiated object + + + + Initialize callbacks required for the TexturePipeline to operate + + + + + Shutdown the TexturePipeline and cleanup any callbacks or transfers + + + + + Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + A float indicating the requested priority for the transfer. Higher priority values tell the simulator + to prioritize the request before lower valued requests. An image already being transferred using the can have + its priority changed by resending the request with the new priority value + Number of quality layers to discard. + This controls the end marker of the data sent + The packet number to begin the request at. A value of 0 begins the request + from the start of the asset texture + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request + + + + Sends the actual request packet to the simulator + + The image to download + Type of the image to download, either a baked + avatar texture or a normal texture + Priority level of the download. Default is + 1,013,000.0f + Number of quality layers to discard. + This controls the end marker of the data sent + Packet number to start the download at. + This controls the start marker of the data sent + Sending a priority of 0 and a discardlevel of -1 aborts + download + + + + Cancel a pending or in process texture request + + The texture assets unique ID + + + + Master Download Thread, Queues up downloads in the threadpool + + + + + The worker thread that sends the request and handles timeouts + + A object containing the request details + + + + Handle responses from the simulator that tell us a texture we have requested is unable to be located + or no longer exists. This will remove the request from the pipeline and free up a slot if one is in use + + The sender + The EventArgs object containing the packet data + + + + Handles the remaining Image data that did not fit in the initial ImageData packet + + The sender + The EventArgs object containing the packet data + + + + Handle the initial ImageDataPacket sent from the simulator + + The sender + The EventArgs object containing the packet data + + + Current number of pending and in-process transfers + + + + A request task containing information and status of a request as it is processed through the + + + + The current which identifies the current status of the request + + + The Unique Request ID, This is also the Asset ID of the texture being requested + + + The slot this request is occupying in the threadpoolSlots array + + + The ImageType of the request. + + + The callback to fire when the request is complete, will include + the and the + object containing the result data + + + If true, indicates the callback will be fired whenever new data is returned from the simulator. + This is used to progressively render textures as portions of the texture are received. + + + An object that maintains the data of an request thats in-process. + + + + Type of gesture step + + + + + Base class for gesture steps + + + + + Retururns what kind of gesture step this is + + + + + Describes animation step of a gesture + + + + + If true, this step represents start of animation, otherwise animation stop + + + + + Animation asset + + + + + Animation inventory name + + + + + Returns what kind of gesture step this is + + + + + Describes sound step of a gesture + + + + + Sound asset + + + + + Sound inventory name + + + + + Returns what kind of gesture step this is + + + + + Describes sound step of a gesture + + + + + Text to output in chat + + + + + Returns what kind of gesture step this is + + + + + Describes sound step of a gesture + + + + + If true in this step we wait for all animations to finish + + + + + If true gesture player should wait for the specified amount of time + + + + + Time in seconds to wait if WaitForAnimation is false + + + + + Returns what kind of gesture step this is + + + + + Describes the final step of a gesture + + + + + Returns what kind of gesture step this is + + + + + Represents a sequence of animations, sounds, and chat actions + + + + + Keyboard key that triggers the gestyre + + + + + Modifier to the trigger key + + + + + String that triggers playing of the gesture sequence + + + + + Text that replaces trigger in chat once gesture is triggered + + + + + Sequence of gesture steps + + + + + Constructs guesture asset + + + + + Constructs guesture asset + + A unique specific to this asset + A byte array containing the raw asset data + + + + Encodes gesture asset suitable for uplaod + + + + + Decodes gesture assset into play sequence + + true if the asset data was decoded successfully + + + + Returns asset type + + + + + Permissions for control of object media + + + + + Style of cotrols that shold be displayed to the user + + + + + Class representing media data for a single face + + + + Is display of the alternative image enabled + + + Should media auto loop + + + Shoule media be auto played + + + Auto scale media to prim face + + + Should viewer automatically zoom in on the face when clicked + + + Should viewer interpret first click as interaction with the media + or when false should the first click be treated as zoom in commadn + + + Style of controls viewer should display when + viewer media on this face + + + Starting URL for the media + + + Currently navigated URL + + + Media height in pixes + + + Media width in pixels + + + Who can controls the media + + + Who can interact with the media + + + Is URL whitelist enabled + + + Array of URLs that are whitelisted + + + + Serialize to OSD + + OSDMap with the serialized data + + + + Deserialize from OSD data + + Serialized OSD data + Deserialized object + + + + Particle system specific enumerators, flags and methods. + + + + + Current version of the media data for the prim + + + + + Array of media entries indexed by face number + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Foliage type for this primitive. Only applicable if this + primitive is foliage + + + Unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Identifies the owner if audio or a particle system is + active + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default constructor + + + + + Packs PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew + parameters in to signed eight bit values + + Floating point parameter to pack + Signed eight bit value containing the packed parameter + + + + Unpacks PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew + parameters from signed eight bit integers to floating point values + + Signed eight bit value to unpack + Unpacked floating point value + + + Uses basic heuristics to estimate the primitive shape + + + + Texture animation mode + + + + Disable texture animation + + + Enable texture animation + + + Loop when animating textures + + + Animate in reverse direction + + + Animate forward then reverse + + + Slide texture smoothly instead of frame-stepping + + + Rotate texture instead of using frames + + + Scale texture instead of using frames + + + + A single textured face. Don't instantiate this class yourself, use the + methods in TextureEntry + + + + + Contains the definition for individual faces + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + In the future this will specify whether a webpage is + attached to this face + + + + + + + Represents all of the texturable faces for an object + + Grid objects have infinite faces, with each face + using the properties of the default face unless set otherwise. So if + you have a TextureEntry with a default texture uuid of X, and face 18 + has a texture UUID of Y, every face would be textured with X except for + face 18 that uses Y. In practice however, primitives utilize a maximum + of nine faces + + + + + + + + + + Constructor that takes a default texture UUID + + Texture UUID to use as the default texture + + + + Constructor that takes a TextureEntryFace for the + default face + + Face to use as the default face + + + + Constructor that creates the TextureEntry class from a byte array + + Byte array containing the TextureEntry field + Starting position of the TextureEntry field in + the byte array + Length of the TextureEntry field, in bytes + + + + This will either create a new face if a custom face for the given + index is not defined, or return the custom face for that index if + it already exists + + The index number of the face to create or + retrieve + A TextureEntryFace containing all the properties for that + face + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Controls the texture animation of a particular prim + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Complete structure for the particle system + + + + Particle Flags + There appears to be more data packed in to this area + for many particle systems. It doesn't appear to be flag values + and serialization breaks unless there is a flag for every + possible bit so it is left as an unsigned integer + + + pattern of particles + + + A representing the maximimum age (in seconds) particle will be displayed + Maximum value is 30 seconds + + + A representing the number of seconds, + from when the particle source comes into view, + or the particle system's creation, that the object will emits particles; + after this time period no more particles are emitted + + + A in radians that specifies where particles will not be created + + + A in radians that specifies where particles will be created + + + A representing the number of seconds between burts. + + + A representing the number of meters + around the center of the source where particles will be created. + + + A representing in seconds, the minimum speed between bursts of new particles + being emitted + + + A representing in seconds the maximum speed of new particles being emitted. + + + A representing the maximum number of particles emitted per burst + + + A which represents the velocity (speed) from the source which particles are emitted + + + A which represents the Acceleration from the source which particles are emitted + + + The Key of the texture displayed on the particle + + + The Key of the specified target object or avatar particles will follow + + + Flags of particle from + + + Max Age particle system will emit particles for + + + The the particle has at the beginning of its lifecycle + + + The the particle has at the ending of its lifecycle + + + A that represents the starting X size of the particle + Minimum value is 0, maximum value is 4 + + + A that represents the starting Y size of the particle + Minimum value is 0, maximum value is 4 + + + A that represents the ending X size of the particle + Minimum value is 0, maximum value is 4 + + + A that represents the ending Y size of the particle + Minimum value is 0, maximum value is 4 + + + + Decodes a byte[] array into a ParticleSystem Object + + ParticleSystem object + Start position for BitPacker + + + + Generate byte[] array from particle data + + Byte array + + + + Particle source pattern + + + + None + + + Drop particles from source position with no force + + + "Explode" particles in all directions + + + Particles shoot across a 2D area + + + Particles shoot across a 3D Cone + + + Inverse of AngleCone (shoot particles everywhere except the 3D cone defined + + + + Particle Data Flags + + + + None + + + Interpolate color and alpha from start to end + + + Interpolate scale from start to end + + + Bounce particles off particle sources Z height + + + velocity of particles is dampened toward the simulators wind + + + Particles follow the source + + + Particles point towards the direction of source's velocity + + + Target of the particles + + + Particles are sent in a straight line + + + Particles emit a glow + + + used for point/grab/touch + + + + Particle Flags Enum + + + + None + + + Acceleration and velocity for particles are + relative to the object rotation + + + Particles use new 'correct' angle parameters + + + + Parameters used to construct a visual representation of a primitive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Attachment point to an avatar + + + + + + + + + + + + + + + + Information on the flexible properties of a primitive + + + + + + + + + + + + + + + + + + + + + + + Default constructor + + + + + + + + + + + + + + + + + + + + + + + + Information on the light properties of a primitive + + + + + + + + + + + + + + + + + + + + Default constructor + + + + + + + + + + + + + + + + + + + + + + + + Information on the sculpt properties of a sculpted primitive + + + + + Default constructor + + + + + + + + + + + + Render inside out (inverts the normals). + + + + + Render an X axis mirror of the sculpty. + + + + + Extended properties to describe an object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default constructor + + + + + Set the properties that are set in an ObjectPropertiesFamily packet + + that has + been partially filled by an ObjectPropertiesFamily packet + + + - - + - - + - - + - - + - - + - - + + - + + Map layer request type - - - + + Objects and terrain are shown - - - + + Only the terrain is shown, no objects - - - + + Overlay showing land for sale and for auction - + + Type of grid item, such as telehub, event, populator location, etc. - - - + + Telehub - - - + + PG rated event - - - + + Mature rated event - - - + + Popular location - - - + + Locations of avatar groups in a region - - - + + Land for sale - - - + + Classified ad - - - + + Adult rated event - - - + + Adult land for sale - + + Information about a region on the grid map - - - + + Sim X position on World Map - - - + + Sim Y position on World Map - - - + + Sim Name (NOTE: In lowercase!) - - - + + - - - + + Appears to always be zero (None) - - - + + Sim's defined Water Height - - - + + - - - + + UUID of the World Map image - - - + + Unique identifier for this region, a combination of the X + and Y position - + + + - + + + - + + + + - + + Visual chunk of the grid map - - - - - + + Base class for Map Items - - - + + The Global X position of the item - - - + + The Global Y position of the item - - - + + Get the Local X position of the item - - - + + Get the Local Y position of the item - - - - - - - + + Get the Handle of the region - + + Represents an agent or group of agents location - + + Represents a Telehub location - + + Represents a non-adult parcel of land for sale - + + Represents an Adult parcel of land for sale - + + Represents a PG Event - + + Represents a Mature event - + + Represents an Adult event - + + Manages grid-wide tasks such as the world map - - - - - - - + + The event subscribers. null if no subcribers - - - + + Raises the CoarseLocationUpdate event + A CoarseLocationUpdateEventArgs object containing the + data sent by simulator - - - + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - - + + Raises the GridRegion event + A GridRegionEventArgs object containing the + data sent by simulator - - - + + Thread sync lock object - - - - - - - + + The event subscribers. null if no subcribers - - - - - - - + + Raises the GridLayer event + A GridLayerEventArgs object containing the + data sent by simulator - - - - - - - - - - - - - + + Thread sync lock object - - - - - - - + + The event subscribers. null if no subcribers - - - - - - - + + Raises the GridItems event + A GridItemEventArgs object containing the + data sent by simulator - - - - - + + Thread sync lock object - - - Class for controlling various system settings. - - Some values are readonly because they affect things that - happen when the GridClient object is initialized, so changing them at - runtime won't do any good. Non-readonly values may affect things that - happen at login or dynamically + + The event subscribers. null if no subcribers - - Constructor - Reference to a GridClient object + + Raises the RegionHandleReply event + A RegionHandleReplyEventArgs object containing the + data sent by simulator - - Main grid login server + + Thread sync lock object - - Beta grid login server + + A dictionary of all the regions, indexed by region name - - - InventoryManager requests inventory information on login, - GridClient initializes an Inventory store for main inventory. - + + A dictionary of all the regions, indexed by region handle - + - InventoryManager requests library information on login, - GridClient initializes an Inventory store for the library. + Constructor + Instance of GridClient object to associate with this GridManager instance - - Number of milliseconds between sending pings to each sim - - - Number of milliseconds between sending camera updates - - - Number of milliseconds between updating the current - positions of moving, non-accelerating and non-colliding objects - - - Millisecond interval between ticks, where all ACKs are - sent out and the age of unACKed packets is checked - - - The initial size of the packet inbox, where packets are - stored before processing - - - Maximum size of packet that we want to send over the wire - - - The maximum value of a packet sequence number before it - rolls over back to one - - - The maximum size of the sequence number archive, used to - check for resent and/or duplicate packets - - - The relative directory where external resources are kept - - - Login server to connect to - - - IP Address the client will bind to - - - Use XML-RPC Login or LLSD Login, default is XML-RPC Login - - - Number of milliseconds before an asset transfer will time - out - - - Number of milliseconds before a teleport attempt will time - out - - - Number of milliseconds before NetworkManager.Logout() will - time out - - - Number of milliseconds before a CAPS call will time out - Setting this too low will cause web requests time out and - possibly retry repeatedly - - - Number of milliseconds for xml-rpc to timeout - - - Milliseconds before a packet is assumed lost and resent - - - Milliseconds without receiving a packet before the - connection to a simulator is assumed lost - - - Milliseconds to wait for a simulator info request through - the grid interface - - - Maximum number of queued ACKs to be sent before SendAcks() - is forced - - - Network stats queue length (seconds) - - - Enable/disable storing terrain heightmaps in the - TerrainManager - - - Enable/disable sending periodic camera updates - - - Enable/disable automatically setting agent appearance at - login and after sim crossing - - - Enable/disable automatically setting the bandwidth throttle - after connecting to each simulator - The default throttle uses the equivalent of the maximum - bandwidth setting in the official client. If you do not set a - throttle your connection will by default be throttled well below - the minimum values and you may experience connection problems - - - Enable/disable the sending of pings to monitor lag and - packet loss - - - Should we connect to multiple sims? This will allow - viewing in to neighboring simulators and sim crossings - (Experimental) - - - If true, all object update packets will be decoded in to - native objects. If false, only updates for our own agent will be - decoded. Registering an event handler will force objects for that - type to always be decoded. If this is disabled the object tracking - will have missing or partial prim and avatar information - - - If true, when a cached object check is received from the - server the full object info will automatically be requested - - - Whether to establish connections to HTTP capabilities - servers for simulators - - - Whether to decode sim stats - - - The capabilities servers are currently designed to - periodically return a 502 error which signals for the client to - re-establish a connection. Set this to true to log those 502 errors - - - If true, any reference received for a folder or item - the library is not aware of will automatically be fetched - - - If true, and SEND_AGENT_UPDATES is true, - AgentUpdate packets will continuously be sent out to give the bot - smoother movement and autopiloting - - - If true, currently visible avatars will be stored - in dictionaries inside Simulator.ObjectAvatars. - If false, a new Avatar or Primitive object will be created - each time an object update packet is received - - - If true, currently visible avatars will be stored - in dictionaries inside Simulator.ObjectPrimitives. - If false, a new Avatar or Primitive object will be created - each time an object update packet is received - - - If true, position and velocity will periodically be - interpolated (extrapolated, technically) for objects and - avatars that are being tracked by the library. This is - necessary to increase the accuracy of speed and position - estimates for simulated objects - - + - If true, utilization statistics will be tracked. There is a minor penalty - in CPU time for enabling this option. + + - - If true, parcel details will be stored in the - Simulator.Parcels dictionary as they are received - - + - If true, an incoming parcel properties reply will automatically send - a request for the parcel access list + Request a map layer + The name of the region + The type of layer - + - if true, an incoming parcel properties reply will automatically send - a request for the traffic count. + + + + + + + - + - If true, images, and other assets downloaded from the server - will be cached in a local directory + + + + + + - - Path to store cached texture data - - - Maximum size cached files are allowed to take on disk (bytes) - - - Default color used for viewer particle effects - - - Maximum number of times to resend a failed packet - - - Throttle outgoing packet rate - - - UUID of a texture used by some viewers to indentify type of client used - - + - Download textures using GetTexture capability when available + + + + - - The maximum number of concurrent texture downloads allowed - Increasing this number will not necessarily increase texture retrieval times due to - simulator throttles - - + - The Refresh timer inteval is used to set the delay between checks for stalled texture downloads + Request data for all mainland (Linden managed) simulators - This is a static variable which applies to all instances - + - Textures taking longer than this value will be flagged as timed out and removed from the pipeline + Request the region handle for the specified region UUID + UUID of the region to look up - + - Get or set the minimum log level to output to the console by default - If the library is not compiled with DEBUG defined and this level is set to DEBUG - You will get no output on the console. This behavior can be overriden by creating - a logger configuration file for log4net + Get grid region information using the region name, this function + will block until it can find the region or gives up + Name of sim you're looking for + Layer that you are requesting + Will contain a GridRegion for the sim you're + looking for if successful, otherwise an empty structure + True if the GridRegion was successfully fetched, otherwise + false - - Attach avatar names to log messages - - - Log packet retransmission info - - - Cost of uploading an asset - Read-only since this value is dynamically fetched at login - - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the simulator sends a + containing the location of agents in the simulator + + + Raised when the simulator sends a Region Data in response to + a Map request + + + Raised when the simulator sends GridLayer object containing + a map tile coordinates and texture information + + + Raised when the simulator sends GridItems object containing + details on events, land sales at a specific location + + + Raised in response to a Region lookup + + + Unknown + + + Current direction of the sun + + + Current angular velocity of the sun + + + Current world time + + + + Main class to expose grid functionality to clients. All of the + classes needed for sending and receiving data are accessible through + this class. + + + + // Example minimum code required to instantiate class and + // connect to a simulator. + using System; + using System.Collections.Generic; + using System.Text; + using OpenMetaverse; + + namespace FirstBot + { + class Bot + { + public static GridClient Client; + static void Main(string[] args) + { + Client = new GridClient(); // instantiates the GridClient class + // to the global Client object + // Login to Simulator + Client.Network.Login("FirstName", "LastName", "Password", "FirstBot", "1.0"); + // Wait for a Keypress + Console.ReadLine(); + // Logout of simulator + Client.Network.Logout(); + } + } + } + + + + + Networking subsystem + + + Settings class including constant values and changeable + parameters for everything + + + Parcel (subdivided simulator lots) subsystem + + + Our own avatars subsystem + + + Other avatars subsystem + + + Estate subsystem + + + Friends list subsystem + + + Grid (aka simulator group) subsystem + + + Object subsystem + + + Group subsystem + + + Asset subsystem + + + Appearance subsystem + + + Inventory subsystem + + + Directory searches including classifieds, people, land + sales, etc + + + Handles land, wind, and cloud heightmaps + + + Handles sound-related networking + + + Throttling total bandwidth usage, or allocating bandwidth + for specific data stream types + + + + Default constructor + + + + + Return the full name of this instance + + Client avatars full name + + + + Attempts to convert an LLSD structure to a known Packet type + + Event name, this must match an actual + packet name for a Packet to be successfully built + LLSD to convert to a Packet + A Packet on success, otherwise null + + + + Class that handles the local asset cache + + + + + Default constructor + + A reference to the GridClient object + + + + Disposes cleanup timer + + + + + Only create timer when needed + + + + + Return bytes read from the local asset cache, null if it does not exist + + UUID of the asset we want to get + Raw bytes of the asset, or null on failure + + + + Returns ImageDownload object of the + image from the local image cache, null if it does not exist + + UUID of the image we want to get + ImageDownload object containing the image, or null on failure + + + + Constructs a file name of the cached asset + + UUID of the asset + String with the file name of the cahced asset + + + + Saves an asset to the local cache + + UUID of the asset + Raw bytes the asset consists of + Weather the operation was successfull + + + + Get the file name of the asset stored with gived UUID + + UUID of the asset + Null if we don't have that UUID cached on disk, file name if found in the cache folder + + + + Checks if the asset exists in the local cache + + UUID of the asset + True is the asset is stored in the cache, otherwise false + + + + Wipes out entire cache + + + + + Brings cache size to the 90% of the max size + + + + + Asynchronously brings cache size to the 90% of the max size + + + + + Adds up file sizes passes in a FileInfo array + + + + + Checks whether caching is enabled + + + + + Periodically prune the cache + + + + + Nicely formats file sizes + + Byte size we want to output + String with humanly readable file size + + + + Allows setting weather to periodicale prune the cache if it grows too big + Default is enabled, when caching is enabled + + + + + How long (in ms) between cache checks (default is 5 min.) + + + + + Helper class for sorting files by their last accessed time + + + + + Extract the avatar UUID encoded in a SIP URI + + + + + + + Represents an LSL Text object containing a string of UTF encoded characters + + + + A string of characters represting the script contents + + + Initializes a new AssetScriptText object + + + + Initializes a new AssetScriptText object with parameters + + A unique specific to this asset + A byte array containing the raw asset data + + + + Initializes a new AssetScriptText object with parameters + + A string containing the scripts contents + + + + Encode a string containing the scripts contents into byte encoded AssetData + + + + + Decode a byte array containing the scripts contents into a string + + true if decoding is successful + + + Override the base classes AssetType + + + + NetworkManager is responsible for managing the network layer of + OpenMetaverse. It tracks all the server connections, serializes + outgoing traffic and deserializes incoming traffic, and provides + instances of delegates for network-related events. + + + Login Routines + + + + The event subscribers, null of no subscribers + + + Raises the PacketSent Event + A PacketSentEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the LoggedOut Event + A LoggedOutEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the SimConnecting Event + A SimConnectingEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the SimConnected Event + A SimConnectedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the SimDisconnected Event + A SimDisconnectedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the Disconnected Event + A DisconnectedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the SimChanged Event + A SimChangedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the EventQueueRunning Event + A EventQueueRunningEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + All of the simulators we are currently connected to + + + Handlers for incoming capability events + + + Handlers for incoming packets + + + Incoming packets that are awaiting handling + + + Outgoing packets that are awaiting handling + + + + Default constructor + + Reference to the GridClient object + + + + Register an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library + + Packet type to trigger events for + Callback to fire when a packet of this type + is received + + + + Unregister an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library + + Packet type this callback is registered with + Callback to stop firing events for + + + + Register a CAPS event handler. This is a low level event interface + and should only be used if you are doing something not supported in + the library + + Name of the CAPS event to register a handler for + Callback to fire when a CAPS event is received + + + + Unregister a CAPS event handler. This is a low level event interface + and should only be used if you are doing something not supported in + the library + + Name of the CAPS event this callback is + registered with + Callback to stop firing events for + + + + Send a packet to the simulator the avatar is currently occupying + + Packet to send + + + + Send a packet to a specified simulator + + Packet to send + Simulator to send the packet to + + + + Connect to a simulator + + IP address to connect to + Port to connect to + Handle for this simulator, to identify its + location in the grid + Whether to set CurrentSim to this new + connection, use this if the avatar is moving in to this simulator + URL of the capabilities server to use for + this sim connection + A Simulator object on success, otherwise null + + + + Connect to a simulator + + IP address and port to connect to + Handle for this simulator, to identify its + location in the grid + Whether to set CurrentSim to this new + connection, use this if the avatar is moving in to this simulator + URL of the capabilities server to use for + this sim connection + A Simulator object on success, otherwise null + + + + Initiate a blocking logout request. This will return when the logout + handshake has completed or when Settings.LOGOUT_TIMEOUT + has expired and the network layer is manually shut down + + + + + Initiate the logout process. Check if logout succeeded with the + OnLogoutReply event, and if this does not fire the + Shutdown() function needs to be manually called + + + + + Close a connection to the given simulator + + + + + + + Shutdown will disconnect all the sims except for the current sim + first, and then kill the connection to CurrentSim. This should only + be called if the logout process times out on RequestLogout + + Type of shutdown + + + + Shutdown will disconnect all the sims except for the current sim + first, and then kill the connection to CurrentSim. This should only + be called if the logout process times out on RequestLogout + + Type of shutdown + Shutdown message + + + + Searches through the list of currently connected simulators to find + one attached to the given IPEndPoint + + IPEndPoint of the Simulator to search for + A Simulator reference on success, otherwise null + + + + Fire an event when an event queue connects for capabilities + + Simulator the event queue is attached to + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + The event subscribers, null of no subscribers + + + Raises the LoginProgress Event + A LoginProgressEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Seed CAPS URL returned from the login server + + + A list of packets obtained during the login process which + networkmanager will log but not process + + + + Generate sane default values for a login request + + Account first name + Account last name + Account password + Client application name + Client application version + A populated struct containing + sane defaults + + + + Simplified login that takes the most common and required fields + + Account first name + Account last name + Account password + Client application name + Client application version + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error + + + + Simplified login that takes the most common fields along with a + starting location URI, and can accept an MD5 string instead of a + plaintext password + + Account first name + Account last name + Account password or MD5 hash of the password + such as $1$1682a1e45e9f957dcdf0bb56eb43319c + Client application name + Starting location URI that can be built with + StartLocation() + Client application version + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error + + + + Login that takes a struct of all the values that will be passed to + the login server + + The values that will be passed to the login + server, all fields must be set even if they are String.Empty + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error + + + + Build a start location URI for passing to the Login function + + Name of the simulator to start in + X coordinate to start at + Y coordinate to start at + Z coordinate to start at + String with a URI that can be used to login to a specified + location + + + + Handles response from XML-RPC login replies + + + + + Handle response from LLSD login replies + + + + + + + + Get current OS + + Either "Win" or "Linux" + + + + Get clients default Mac Address + + A string containing the first found Mac Address + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Unique identifier associated with our connections to + simulators + + + The simulator that the logged in avatar is currently + occupying + + + Shows whether the network layer is logged in to the + grid or not + + + Number of packets in the incoming queue + + + Number of packets in the outgoing queue + + + Raised when the simulator sends us data containing + ... + + + Called when a reply is received from the login server, the + login sequence will block until this event returns + + + Current state of logging in + + + Upon login failure, contains a short string key for the + type of login error that occurred + + + The raw XML-RPC reply from the login server, exactly as it + was received (minus the HTTP header) + + + During login this contains a descriptive version of + LoginStatusCode. After a successful login this will contain the + message of the day, and after a failed login a descriptive error + message will be returned + + + + Explains why a simulator or the grid disconnected from us + + + + The client requested the logout or simulator disconnect + + + The server notified us that it is disconnecting + + + Either a socket was closed or network traffic timed out + + + The last active simulator shut down + + + + Holds a simulator reference and a decoded packet, these structs are put in + the packet inbox for event handling + + + + Reference to the simulator that this packet came from + + + Packet that needs to be processed + + + + Holds a simulator reference and a serialized packet, these structs are put in + the packet outbox for sending + + + + Reference to the simulator this packet is destined for + + + Packet that needs to be sent + + + Sequence number of the wrapped packet + + + Number of times this packet has been resent + + + Environment.TickCount when this packet was last sent over the wire + + + + + + + + + + + + + + Reads in a byte array of an Animation Asset created by the SecondLife(tm) client. + + + + + Rotation Keyframe count (used internally) + + + + + Position Keyframe count (used internally) + + + + + Animation Priority + + + + + The animation length in seconds. + + + + + Expression set in the client. Null if [None] is selected + + + + + The time in seconds to start the animation + + + + + The time in seconds to end the animation + + + + + Loop the animation + + + + + Meta data. Ease in Seconds. + + + + + Meta data. Ease out seconds. + + + + + Meta Data for the Hand Pose + + + + + Number of joints defined in the animation + + + + + Contains an array of joints + + + + + Searialize an animation asset into it's joints/keyframes/meta data + + + + + + Variable length strings seem to be null terminated in the animation asset.. but.. + use with caution, home grown. + advances the index. + + The animation asset byte array + The offset to start reading + a string + + + + Read in a Joint from an animation asset byte array + Variable length Joint fields, yay! + Advances the index + + animation asset byte array + Byte Offset of the start of the joint + The Joint data serialized into the binBVHJoint structure + + + + Read Keyframes of a certain type + advance i + + Animation Byte array + Offset in the Byte Array. Will be advanced + Number of Keyframes + Scaling Min to pass to the Uint16ToFloat method + Scaling Max to pass to the Uint16ToFloat method + + + + + A Joint and it's associated meta data and keyframes + + + + + Name of the Joint. Matches the avatar_skeleton.xml in client distros + + + + + Joint Animation Override? Was the same as the Priority in testing.. + + + + + Array of Rotation Keyframes in order from earliest to latest + + + + + Array of Position Keyframes in order from earliest to latest + This seems to only be for the Pelvis? + + + + + A Joint Keyframe. This is either a position or a rotation. + + + + + Either a Vector3 position or a Vector3 Euler rotation + + + + + Poses set in the animation metadata for the hands. + + + + + Manager class for our own avatar + + + + The event subscribers. null if no subcribers + + + Raises the ChatFromSimulator event + A ChatEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ScriptDialog event + A SctriptDialogEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ScriptQuestion event + A ScriptQuestionEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the LoadURL event + A LoadUrlEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the MoneyBalance event + A BalanceEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the MoneyBalanceReply event + A MoneyBalanceReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the IM event + A InstantMessageEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the TeleportProgress event + A TeleportEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the AgentDataReply event + A AgentDataReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the AnimationsChanged event + A AnimationsChangedEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the MeanCollision event + A MeanCollisionEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the RegionCrossed event + A RegionCrossedEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupChatJoined event + A GroupChatJoinedEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupChatLeft event + A GroupChatLeftEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the AlertMessage event + A AlertMessageEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ScriptControlChange event + A ScriptControlEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the CameraConstraint event + A CameraConstraintEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ScriptSensorReply event + A ScriptSensorReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the AvatarSitResponse event + A AvatarSitResponseEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ChatSessionMemberAdded event + A ChatSessionMemberAddedEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ChatSessionMemberLeft event + A ChatSessionMemberLeftEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Reference to the GridClient instance + + + Used for movement and camera tracking + + + Currently playing animations for the agent. Can be used to + check the current movement status such as walking, hovering, aiming, + etc. by checking against system animations found in the Animations class + + + Dictionary containing current Group Chat sessions and members + + + + Constructor, setup callbacks for packets related to our avatar + + A reference to the Class + + + + Send a text message from the Agent to the Simulator + + A containing the message + The channel to send the message on, 0 is the public channel. Channels above 0 + can be used however only scripts listening on the specified channel will see the message + Denotes the type of message being sent, shout, whisper, etc. + + + + Request any instant messages sent while the client was offline to be resent. + + + + + Send an Instant Message to another Avatar + + The recipients + A containing the message to send + + + + Send an Instant Message to an existing group chat or conference chat + + The recipients + A containing the message to send + IM session ID (to differentiate between IM windows) + + + + Send an Instant Message + + The name this IM will show up as being from + Key of Avatar + Text message being sent + IM session ID (to differentiate between IM windows) + IDs of sessions for a conference + + + + Send an Instant Message + + The name this IM will show up as being from + Key of Avatar + Text message being sent + IM session ID (to differentiate between IM windows) + Type of instant message to send + Whether to IM offline avatars as well + Senders Position + RegionID Sender is In + Packed binary data that is specific to + the dialog type + + + + Send an Instant Message to a group + + of the group to send message to + Text Message being sent. + + + + Send an Instant Message to a group the agent is a member of + + The name this IM will show up as being from + of the group to send message to + Text message being sent + + + + Send a request to join a group chat session + + of Group to leave + + + + Exit a group chat session. This will stop further Group chat messages + from being sent until session is rejoined. + + of Group chat session to leave + + + + Reply to script dialog questions. + + Channel initial request came on + Index of button you're "clicking" + Label of button you're "clicking" + of Object that sent the dialog request + + + + + Accept invite for to a chatterbox session + + of session to accept invite to + + + + Start a friends conference + + List of UUIDs to start a conference with + the temportary session ID returned in the callback> + + + + Start a particle stream between an agent and an object + + Key of the source agent + Key of the target object + + The type from the enum + A unique for this effect + + + + Start a particle stream between an agent and an object + + Key of the source agent + Key of the target object + A representing the beams offset from the source + A which sets the avatars lookat animation + of the Effect + + + + Create a particle beam between an avatar and an primitive + + The ID of source avatar + The ID of the target primitive + global offset + A object containing the combined red, green, blue and alpha + color values of particle beam + a float representing the duration the parcicle beam will last + A Unique ID for the beam + + + + + Create a particle swirl around a target position using a packet + + global offset + A object containing the combined red, green, blue and alpha + color values of particle beam + a float representing the duration the parcicle beam will last + A Unique ID for the beam + + + + Sends a request to sit on the specified object + + of the object to sit on + Sit at offset + + + + Follows a call to to actually sit on the object + + + + Stands up from sitting on a prim or the ground + true of AgentUpdate was sent + + + + Does a "ground sit" at the avatar's current position + + + + + Starts or stops flying + + True to start flying, false to stop flying + + + + Starts or stops crouching + + True to start crouching, false to stop crouching + + + + Starts a jump (begin holding the jump key) + + + + + Use the autopilot sim function to move the avatar to a new + position. Uses double precision to get precise movements + + The z value is currently not handled properly by the simulator + Global X coordinate to move to + Global Y coordinate to move to + Z coordinate to move to + + + + Use the autopilot sim function to move the avatar to a new position + + The z value is currently not handled properly by the simulator + Integer value for the global X coordinate to move to + Integer value for the global Y coordinate to move to + Floating-point value for the Z coordinate to move to + + + + Use the autopilot sim function to move the avatar to a new position + + The z value is currently not handled properly by the simulator + Integer value for the local X coordinate to move to + Integer value for the local Y coordinate to move to + Floating-point value for the Z coordinate to move to + + + Macro to cancel autopilot sim function + Not certain if this is how it is really done + true if control flags were set and AgentUpdate was sent to the simulator + + + + Grabs an object + + an unsigned integer of the objects ID within the simulator + + + + + Overload: Grab a simulated object + + an unsigned integer of the objects ID within the simulator + + The texture coordinates to grab + The surface coordinates to grab + The face of the position to grab + The region coordinates of the position to grab + The surface normal of the position to grab (A normal is a vector perpindicular to the surface) + The surface binormal of the position to grab (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space + + + + Drag an object + + of the object to drag + Drag target in region coordinates + + + + Overload: Drag an object + + of the object to drag + Drag target in region coordinates + + The texture coordinates to grab + The surface coordinates to grab + The face of the position to grab + The region coordinates of the position to grab + The surface normal of the position to grab (A normal is a vector perpindicular to the surface) + The surface binormal of the position to grab (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space + + + + Release a grabbed object + + The Objects Simulator Local ID + + + + + + + Release a grabbed object + + The Objects Simulator Local ID + The texture coordinates to grab + The surface coordinates to grab + The face of the position to grab + The region coordinates of the position to grab + The surface normal of the position to grab (A normal is a vector perpindicular to the surface) + The surface binormal of the position to grab (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space + + + + Touches an object + + an unsigned integer of the objects ID within the simulator + + + + + Request the current L$ balance + + + + + Give Money to destination Avatar + + UUID of the Target Avatar + Amount in L$ + + + + Give Money to destination Avatar + + UUID of the Target Avatar + Amount in L$ + Description that will show up in the + recipients transaction history + + + + Give L$ to an object + + object to give money to + amount of L$ to give + name of object + + + + Give L$ to a group + + group to give money to + amount of L$ to give + + + + Give L$ to a group + + group to give money to + amount of L$ to give + description of transaction + + + + Pay texture/animation upload fee + + + + + Pay texture/animation upload fee + + description of the transaction + + + + Give Money to destination Object or Avatar + + UUID of the Target Object/Avatar + Amount in L$ + Reason (Optional normally) + The type of transaction + Transaction flags, mostly for identifying group + transactions + + + + Plays a gesture + + Asset of the gesture + + + + Mark gesture active + + Inventory of the gesture + Asset of the gesture + + + + Mark gesture inactive + + Inventory of the gesture + + + + Send an AgentAnimation packet that toggles a single animation on + + The of the animation to start playing + Whether to ensure delivery of this packet or not + + + + Send an AgentAnimation packet that toggles a single animation off + + The of a + currently playing animation to stop playing + Whether to ensure delivery of this packet or not + + + + Send an AgentAnimation packet that will toggle animations on or off + + A list of animation s, and whether to + turn that animation on or off + Whether to ensure delivery of this packet or not + + + + Teleports agent to their stored home location + + true on successful teleport to home location + + + + Teleport agent to a landmark + + of the landmark to teleport agent to + true on success, false on failure + + + + Attempt to look up a simulator name and teleport to the discovered + destination + + Region name to look up + Position to teleport to + True if the lookup and teleport were successful, otherwise + false + + + + Attempt to look up a simulator name and teleport to the discovered + destination + + Region name to look up + Position to teleport to + Target to look at + True if the lookup and teleport were successful, otherwise + false + + + + Teleport agent to another region + + handle of region to teleport agent to + position in destination sim to teleport to + true on success, false on failure + This call is blocking + + + + Teleport agent to another region + + handle of region to teleport agent to + position in destination sim to teleport to + direction in destination sim agent will look at + true on success, false on failure + This call is blocking + + + + Request teleport to a another simulator + + handle of region to teleport agent to + position in destination sim to teleport to + + + + Request teleport to a another simulator + + handle of region to teleport agent to + position in destination sim to teleport to + direction in destination sim agent will look at + + + + Teleport agent to a landmark + + of the landmark to teleport agent to + + + + Send a teleport lure to another avatar with default "Join me in ..." invitation message + + target avatars to lure + + + + Send a teleport lure to another avatar with custom invitation message + + target avatars to lure + custom message to send with invitation + + + + Respond to a teleport lure by either accepting it and initiating + the teleport, or denying it + + of the avatar sending the lure + true to accept the lure, false to decline it + + + + Update agent profile + + struct containing updated + profile information + + + + Update agents profile interests + + selection of interests from struct + + + + Set the height and the width of the client window. This is used + by the server to build a virtual camera frustum for our avatar + + New height of the viewer window + New width of the viewer window + + + + Request the list of muted objects and avatars for this agent + + + + + Sets home location to agents current position + + will fire an AlertMessage () with + success or failure message + + + + Move an agent in to a simulator. This packet is the last packet + needed to complete the transition in to a new simulator + + Object + + + + Reply to script permissions request + + Object + of the itemID requesting permissions + of the taskID requesting permissions + list of permissions to allow + + + + Respond to a group invitation by either accepting or denying it + + UUID of the group (sent in the AgentID field of the invite message) + IM Session ID from the group invitation message + Accept the group invitation or deny it + + + + Requests script detection of objects and avatars + + name of the object/avatar to search for + UUID of the object or avatar to search for + Type of search from ScriptSensorTypeFlags + range of scan (96 max?) + the arc in radians to search within + an user generated ID to correlate replies with + Simulator to perform search in + + + + Create or update profile pick + + UUID of the pick to update, or random UUID to create a new pick + Is this a top pick? (typically false) + UUID of the parcel (UUID.Zero for the current parcel) + Name of the pick + Global position of the pick landmark + UUID of the image displayed with the pick + Long description of the pick + + + + Delete profile pick + + UUID of the pick to delete + + + + Create or update profile Classified + + UUID of the classified to update, or random UUID to create a new classified + Defines what catagory the classified is in + UUID of the image displayed with the classified + Price that the classified will cost to place for a week + Global position of the classified landmark + Name of the classified + Long description of the classified + if true, auto renew classified after expiration + + + + Create or update profile Classified + + UUID of the classified to update, or random UUID to create a new classified + Defines what catagory the classified is in + UUID of the image displayed with the classified + Price that the classified will cost to place for a week + Name of the classified + Long description of the classified + if true, auto renew classified after expiration + + + + Delete a classified ad + + The classified ads ID + + + + Take an incoming ImprovedInstantMessage packet, auto-parse, and if + OnInstantMessage is defined call that with the appropriate arguments + + The sender + The EventArgs object containing the packet data + + + + Take an incoming Chat packet, auto-parse, and if OnChat is defined call + that with the appropriate arguments. + + The sender + The EventArgs object containing the packet data + + + + Used for parsing llDialogs + + The sender + The EventArgs object containing the packet data + + + + Used for parsing llRequestPermissions dialogs + + The sender + The EventArgs object containing the packet data + + + + Handles Script Control changes when Script with permissions releases or takes a control + + The sender + The EventArgs object containing the packet data + + + + Used for parsing llLoadURL Dialogs + + The sender + The EventArgs object containing the packet data + + + + Update client's Position, LookAt and region handle from incoming packet + + The sender + The EventArgs object containing the packet data + This occurs when after an avatar moves into a new sim + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Process TeleportFailed message sent via EventQueue, informs agent its last teleport has failed and why. + + The Message Key + An IMessage object Deserialized from the recieved message event + The simulator originating the event message + + + + Process TeleportFinish from Event Queue and pass it onto our TeleportHandler + + The message system key for this event + IMessage object containing decoded data from OSD + The simulator originating the event message + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Crossed region handler for message that comes across the EventQueue. Sent to an agent + when the agent crosses a sim border into a new region. + + The message key + the IMessage object containing the deserialized data sent from the simulator + The which originated the packet + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + This packet is now being sent via the EventQueue + + + + Group Chat event handler + + The capability Key + IMessage object containing decoded data from OSD + + + + + Response from request to join a group chat + + + IMessage object containing decoded data from OSD + + + + + Someone joined or left group chat + + + IMessage object containing decoded data from OSD + + + + + Handle a group chat Invitation + + Caps Key + IMessage object containing decoded data from OSD + Originating Simulator + + + + Moderate a chat session + + the of the session to moderate, for group chats this will be the groups UUID + the of the avatar to moderate + Either "voice" to moderate users voice, or "text" to moderate users text session + true to moderate (silence user), false to allow avatar to speak + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when a scripted object or agent within range sends a public message + + + Raised when a scripted object sends a dialog box containing possible + options an agent can respond to + + + Raised when an object requests a change in the permissions an agent has permitted + + + Raised when a script requests an agent open the specified URL + + + Raised when an agents currency balance is updated + + + Raised when a transaction occurs involving currency such as a land purchase + + + Raised when an ImprovedInstantMessage packet is recieved from the simulator, this is used for everything from + private messaging to friendship offers. The Dialog field defines what type of message has arrived + + + Raised when an agent has requested a teleport to another location, or when responding to a lure. Raised multiple times + for each teleport indicating the progress of the request + + + Raised when a simulator sends agent specific information for our avatar. + + + Raised when our agents animation playlist changes + + + Raised when an object or avatar forcefully collides with our agent + + + Raised when our agent crosses a region border into another region + + + Raised when our agent succeeds or fails to join a group chat session + + + Raised when our agent exits a group chat session + + + Raised when a simulator sends an urgent message usually indication the recent failure of + another action we have attempted to take such as an attempt to enter a parcel where we are denied access + + + Raised when a script attempts to take or release specified controls for our agent + + + Raised when the simulator detects our agent is trying to view something + beyond its limits + + + Raised when a script sensor reply is received from a simulator + + + Raised in response to a request + + + Raised when an avatar enters a group chat session we are participating in + + + Raised when an agent exits a group chat session we are participating in + + + Your (client) avatars + "client", "agent", and "avatar" all represent the same thing + + + Temporary assigned to this session, used for + verifying our identity in packets + + + Shared secret that is never sent over the wire + + + Your (client) avatar ID, local to the current region/sim + + + Where the avatar started at login. Can be "last", "home" + or a login + + + The access level of this agent, usually M or PG + + + The CollisionPlane of Agent + + + An representing the velocity of our agent + + + An representing the acceleration of our agent + + + A which specifies the angular speed, and axis about which an Avatar is rotating. + + + Position avatar client will goto when login to 'home' or during + teleport request to 'home' region. + + + LookAt point saved/restored with HomePosition + + + Avatar First Name (i.e. Philip) + + + Avatar Last Name (i.e. Linden) + + + Avatar Full Name (i.e. Philip Linden) + + + Gets the health of the agent + + + Gets the current balance of the agent + + + Gets the local ID of the prim the agent is sitting on, + zero if the avatar is not currently sitting + + + Gets the of the agents active group. + + + Gets the Agents powers in the currently active group + + + Current status message for teleporting + + + Current position of the agent as a relative offset from + the simulator, or the parent object if we are sitting on something + + + Current rotation of the agent as a relative rotation from + the simulator, or the parent object if we are sitting on something + + + Current position of the agent in the simulator + + + + A representing the agents current rotation + + + + Returns the global grid position of the avatar + + + + Agent movement and camera control + + Agent movement is controlled by setting specific + After the control flags are set, An AgentUpdate is required to update the simulator of the specified flags + This is most easily accomplished by setting one or more of the AgentMovement properties + + Movement of an avatar is always based on a compass direction, for example AtPos will move the + agent from West to East or forward on the X Axis, AtNeg will of course move agent from + East to West or backward on the X Axis, LeftPos will be South to North or forward on the Y Axis + The Z axis is Up, finer grained control of movements can be done using the Nudge properties + + + + Agent camera controls + + + Currently only used for hiding your group title + + + Action state of the avatar, which can currently be + typing and editing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Timer for sending AgentUpdate packets + + + Default constructor + + + + Send an AgentUpdate with the camera set at the current agent + position and pointing towards the heading specified + + Camera rotation in radians + Whether to send the AgentUpdate reliable + or not + + + + Rotates the avatar body and camera toward a target position. + This will also anchor the camera position on the avatar + + Region coordinates to turn toward + + + + Send new AgentUpdate packet to update our current camera + position and rotation + + + + + Send new AgentUpdate packet to update our current camera + position and rotation + + Whether to require server acknowledgement + of this packet + + + + Send new AgentUpdate packet to update our current camera + position and rotation + + Whether to require server acknowledgement + of this packet + Simulator to send the update to + + + + Builds an AgentUpdate packet entirely from parameters. This + will not touch the state of Self.Movement or + Self.Movement.Camera in any way + + + + + + + + + + + + + + + Move agent positive along the X axis + + + Move agent negative along the X axis + + + Move agent positive along the Y axis + + + Move agent negative along the Y axis + + + Move agent positive along the Z axis + + + Move agent negative along the Z axis + + + + + + + + + + + + + + + + + + + + + + + + Causes simulator to make agent fly + + + Stop movement + + + Finish animation + + + Stand up from a sit + + + Tells simulator to sit agent on ground + + + Place agent into mouselook mode + + + Nudge agent positive along the X axis + + + Nudge agent negative along the X axis + + + Nudge agent positive along the Y axis + + + Nudge agent negative along the Y axis + + + Nudge agent positive along the Z axis + + + Nudge agent negative along the Z axis + + + + + + + + + Tell simulator to mark agent as away + + + + + + + + + + + + + + + + Returns "always run" value, or changes it by sending a SetAlwaysRunPacket + + + + The current value of the agent control flags + + + Gets or sets the interval in milliseconds at which + AgentUpdate packets are sent to the current simulator. Setting + this to a non-zero value will also enable the packet sending if + it was previously off, and setting it to zero will disable + + + Gets or sets whether AgentUpdate packets are sent to + the current simulator + + + Reset movement controls every time we send an update + + + + Camera controls for the agent, mostly a thin wrapper around + CoordinateFrame. This class is only responsible for state + tracking and math, it does not send any packets + + + + + + + The camera is a local frame of reference inside of + the larger grid space. This is where the math happens + + + + Default constructor + + + + + + + + + + + + + + + + + Used to specify movement actions for your agent + + + + Empty flag + + + Move Forward (SL Keybinding: W/Up Arrow) + + + Move Backward (SL Keybinding: S/Down Arrow) + + + Move Left (SL Keybinding: Shift-(A/Left Arrow)) + + + Move Right (SL Keybinding: Shift-(D/Right Arrow)) + + + Not Flying: Jump/Flying: Move Up (SL Keybinding: E) + + + Not Flying: Croutch/Flying: Move Down (SL Keybinding: C) + + + Unused + + + Unused + + + Unused + + + Unused + + + ORed with AGENT_CONTROL_AT_* if the keyboard is being used + + + ORed with AGENT_CONTROL_LEFT_* if the keyboard is being used + + + ORed with AGENT_CONTROL_UP_* if the keyboard is being used + + + Fly + + + + + + Finish our current animation + + + Stand up from the ground or a prim seat + + + Sit on the ground at our current location + + + Whether mouselook is currently enabled + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + + + + + + + Set when the avatar is idled or set to away. Note that the away animation is + activated separately from setting this flag + + + + + + + + + + + + + + + + Represents a single Voice Session to the Vivox service. + + + + + Close this session. + + + + + Look up an existing Participants in this session + + + + + + Positional vector of the users position + + + Velocity vector of the position + + + At Orientation (X axis) of the position + + + Up Orientation (Y axis) of the position + + + Left Orientation (Z axis) of the position + + + + The type of bump-mapping applied to a face + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The level of shininess applied to a face + + + + + + + + + + + + + + + + + The texture mapping style used for a face + + + + + + + + + + + Flags in the TextureEntry block that describe which properties are + set + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Abstract base for rendering plugins + + + + + Generates a basic mesh structure from a primitive + + Primitive to generate the mesh from + Level of detail to generate the mesh at + The generated mesh + + + + Generates a a series of faces, each face containing a mesh and + metadata + + Primitive to generate the mesh from + Level of detail to generate the mesh at + The generated mesh + + + + Apply texture coordinate modifications from a + to a list of vertices + + Vertex list to modify texture coordinates for + Center-point of the face + Face texture parameters + + + + Temporary code to produce a tar archive in tar v7 format + + + + + Binary writer for the underlying stream + + + + + Write a directory entry to the tar archive. We can only handle one path level right now! + + + + + + Write a file to the tar archive + + + + + + + Write a file to the tar archive + + + + + + + Finish writing the raw tar archive data to a stream. The stream will be closed on completion. + + + + + Write a particular entry + + + + + + + + Temporary code to do the bare minimum required to read a tar archive for our purposes + + + + + Binary reader for the underlying stream + + + + + Used to trim off null chars + + + + + Used to trim off space chars + + + + + Generate a tar reader which reads from the given stream. + + + + + + Read the next entry in the tar file. + + + + the data for the entry. Returns null if there are no more entries + + + + Read the next 512 byte chunk of data as a tar header. + + A tar header struct. null if we have reached the end of the archive. + + + + Read data following a header + + + + + + + Convert octal bytes to a decimal representation + + + + + + Simulator (region) properties @@ -16230,8 +7225,8 @@ Access level for a simulator - - Unknown or invalid access level + + Minimum access level, no additional checks Trial accounts allowed @@ -16242,9 +7237,6 @@ Mature rating - - Adult rating - Simulator is offline @@ -16253,15 +7245,335 @@ + + + + + + + + + Initialize the UDP packet handler in server mode + + Port to listening for incoming UDP packets on + + + + Initialize the UDP packet handler in client mode + + Remote UDP server to connect to + + + + + + + + + + + + + + + + + + A public reference to the client that this Simulator object + is attached to + + + A Unique Cache identifier for this simulator + + + The capabilities for this simulator + + + + + + The current version of software this simulator is running + + + + + + A 64x64 grid of parcel coloring values. The values stored + in this array are of the type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true if your agent has Estate Manager rights on this region + + + + + + + + + + + + Statistics information for this simulator and the + connection to the simulator, calculated by the simulator itself + and the library + + + The regions Unique ID + + + The physical data center the simulator is located + Known values are: + + Dallas + Chandler + SF + + + + + The CPU Class of the simulator + Most full mainland/estate sims appear to be 5, + Homesteads and Openspace appear to be 501 + + + The number of regions sharing the same CPU as this one + "Full Sims" appear to be 1, Homesteads appear to be 4 + + + The billing product name + Known values are: + + Mainland / Full Region (Sku: 023) + Estate / Full Region (Sku: 024) + Estate / Openspace (Sku: 027) + Estate / Homestead (Sku: 029) + Mainland / Homestead (Sku: 129) (Linden Owned) + Mainland / Linden Homes (Sku: 131) + + + + + The billing product SKU + Known values are: + + 023 Mainland / Full Region + 024 Estate / Full Region + 027 Estate / Openspace + 029 Estate / Homestead + 129 Mainland / Homestead (Linden Owned) + 131 Linden Homes / Full Region + + + + + + A thread-safe dictionary containing avatars in a simulator + + + + + A thread-safe dictionary containing primitives in a simulator + + + + The current sequence number for packets sent to this + simulator. Must be Interlocked before modifying. Only + useful for applications manipulating sequence numbers + + + + Provides access to an internal thread-safe dictionary containing parcel + information found in this simulator + + + + + Checks simulator parcel map to make sure it has downloaded all data successfully + + true if map is full (contains no 0's) + + + Used internally to track sim disconnections + + + Event that is triggered when the simulator successfully + establishes a connection + + + Whether this sim is currently connected or not. Hooked up + to the property Connected + + + Coarse locations of avatars in this simulator + + + AvatarPositions key representing TrackAgent target + + + Sequence numbers of packets we've received + (for duplicate checking) + + + Packets we sent out that need ACKs from the simulator + + + Sequence number for pause/resume + + Reference to the GridClient object IPEndPoint of the simulator handle of the simulator + + + Called when this Simulator object is being destroyed + + + + + Attempt to connect to this simulator + + Whether to move our agent in to this sim or not + True if the connection succeeded or connection status is + unknown, false if there was a failure + + + + Disconnect from this simulator + + + + + Instructs the simulator to stop sending update (and possibly other) packets + + + + + Instructs the simulator to resume sending update packets (unpause) + + + + + Sends a packet + + Packet to be sent + + + + + + + + + Returns Simulator Name as a String + + + + + + + + + + + + + + + + + + + Sends out pending acknowledgements + + + + + Resend unacknowledged packets + + + + + Provides access to an internal thread-safe multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. + + + + The IP address and port of the server + + + Whether there is a working connection to the simulator or + not + + + Coarse locations of avatars in this simulator + + + AvatarPositions key representing TrackAgent target + Simulator Statistics @@ -16315,12 +7627,10 @@ ID of last Ping sent - - + - - + Current time dilation of this simulator @@ -16332,36 +7642,28 @@ Current Physics frames per second of simulator - - + - - + - - + - - + - - + - - + - - + - - + Total number of objects Simulator is simulating @@ -16379,16 +7681,13 @@ Number of Active scripts running in this simulator - - + - - + - - + Number of downloads pending @@ -16397,12 +7696,10 @@ Number of uploads pending - - + - - + Number of local uploads pending @@ -16410,388 +7707,3341 @@ Unacknowledged bytes in queue - - A public reference to the client that this Simulator object - is attached to - - - A Unique Cache identifier for this simulator - - - The capabilities for this simulator - - + + - - The current version of software this simulator is running + + No report - + + Unknown report type + + + Bug report + + + Complaint report + + + Customer service report + + + Bitflag field for ObjectUpdateCompressed data blocks, describing + which options are present for each object - - A 64x64 grid of parcel coloring values. The values stored - in this array are of the type + + Unknown - + + Whether the object has a TreeSpecies + + + Whether the object has floating text ala llSetText + + + Whether the object has an active particle system + + + Whether the object has sound attached to it + + + Whether the object is attached to a root object or not + + + Whether the object has texture animation settings + + + Whether the object has an angular velocity + + + Whether the object has a name value pairs string + + + Whether the object has a Media URL set + + + Specific Flags for MultipleObjectUpdate requests - + + None + + + Change position of prims + + + Change rotation of prims + + + Change size of prims + + + Perform operation on link set + + + Scale prims uniformly, same as selecing ctrl+shift in the + viewer. Used in conjunction with Scale + + + Special values in PayPriceReply. If the price is not one of these + literal value of the price should be use - + + Indicates that this pay option should be hidden - + + Indicates that this pay option should have the default value - + + Contains the variables sent in an object update packet for objects. + Used to track position and movement of prims and avatars - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Handles all network traffic related to prims and avatar positions and + movement. - + + The event subscribers, null of no subscribers + + + Raises the ObjectUpdate Event + A ObjectUpdateEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ObjectProperties Event + A ObjectPropertiesEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ObjectPropertiesUpdated Event + A ObjectPropertiesUpdatedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ObjectPropertiesFamily Event + A ObjectPropertiesFamilyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarUpdate Event + A AvatarUpdateEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the TerseObjectUpdate Event + A TerseObjectUpdateEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ObjectDataBlockUpdate Event + A ObjectDataBlockUpdateEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the KillObject Event + A KillObjectEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarSitChanged Event + A AvatarSitChangedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the PayPriceReply Event + A PayPriceReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Reference to the GridClient object + + + Does periodic dead reckoning calculation to convert + velocity and acceleration to new positions for objects + + + Construct a new instance of the ObjectManager class + A reference to the instance - + + Request information for a single object from a + you are currently connected to + The the object is located + The Local ID of the object - + + Request information for multiple objects contained in + the same simulator + The the objects are located + An array containing the Local IDs of the objects - + + + Attempt to purchase an original object, a copy, or the contents of + an object + + The the object is located + The Local ID of the object + Whether the original, a copy, or the object + contents are on sale. This is used for verification, if the this + sale type is not valid for the object the purchase will fail + Price of the object. This is used for + verification, if it does not match the actual price the purchase + will fail + Group ID that will be associated with the new + purchase + Inventory folder UUID where the object or objects + purchased should be placed + + + BuyObject(Client.Network.CurrentSim, 500, SaleType.Copy, + 100, UUID.Zero, Client.Self.InventoryRootFolderUUID); + + + + + Request prices that should be displayed in pay dialog. This will triggger the simulator + to send us back a PayPriceReply which can be handled by OnPayPriceReply event + The the object is located + The ID of the object + The result is raised in the event - + + Select a single object. This will cause the to send us + an which will raise the event + The the object is located + The Local ID of the object + - + + Select a single object. This will cause the to send us + an which will raise the event + The the object is located + The Local ID of the object + if true, a call to is + made immediately following the request + - + - + Select multiple objects. This will cause the to send us + an which will raise the event + + The the objects are located + An array containing the Local IDs of the objects + Should objects be deselected immediately after selection + - + - + Select multiple objects. This will cause the to send us + an which will raise the event + + The the objects are located + An array containing the Local IDs of the objects + - + + Update the properties of an object + The the object is located + The Local ID of the object + true to turn the objects physical property on + true to turn the objects temporary property on + true to turn the objects phantom property on + true to turn the objects cast shadows property on - + + Sets the sale properties of a single object + The the object is located + The Local ID of the object + One of the options from the enum + The price of the object - + - + Sets the sale properties of multiple objects + + The the objects are located + An array containing the Local IDs of the objects + One of the options from the enum + The price of the object - + + Deselect a single object + The the object is located + The Local ID of the object - + + Deselect multiple objects. + The the objects are located + An array containing the Local IDs of the objects - - true if your agent has Estate Manager rights on this region - - + + Perform a click action on an object + The the object is located + The Local ID of the object - + + Perform a click action (Grab) on a single object + The the object is located + The Local ID of the object + The texture coordinates to touch + The surface coordinates to touch + The face of the position to touch + The region coordinates of the position to touch + The surface normal of the position to touch (A normal is a vector perpindicular to the surface) + The surface binormal of the position to touch (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space - + + Create (rez) a new prim object in a simulator + A reference to the object to place the object in + Data describing the prim object to rez + Group ID that this prim will be set to, or UUID.Zero if you + do not want the object to be associated with a specific group + An approximation of the position at which to rez the prim + Scale vector to size this prim + Rotation quaternion to rotate this prim + Due to the way client prim rezzing is done on the server, + the requested position for an object is only close to where the prim + actually ends up. If you desire exact placement you'll need to + follow up by moving the object after it has been created. This + function will not set textures, light and flexible data, or other + extended primitive properties - - Statistics information for this simulator and the - connection to the simulator, calculated by the simulator itself - and the library - - - The regions Unique ID - - - The physical data center the simulator is located - Known values are: - DallasChandlerSF - - - The CPU Class of the simulator - Most full mainland/estate sims appear to be 5, - Homesteads and Openspace appear to be 501 - - - The number of regions sharing the same CPU as this one - "Full Sims" appear to be 1, Homesteads appear to be 4 - - - The billing product name - Known values are: - Mainland / Full Region (Sku: 023)Estate / Full Region (Sku: 024)Estate / Openspace (Sku: 027)Estate / Homestead (Sku: 029)Mainland / Homestead (Sku: 129) (Linden Owned)Mainland / Linden Homes (Sku: 131) - - - The billing product SKU - Known values are: - 023 Mainland / Full Region024 Estate / Full Region027 Estate / Openspace029 Estate / Homestead129 Mainland / Homestead (Linden Owned)131 Linden Homes / Full Region - - - The current sequence number for packets sent to this - simulator. Must be Interlocked before modifying. Only - useful for applications manipulating sequence numbers - - + - A thread-safe dictionary containing avatars in a simulator + Create (rez) a new prim object in a simulator + A reference to the object to place the object in + Data describing the prim object to rez + Group ID that this prim will be set to, or UUID.Zero if you + do not want the object to be associated with a specific group + An approximation of the position at which to rez the prim + Scale vector to size this prim + Rotation quaternion to rotate this prim + Specify the + Due to the way client prim rezzing is done on the server, + the requested position for an object is only close to where the prim + actually ends up. If you desire exact placement you'll need to + follow up by moving the object after it has been created. This + function will not set textures, light and flexible data, or other + extended primitive properties - + - A thread-safe dictionary containing primitives in a simulator + Rez a Linden tree + A reference to the object where the object resides + The size of the tree + The rotation of the tree + The position of the tree + The Type of tree + The of the group to set the tree to, + or UUID.Zero if no group is to be set + true to use the "new" Linden trees, false to use the old - + - Provides access to an internal thread-safe dictionary containing parcel - information found in this simulator + Rez grass and ground cover + A reference to the object where the object resides + The size of the grass + The rotation of the grass + The position of the grass + The type of grass from the enum + The of the group to set the tree to, + or UUID.Zero if no group is to be set - - Used internally to track sim disconnections - - - Event that is triggered when the simulator successfully - establishes a connection - - - Whether this sim is currently connected or not. Hooked up - to the property Connected - - - Coarse locations of avatars in this simulator - - - AvatarPositions key representing TrackAgent target - - - Sequence numbers of packets we've received - (for duplicate checking) - - - Packets we sent out that need ACKs from the simulator - - - Sequence number for pause/resume - - - Indicates if UDP connection to the sim is fully established - - + - Provides access to an internal thread-safe multidimensional array containing a x,y grid mapped - to each 64x64 parcel's LocalID. + Set the textures to apply to the faces of an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The texture data to apply - - The IP address and port of the server - - - Whether there is a working connection to the simulator or - not - - - Coarse locations of avatars in this simulator - - - AvatarPositions key representing TrackAgent target - - - Indicates if UDP connection to the sim is fully established - - + - Checks simulator parcel map to make sure it has downloaded all data successfully + Set the textures to apply to the faces of an object - true if map is full (contains no 0's) + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The texture data to apply + A media URL (not used) - + - Called when this Simulator object is being destroyed + Set the Light data on an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set - + - Attempt to connect to this simulator + Set the flexible data on an object - Whether to move our agent in to this sim or not - True if the connection succeeded or connection status is - unknown, false if there was a failure + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set - + - Initiates connection to the simulator + Set the sculptie texture and data on an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set - + - Disconnect from this simulator + Unset additional primitive parameters on an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The extra parameters to set - + - Instructs the simulator to stop sending update (and possibly other) packets + Link multiple prims into a linkset + A reference to the object where the objects reside + An array which contains the IDs of the objects to link + The last object in the array will be the root object of the linkset TODO: Is this true? - + - Instructs the simulator to resume sending update packets (unpause) + Change the rotation of an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new rotation of the object - + - Retrieve the terrain height at a given coordinate + Set the name of an object - Sim X coordinate, valid range is from 0 to 255 - Sim Y coordinate, valid range is from 0 to 255 - The terrain height at the given point if the - lookup was successful, otherwise 0.0f - True if the lookup was successful, otherwise false + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A string containing the new name of the object - + - Sends a packet + Set the name of multiple objects - Packet to be sent + A reference to the object where the objects reside + An array which contains the IDs of the objects to change the name of + An array which contains the new names of the objects - + + Set the description of an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A string containing the new description of the object - + - Returns Simulator Name as a String + Set the descriptions of multiple objects - - + A reference to the object where the objects reside + An array which contains the IDs of the objects to change the description of + An array which contains the new descriptions of the objects - + + Attach an object to this avatar - - + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The point on the avatar the object will be attached + The rotation of the attached object - + + Drop an attached object from this avatar - + A reference to the + object where the objects reside. This will always be the simulator the avatar is currently in - - + The object's ID which is local to the simulator the object is in - + - Sends out pending acknowledgements + Detach an object from yourself - Number of ACKs sent + A reference to the + object where the objects reside + + This will always be the simulator the avatar is currently in + + An array which contains the IDs of the objects to detach - + - Resend unacknowledged packets + Change the position of an object, Will change position of entire linkset + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new position of the object + + + + Change the position of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new position of the object + if true, will change position of (this) child prim only, not entire linkset + + + + Change the Scale (size) of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new scale of the object + If true, will change scale of this prim only, not entire linkset + True to resize prims uniformly + + + + Change the Rotation of an object that is either a child or a whole linkset + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new scale of the object + If true, will change rotation of this prim only, not entire linkset + + + + Send a Multiple Object Update packet to change the size, scale or rotation of a primitive + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new rotation, size, or position of the target object + The flags from the Enum + + + + Deed an object (prim) to a group, Object must be shared with group which + can be accomplished with SetPermissions() + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The of the group to deed the object to + + + + Deed multiple objects (prims) to a group, Objects must be shared with group which + can be accomplished with SetPermissions() + + A reference to the object where the object resides + An array which contains the IDs of the objects to deed + The of the group to deed the object to + + + + Set the permissions on multiple objects + + A reference to the object where the objects reside + An array which contains the IDs of the objects to set the permissions on + The new Who mask to set + The new Permissions mark to set + TODO: What does this do? + + + + Request additional properties for an object + + A reference to the object where the object resides + + + + + Request additional properties for an object + + A reference to the object where the object resides + Absolute UUID of the object + Whether to require server acknowledgement of this request + + + + Set the ownership of a list of objects to the specified group + + A reference to the object where the objects reside + An array which contains the IDs of the objects to set the group id on + The Groups ID + + + + Update current URL of the previously set prim media + + UUID of the prim + Set current URL to this + Prim face number + Simulator in which prim is located + + + + Set object media + + UUID of the prim + Array the length of prims number of faces. Null on face indexes where there is + no media, on faces which contain the media + Simulatior in which prim is located + + + + Retrieve information about object media + + UUID of the primitive + Simulator where prim is located + Call this callback when done + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + A terse object update, used when a transformation matrix or + velocity/acceleration for an object changes but nothing else + (scale/position/rotation/acceleration/velocity) + + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Setup construction data for a basic primitive shape + + Primitive shape to construct + Construction data that can be plugged into a + + + + + + + + + + + + + + + + + + + + Set the Shape data of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + Data describing the prim shape + + + + Set the Material data of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new material of the object + + + + + + + + + + + + + + + + + + + + + Raised when the simulator sends us data containing + A , Foliage or Attachment + + + + + Raised when the simulator sends us data containing + additional information + + + + + Raised when the simulator sends us data containing + Primitive.ObjectProperties for an object we are currently tracking + + + Raised when the simulator sends us data containing + additional and details + + + + Raised when the simulator sends us data containing + updated information for an + + + Raised when the simulator sends us data containing + and movement changes + + + Raised when the simulator sends us data containing + updates to an Objects DataBlock + + + Raised when the simulator informs us an + or is no longer within view + + + Raised when the simulator sends us data containing + updated sit information for our + + + Raised when the simulator sends us data containing + purchase price information for a + + + + Callback for getting object media data via CAP + + Indicates if the operation was succesfull + Object media version string + Array indexed on prim face of media entry data + + + Provides data for the event + The event occurs when the simulator sends + an containing a Primitive, Foliage or Attachment data + Note 1: The event will not be raised when the object is an Avatar + Note 2: It is possible for the to be + raised twice for the same object if for example the primitive moved to a new simulator, then returned to the current simulator or + if an Avatar crosses the border into a new simulator and returns to the current simulator + + + The following code example uses the , , and + properties to display new Primitives and Attachments on the window. + + // Subscribe to the event that gives us prim and foliage information + Client.Objects.ObjectUpdate += Objects_ObjectUpdate; + + + private void Objects_ObjectUpdate(object sender, PrimEventArgs e) + { + Console.WriteLine("Primitive {0} {1} in {2} is an attachment {3}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name, e.IsAttachment); + } + + + + + + + + + Construct a new instance of the PrimEventArgs class + + The simulator the object originated from + The Primitive + The simulator time dilation + The prim was not in the dictionary before this update + true if the primitive represents an attachment to an agent + + + Get the simulator the originated from + + + Get the details + + + true if the did not exist in the dictionary before this update (always true if object tracking has been disabled) + + + true if the is attached to an + + + Get the simulator Time Dilation + + + Provides data for the event + The event occurs when the simulator sends + an containing Avatar data + Note 1: The event will not be raised when the object is an Avatar + Note 2: It is possible for the to be + raised twice for the same avatar if for example the avatar moved to a new simulator, then returned to the current simulator + + + The following code example uses the property to make a request for the top picks + using the method in the class to display the names + of our own agents picks listings on the window. + + // subscribe to the AvatarUpdate event to get our information + Client.Objects.AvatarUpdate += Objects_AvatarUpdate; + Client.Avatars.AvatarPicksReply += Avatars_AvatarPicksReply; + + private void Objects_AvatarUpdate(object sender, AvatarUpdateEventArgs e) + { + // we only want our own data + if (e.Avatar.LocalID == Client.Self.LocalID) + { + // Unsubscribe from the avatar update event to prevent a loop + // where we continually request the picks every time we get an update for ourselves + Client.Objects.AvatarUpdate -= Objects_AvatarUpdate; + // make the top picks request through AvatarManager + Client.Avatars.RequestAvatarPicks(e.Avatar.ID); + } + } + + private void Avatars_AvatarPicksReply(object sender, AvatarPicksReplyEventArgs e) + { + // we'll unsubscribe from the AvatarPicksReply event since we now have the data + // we were looking for + Client.Avatars.AvatarPicksReply -= Avatars_AvatarPicksReply; + // loop through the dictionary and extract the names of the top picks from our profile + foreach (var pickName in e.Picks.Values) + { + Console.WriteLine(pickName); + } + } + + + + + + + + Construct a new instance of the AvatarUpdateEventArgs class + + The simulator the packet originated from + The data + The simulator time dilation + The avatar was not in the dictionary before this update + + + Get the simulator the object originated from + + + Get the data + + + Get the simulator time dilation + + + true if the did not exist in the dictionary before this update (always true if avatar tracking has been disabled) + + + Provides additional primitive data for the event + The event occurs when the simulator sends + an containing additional details for a Primitive, Foliage data or Attachment data + The event is also raised when a request is + made. + + + The following code example uses the , and + + properties to display new attachments and send a request for additional properties containing the name of the + attachment then display it on the window. + + // Subscribe to the event that provides additional primitive details + Client.Objects.ObjectProperties += Objects_ObjectProperties; + + // handle the properties data that arrives + private void Objects_ObjectProperties(object sender, ObjectPropertiesEventArgs e) + { + Console.WriteLine("Primitive Properties: {0} Name is {1}", e.Properties.ObjectID, e.Properties.Name); + } + + + + + + Construct a new instance of the ObjectPropertiesEventArgs class + + The simulator the object is located + The primitive Properties + + + Get the simulator the object is located + + + Get the primitive properties + + + Provides additional primitive data for the event + The event occurs when the simulator sends + an containing additional details for a Primitive or Foliage data that is currently + being tracked in the dictionary + The event is also raised when a request is + made and is enabled + + + + + Construct a new instance of the ObjectPropertiesUpdatedEvenrArgs class + + The simulator the object is located + The Primitive + The primitive Properties + + + Get the simulator the object is located + + + Get the primitive details + + + Get the primitive properties + + + Provides additional primitive data, permissions and sale info for the event + The event occurs when the simulator sends + an containing additional details for a Primitive, Foliage data or Attachment. This includes + Permissions, Sale info, and other basic details on an object + The event is also raised when a request is + made, the viewer equivalent is hovering the mouse cursor over an object + + + + Get the simulator the object is located + + + + + + + + + Provides primitive data containing updated location, velocity, rotation, textures for the event + The event occurs when the simulator sends updated location, velocity, rotation, etc + + + + Get the simulator the object is located + + + Get the primitive details + + + + + + + + + + + + + + Get the simulator the object is located + + + Get the primitive details + + + + + + + + + + + + + + + Provides notification when an Avatar, Object or Attachment is DeRezzed or moves out of the avatars view for the + event + + + Get the simulator the object is located + + + The LocalID of the object + + + + Provides updates sit position data + + + + Get the simulator the object is located + + + + + + + + + + + + + + + + + Get the simulator the object is located + + + + + + + + + + + + + Indicates if the operation was successful + + + + + Media version string + + + + + Array of media entries indexed by face number + + + + + Singleton logging class for the entire library + + + + log4net logging engine + + + + Default constructor + + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Instance of the client + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Exception that was raised + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Instance of the client + Exception that was raised + + + + If the library is compiled with DEBUG defined, an event will be + fired if an OnLogMessage handler is registered and the + message will be sent to the logging engine + + The message to log at the DEBUG level to the + current logging engine + + + + If the library is compiled with DEBUG defined and + GridClient.Settings.DEBUG is true, an event will be + fired if an OnLogMessage handler is registered and the + message will be sent to the logging engine + + The message to log at the DEBUG level to the + current logging engine + Instance of the client + + + Triggered whenever a message is logged. If this is left + null, log messages will go to the console + + + + Callback used for client apps to receive log messages from + the library + + Data being logged + The severity of the log entry from + + + + + + + + + + + + + + + De-serialization constructor for the InventoryNode Class + + + + + Serialization handler for the InventoryNode Class + + + + + De-serialization handler for the InventoryNode Class + + + + + + + + + + + + + + + + + + + + + + + For inventory folder nodes specifies weather the folder needs to be + refreshed from the server + + + + + Exception class to identify inventory exceptions + + + + + Responsible for maintaining inventory structure. Inventory constructs nodes + and manages node children as is necessary to maintain a coherant hirarchy. + Other classes should not manipulate or create InventoryNodes explicitly. When + A node's parent changes (when a folder is moved, for example) simply pass + Inventory the updated InventoryFolder and it will make the appropriate changes + to its internal representation. + + + + The event subscribers, null of no subscribers + + + Raises the InventoryObjectUpdated Event + A InventoryObjectUpdatedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the InventoryObjectRemoved Event + A InventoryObjectRemovedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the InventoryObjectAdded Event + A InventoryObjectAddedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + + Returns the contents of the specified folder + + A folder's UUID + The contents of the folder corresponding to folder + When folder does not exist in the inventory + + + + Updates the state of the InventoryNode and inventory data structure that + is responsible for the InventoryObject. If the item was previously not added to inventory, + it adds the item, and updates structure accordingly. If it was, it updates the + InventoryNode, changing the parent node if item.parentUUID does + not match node.Parent.Data.UUID. + + You can not set the inventory root folder using this method + + The InventoryObject to store + + + + Removes the InventoryObject and all related node data from Inventory. + + The InventoryObject to remove. + + + + Used to find out if Inventory contains the InventoryObject + specified by uuid. + + The UUID to check. + true if inventory contains uuid, false otherwise + + + + Saves the current inventory structure to a cache file + + Name of the cache file to save to + + + + Loads in inventory cache file into the inventory structure. Note only valid to call after login has been successful. + + Name of the cache file to load + The number of inventory items sucessfully reconstructed into the inventory node tree + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + + The root folder of this avatars inventory + + + + + The default shared library folder + + + + + The root node of the avatars inventory + + + + + The root node of the default shared library + + + + + By using the bracket operator on this class, the program can get the + InventoryObject designated by the specified uuid. If the value for the corresponding + UUID is null, the call is equivelant to a call to RemoveNodeFor(this[uuid]). + If the value is non-null, it is equivelant to a call to UpdateNodeFor(value), + the uuid parameter is ignored. + + The UUID of the InventoryObject to get or set, ignored if set to non-null value. + The InventoryObject corresponding to uuid. + + + Describes tasks returned in LandStatReply + + + + Estate level administration and utilities + + + + Textures for each of the four terrain height levels + + + Upper/lower texture boundaries for each corner of the sim + + + + Constructor for EstateTools class + + + + + The event subscribers. null if no subcribers + + + Raises the TopCollidersReply event + A TopCollidersReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the TopScriptsReply event + A TopScriptsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the EstateUsersReply event + A EstateUsersReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the EstateGroupsReply event + A EstateGroupsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the EstateManagersReply event + A EstateManagersReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the EstateBansReply event + A EstateBansReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the EstateCovenantReply event + A EstateCovenantReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the EstateUpdateInfoReply event + A EstateUpdateInfoReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + + Requests estate information such as top scripts and colliders + + + + + + + + Requests estate settings, including estate manager and access/ban lists + + + Requests the "Top Scripts" list for the current region + + + Requests the "Top Colliders" list for the current region + + + + Set several estate specific configuration variables + + The Height of the waterlevel over the entire estate. Defaults to 20 + The maximum height change allowed above the baked terrain. Defaults to 4 + The minimum height change allowed below the baked terrain. Defaults to -4 + true to use + if True forces the sun position to the position in SunPosition + The current position of the sun on the estate, or when FixedSun is true the static position + the sun will remain. 6.0 = Sunrise, 30.0 = Sunset + + + + Request return of objects owned by specified avatar + + The Agents owning the primitives to return + specify the coverage and type of objects to be included in the return + true to perform return on entire estate + + + + + + + + + Used for setting and retrieving various estate panel settings + + EstateOwnerMessage Method field + List of parameters to include + + + + Kick an avatar from an estate + + Key of Agent to remove + + + + Ban an avatar from an estate + Key of Agent to remove + Ban user from this estate and all others owned by the estate owner + + + Unban an avatar from an estate + Key of Agent to remove + /// Unban user from this estate and all others owned by the estate owner + + + + Send a message dialog to everyone in an entire estate + + Message to send all users in the estate + + + + Send a message dialog to everyone in a simulator + + Message to send all users in the simulator + + + + Send an avatar back to their home location + + Key of avatar to send home + + + + Begin the region restart process + + + + + Cancels a region restart + + + + Estate panel "Region" tab settings + + + Estate panel "Debug" tab settings + + + Used for setting the region's terrain textures for its four height levels + + + + + + + Used for setting sim terrain texture heights + + + Requests the estate covenant + + + + Upload a terrain RAW file + + A byte array containing the encoded terrain data + The name of the file being uploaded + The Id of the transfer request + + + + Teleports all users home in current Estate + + + + + Remove estate manager + Key of Agent to Remove + removes manager to this estate and all others owned by the estate owner + + + + Add estate manager + Key of Agent to Add + Add agent as manager to this estate and all others owned by the estate owner + + + + Add's an agent to the estate Allowed list + Key of Agent to Add + Add agent as an allowed reisdent to All estates if true + + + + Removes an agent from the estate Allowed list + Key of Agent to Remove + Removes agent as an allowed reisdent from All estates if true + + + + + Add's a group to the estate Allowed list + Key of Group to Add + Add Group as an allowed group to All estates if true + + + + + Removes a group from the estate Allowed list + Key of Group to Remove + Removes Group as an allowed Group from All estates if true + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Used in the ReportType field of a LandStatRequest + + + Used by EstateOwnerMessage packets + + + Used by EstateOwnerMessage packets + + + + + + + + No flags set + + + Only return targets scripted objects + + + Only return targets objects if on others land + + + Returns target's scripted objects and objects on other parcels + + + Ground texture settings for each corner of the region + + + Used by GroundTextureHeightSettings + + + The high and low texture thresholds for each corner of the sim + + + Raised on LandStatReply when the report type is for "top colliders" + + + Construct a new instance of the TopCollidersReplyEventArgs class + The number of returned items in LandStatReply + Dictionary of Object UUIDs to tasks returned in LandStatReply + + + + The number of returned items in LandStatReply + + + + + A Dictionary of Object UUIDs to tasks returned in LandStatReply + + + + Raised on LandStatReply when the report type is for "top Scripts" + + + Construct a new instance of the TopScriptsReplyEventArgs class + The number of returned items in LandStatReply + Dictionary of Object UUIDs to tasks returned in LandStatReply + + + + The number of scripts returned in LandStatReply + + + + + A Dictionary of Object UUIDs to tasks returned in LandStatReply + + + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateBansReplyEventArgs class + The estate's identifier on the grid + The number of returned items in LandStatReply + User UUIDs banned + + + + The identifier of the estate + + + + + The number of returned itmes + + + + + List of UUIDs of Banned Users + + + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateUsersReplyEventArgs class + The estate's identifier on the grid + The number of users + Allowed users UUIDs + + + + The identifier of the estate + + + + + The number of returned items + + + + + List of UUIDs of Allowed Users + + + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateGroupsReplyEventArgs class + The estate's identifier on the grid + The number of Groups + Allowed Groups UUIDs + + + + The identifier of the estate + + + + + The number of returned items + + + + + List of UUIDs of Allowed Groups + + + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateManagersReplyEventArgs class + The estate's identifier on the grid + The number of Managers + Managers UUIDs + + + + The identifier of the estate + + + + + The number of returned items + + + + + List of UUIDs of the Estate's Managers + + + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateCovenantReplyEventArgs class + The Covenant ID + The timestamp + The estate's name + The Estate Owner's ID (can be a GroupID) + + + + The Covenant + + + + + The timestamp + + + + + The Estate name + + + + + The Estate Owner's ID (can be a GroupID) + + + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateUpdateInfoReplyEventArgs class + The estate's name + The Estate Owners ID (can be a GroupID) + The estate's identifier on the grid + + + + + The estate's name + + + + + The Estate Owner's ID (can be a GroupID) + + + + + The identifier of the estate on the grid + + + + + + + + Image width + + + + + Image height + + + + + Image channel flags + + + + + Red channel data + + + + + Green channel data + + + + + Blue channel data + + + + + Alpha channel data + + + + + Bump channel data + + + + + Create a new blank image + + width + height + channel flags + + + + + + + + + + Convert the channels in the image. Channels are created or destroyed as required. + + new channel flags + + + + Resize or stretch the image using nearest neighbor (ugly) resampling + + new width + new height + + + + Create a byte array containing 32-bit RGBA data with a bottom-left + origin, suitable for feeding directly into OpenGL + + A byte array containing raw texture data + + + + Represents an AssetScriptBinary object containing the + LSO compiled bytecode of an LSL script + + + + Initializes a new instance of an AssetScriptBinary object + + + Initializes a new instance of an AssetScriptBinary object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + + TODO: Encodes a scripts contents into a LSO Bytecode file + + + + + TODO: Decode LSO Bytecode into a string + + true + + + Override the base classes AssetType + + + + + + + + + An instance of DelegateWrapper which calls InvokeWrappedDelegate, + which in turn calls the DynamicInvoke method of the wrapped + delegate + + + + + Callback used to call EndInvoke on the asynchronously + invoked DelegateWrapper + + + + + Executes the specified delegate with the specified arguments + asynchronously on a thread pool thread + + + + + + + Invokes the wrapped delegate synchronously + + + + + + + Calls EndInvoke on the wrapper and Close on the resulting WaitHandle + to prevent resource leaks + + + + + + Delegate to wrap another delegate and its arguments + + + + + + + Checks the instance back into the object pool + + + + + Returns an instance of the class that has been checked out of the Object Pool. + + + + + Creates a new instance of the ObjectPoolBase class. Initialize MUST be called + after using this constructor. + + + + + Creates a new instance of the ObjectPool Base class. + + The object pool is composed of segments, which + are allocated whenever the size of the pool is exceeded. The number of items + in a segment should be large enough that allocating a new segmeng is a rare + thing. For example, on a server that will have 10k people logged in at once, + the receive buffer object pool should have segment sizes of at least 1000 + byte arrays per segment. + + The minimun number of segments that may exist. + Perform a full GC.Collect whenever a segment is allocated, and then again after allocation to compact the heap. + The frequency which segments are checked to see if they're eligible for cleanup. + + + + Forces the segment cleanup algorithm to be run. This method is intended + primarly for use from the Unit Test libraries. + + + + + Responsible for allocate 1 instance of an object that will be stored in a segment. + + An instance of whatever objec the pool is pooling. + + + + Checks in an instance of T owned by the object pool. This method is only intended to be called + by the WrappedObject class. + + The segment from which the instance is checked out. + The instance of T to check back into the segment. + + + + Checks an instance of T from the pool. If the pool is not sufficient to + allow the checkout, a new segment is created. + + A WrappedObject around the instance of T. To check + the instance back into the segment, be sureto dispose the WrappedObject + when finished. + + + + The total number of segments created. Intended to be used by the Unit Tests. + + + + + The number of items that are in a segment. Items in a segment + are all allocated at the same time, and are hopefully close to + each other in the managed heap. + + + + + The minimum number of segments. When segments are reclaimed, + this number of segments will always be left alone. These + segments are allocated at startup. + + + + + The age a segment must be before it's eligible for cleanup. + This is used to prevent thrash, and typical values are in + the 5 minute range. + + + + + The frequence which the cleanup thread runs. This is typically + expected to be in the 5 minute range. + + + + Size of the byte array used to store raw packet data + + + Raw packet data buffer + + + Length of the data to transmit + + + EndPoint of the remote host + + + + Create an allocated UDP packet buffer for receiving a packet + + + + + Create an allocated UDP packet buffer for sending a packet + + EndPoint of the remote host + + + + Create an allocated UDP packet buffer for sending a packet + + EndPoint of the remote host + Size of the buffer to allocate for packet data + + + + Object pool for packet buffers. This is used to allocate memory for all + incoming and outgoing packets, and zerocoding buffers for those packets + + + + + Initialize the object pool in client mode + + Server to connect to + + + + + + Initialize the object pool in server mode + + + + + + + Returns a packet buffer with EndPoint set if the buffer is in + client mode, or with EndPoint set to null in server mode + + Initialized UDPPacketBuffer object + + + + Default constructor + + + + + Check a packet buffer out of the pool + + A packet buffer object + + + + Static pre-defined animations available to all agents + + + + Agent with afraid expression on face + + + Agent aiming a bazooka (right handed) + + + Agent aiming a bow (left handed) + + + Agent aiming a hand gun (right handed) + + + Agent aiming a rifle (right handed) + + + Agent with angry expression on face + + + Agent hunched over (away) + + + Agent doing a backflip + + + Agent laughing while holding belly + + + Agent blowing a kiss + + + Agent with bored expression on face + + + Agent bowing to audience + + + Agent brushing himself/herself off + + + Agent in busy mode + + + Agent clapping hands + + + Agent doing a curtsey bow + + + Agent crouching + + + Agent crouching while walking + + + Agent crying + + + Agent unanimated with arms out (e.g. setting appearance) + + + Agent re-animated after set appearance finished + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent on ground unanimated + + + Agent boozing it up + + + Agent with embarassed expression on face + + + Agent with afraid expression on face + + + Agent with angry expression on face + + + Agent with bored expression on face + + + Agent crying + + + Agent showing disdain (dislike) for something + + + Agent with embarassed expression on face + + + Agent with frowning expression on face + + + Agent with kissy face + + + Agent expressing laughgter + + + Agent with open mouth + + + Agent with repulsed expression on face + + + Agent expressing sadness + + + Agent shrugging shoulders + + + Agent with a smile + + + Agent expressing surprise + + + Agent sticking tongue out + + + Agent with big toothy smile + + + Agent winking + + + Agent expressing worry + + + Agent falling down + + + Agent walking (feminine version) + + + Agent wagging finger (disapproval) + + + I'm not sure I want to know + + + Agent in superman position + + + Agent in superman position + + + Agent greeting another + + + Agent holding bazooka (right handed) + + + Agent holding a bow (left handed) + + + Agent holding a handgun (right handed) + + + Agent holding a rifle (right handed) + + + Agent throwing an object (right handed) + + + Agent in static hover + + + Agent hovering downward + + + Agent hovering upward + + + Agent being impatient + + + Agent jumping + + + Agent jumping with fervor + + + Agent point to lips then rear end + + + Agent landing from jump, finished flight, etc + + + Agent laughing + + + Agent landing from jump, finished flight, etc + + + Agent sitting on a motorcycle + + + + + + Agent moving head side to side + + + Agent moving head side to side with unhappy expression + + + Agent taunting another + + + + + + Agent giving peace sign + + + Agent pointing at self + + + Agent pointing at another + + + Agent preparing for jump (bending knees) + + + Agent punching with left hand + + + Agent punching with right hand + + + Agent acting repulsed + + + Agent trying to be Chuck Norris + + + Rocks, Paper, Scissors 1, 2, 3 + + + Agent with hand flat over other hand + + + Agent with fist over other hand + + + Agent with two fingers spread over other hand + + + Agent running + + + Agent appearing sad + + + Agent saluting + + + Agent shooting bow (left handed) + + + Agent cupping mouth as if shouting + + + Agent shrugging shoulders + + + Agent in sit position + + + Agent in sit position (feminine) + + + Agent in sit position (generic) + + + Agent sitting on ground + + + Agent sitting on ground + + + + + + Agent sleeping on side + + + Agent smoking + + + Agent inhaling smoke + + + + + + Agent taking a picture + + + Agent standing + + + Agent standing up + + + Agent standing + + + Agent standing + + + Agent standing + + + Agent standing + + + Agent stretching + + + Agent in stride (fast walk) + + + Agent surfing + + + Agent acting surprised + + + Agent striking with a sword + + + Agent talking (lips moving) + + + Agent throwing a tantrum + + + Agent throwing an object (right handed) + + + Agent trying on a shirt + + + Agent turning to the left + + + Agent turning to the right + + + Agent typing + + + Agent walking + + + Agent whispering + + + Agent whispering with fingers in mouth + + + Agent winking + + + Agent winking + + + Agent worried + + + Agent nodding yes + + + Agent nodding yes with happy face + + + Agent floating with legs and arms crossed + + + + A dictionary containing all pre-defined animations + + A dictionary containing the pre-defined animations, + where the key is the animations ID, and the value is a string + containing a name to identify the purpose of the animation + + + + Represents an that represents an avatars body ie: Hair, Etc. + + + + Initializes a new instance of an AssetBodyPart object + + + Initializes a new instance of an AssetBodyPart object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + Initializes a new instance of an AssetBodyPart object with parameters + A string representing the values of the Bodypart + + + Override the base classes AssetType + + + + Archives assets + + + + + Archive assets + + + + + Archive the assets given to this archiver to the given archive. + + + + + + Write an assets metadata file to the given archive + + + + + + Write asset data files to the given archive + + + + + + + + + + OK + + + Transfer completed + + + + + + + + + Unknown error occurred + + + Equivalent to a 404 error + + + Client does not have permission for that resource + + + Unknown status + + + + + + + + + + + Unknown + + + Virtually all asset transfers use this channel + + + + + + + + + + + Asset from the asset server + + + Inventory item + + + Estate asset, such as an estate covenant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Image file format + + + + + + + + + Number of milliseconds passed since the last transfer + packet was received + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Number of milliseconds to wait for a transfer header packet if out of order data was received + + + The event subscribers. null if no subcribers + + + Raises the XferReceived event + A XferReceivedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the AssetUploaded event + A AssetUploadedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the UploadProgress event + A UploadProgressEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the InitiateDownload event + A InitiateDownloadEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ImageReceiveProgress event + A ImageReceiveProgressEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Texture download cache + + + + Default constructor + + A reference to the GridClient object + + + + Request an asset download + + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + The callback to fire when the simulator responds with the asset data + + + + Request an asset download + + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + Source location of the requested asset + The callback to fire when the simulator responds with the asset data + + + + Request an asset download + + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + Source location of the requested asset + UUID of the transaction + The callback to fire when the simulator responds with the asset data + + + + Request an asset download through the almost deprecated Xfer system + + Filename of the asset to request + Whether or not to delete the asset + off the server after it is retrieved + Use large transfer packets or not + UUID of the file to request, if filename is + left empty + Asset type of vFileID, or + AssetType.Unknown if filename is not empty + Sets the FilePath in the request to Cache + (4) if true, otherwise Unknown (0) is used + + + + + + + Use UUID.Zero if you do not have the + asset ID but have all the necessary permissions + The item ID of this asset in the inventory + Use UUID.Zero if you are not requesting an + asset from an object inventory + The owner of this asset + Asset type + Whether to prioritize this asset download or not + + + + + Used to force asset data into the PendingUpload property, ie: for raw terrain uploads + + An AssetUpload object containing the data to upload to the simulator + + + + Request an asset be uploaded to the simulator + + The Object containing the asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired + + + + Request an asset be uploaded to the simulator + + The of the asset being uploaded + A byte array containing the encoded asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired + + + + Request an asset be uploaded to the simulator + + + Asset type to upload this data as + A byte array containing the encoded asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired + + + + Initiate an asset upload + + The ID this asset will have if the + upload succeeds + Asset type to upload this data as + Raw asset data to upload + Whether to store this asset on the local + simulator or the grid-wide asset server + The tranaction id for the upload + The transaction ID of this transfer + + + + Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + A float indicating the requested priority for the transfer. Higher priority values tell the simulator + to prioritize the request before lower valued requests. An image already being transferred using the can have + its priority changed by resending the request with the new priority value + Number of quality layers to discard. + This controls the end marker of the data sent. Sending with value -1 combined with priority of 0 cancels an in-progress + transfer. + A bug exists in the Linden Simulator where a -1 will occasionally be sent with a non-zero priority + indicating an off-by-one error. + The packet number to begin the request at. A value of 0 begins the request + from the start of the asset texture + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request + + Request an image and fire a callback when the request is complete + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); + + private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", + asset.AssetID, + asset.AssetData.Length); + } + } + + Request an image and use an inline anonymous method to handle the downloaded texture data + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, delegate(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", + asset.AssetID, + asset.AssetData.Length); + } + } + ); + + Request a texture, decode the texture to a bitmap image and apply it to a imagebox + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); + + private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + ManagedImage imgData; + Image bitmap; + + if (state == TextureRequestState.Finished) + { + OpenJPEG.DecodeToImage(assetTexture.AssetData, out imgData, out bitmap); + picInsignia.Image = bitmap; + } + } + } + + + + + + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + + + + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + + + + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request + + + + Cancel a texture request + + The texture assets + + + + Lets TexturePipeline class fire the progress event + + The texture ID currently being downloaded + the number of bytes transferred + the total number of bytes expected + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the simulator responds sends + + + Raised during upload completes + + + Raised during upload with progres update + + + Fired when the simulator sends an InitiateDownloadPacket, used to download terrain .raw files + + + Fired when a texture is in the process of being downloaded by the TexturePipeline class + + + + Callback used for various asset download requests + + Transfer information + Downloaded asset, null on fail + + + + Callback used upon competition of baked texture upload + + Asset UUID of the newly uploaded baked texture + + + Xfer data + + + Upload data + + + Filename used on the simulator + + + Filename used by the client + + + UUID of the image that is in progress + + + Number of bytes received so far + + + Image size in bytes + - - - Construct a new instance of the SoundManager class, used for playing and receiving - sound assets - - A reference to the current GridClient instance - The event subscribers, null of no subscribers + + Raises the AttachedSound Event + A AttachedSoundEventArgs object containing + the data sent from the simulator + Thread sync lock object The event subscribers, null of no subscribers + + Raises the AttachedSoundGainChange Event + A AttachedSoundGainChangeEventArgs object containing + the data sent from the simulator + Thread sync lock object The event subscribers, null of no subscribers + + Raises the SoundTrigger Event + A SoundTriggerEventArgs object containing + the data sent from the simulator + Thread sync lock object The event subscribers, null of no subscribers + + Raises the PreloadSound Event + A PreloadSoundEventArgs object containing + the data sent from the simulator + Thread sync lock object - - Raised when the simulator sends us data containing - sound - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raises the AttachedSound Event - A AttachedSoundEventArgs object containing - the data sent from the simulator - - - Raises the AttachedSoundGainChange Event - A AttachedSoundGainChangeEventArgs object containing - the data sent from the simulator - - - Raises the SoundTrigger Event - A SoundTriggerEventArgs object containing - the data sent from the simulator - - - Raises the PreloadSound Event - A PreloadSoundEventArgs object containing - the data sent from the simulator + + + Construct a new instance of the SoundManager class, used for playing and receiving + sound assets + + A reference to the current GridClient instance @@ -16852,36 +11102,50 @@ The sender The EventArgs object containing the packet data + + Raised when the simulator sends us data containing + sound + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + - Provides data for the event - The event occurs when the simulator sends + Provides data for the event + The event occurs when the simulator sends the sound data which emits from an agents attachment - The following code example shows the process to subscribe to the event + The following code example shows the process to subscribe to the event and a stub to handle the data passed from the simulator - // Subscribe to the AttachedSound event - Client.Sound.AttachedSound += Sound_AttachedSound; - // process the data raised in the event here - private void Sound_AttachedSound(object sender, AttachedSoundEventArgs e) - { - // ... Process AttachedSoundEventArgs here ... - } - + // Subscribe to the AttachedSound event + Client.Sound.AttachedSound += Sound_AttachedSound; + + // process the data raised in the event here + private void Sound_AttachedSound(object sender, AttachedSoundEventArgs e) + { + // ... Process AttachedSoundEventArgs here ... + } + + - + Construct a new instance of the SoundTriggerEventArgs class - Simulator where the event originated The sound asset id The ID of the owner The ID of the object The volume level - The - - - Simulator where the event originated + The Get the sound asset id @@ -16896,24 +11160,20 @@ Get the volume level - Get the + Get the - Provides data for the event - The event occurs when an attached sound + Provides data for the event + The event occurs when an attached sound changes its volume level - + Construct a new instance of the AttachedSoundGainChangedEventArgs class - Simulator where the event originated The ID of the Object The new volume level - - Simulator where the event originated - Get the ID of the Object @@ -16921,35 +11181,37 @@ Get the volume level - Provides data for the event - - The event occurs when the simulator forwards - a request made by yourself or another agent to play either an asset sound or a built in sound - Requests to play sounds where the is not one of the built-in - will require sending a request to download the sound asset before it can be played - - - The following code example uses the , - and - properties to display some information on a sound request on the window. - - // subscribe to the event - Client.Sound.SoundTrigger += Sound_SoundTrigger; - // play the pre-defined BELL_TING sound - Client.Sound.SendSoundTrigger(Sounds.BELL_TING); - // handle the response data - private void Sound_SoundTrigger(object sender, SoundTriggerEventArgs e) - { - Console.WriteLine("{0} played the sound {1} at volume {2}", - e.OwnerID, e.SoundID, e.Gain); - } - + Provides data for the event + The event occurs when the simulator forwards + a request made by yourself or another agent to play either an asset sound or a built in sound + + Requests to play sounds where the is not one of the built-in + will require sending a request to download the sound asset before it can be played + + + The following code example uses the , + and + properties to display some information on a sound request on the window. + + // subscribe to the event + Client.Sound.SoundTrigger += Sound_SoundTrigger; + + // play the pre-defined BELL_TING sound + Client.Sound.SendSoundTrigger(Sounds.BELL_TING); + + // handle the response data + private void Sound_SoundTrigger(object sender, SoundTriggerEventArgs e) + { + Console.WriteLine("{0} played the sound {1} at volume {2}", + e.OwnerID, e.SoundID, e.Gain); + } + + - + Construct a new instance of the SoundTriggerEventArgs class - Simulator where the event originated The sound asset id The ID of the owner The ID of the object @@ -16958,9 +11220,6 @@ The regionhandle The source position - - Simulator where the event originated - Get the sound asset id @@ -16983,34 +11242,32 @@ Get the source position - Provides data for the event - The event occurs when the simulator sends + Provides data for the event + The event occurs when the simulator sends the appearance data for an avatar - The following code example uses the and - properties to display the selected shape of an avatar on the window. + The following code example uses the and + properties to display the selected shape of an avatar on the window. - // subscribe to the event - Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; - // handle the data when the event is raised - void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) - { - Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") - } - + // subscribe to the event + Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; + + // handle the data when the event is raised + void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) + { + Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") + } + + - + Construct a new instance of the PreloadSoundEventArgs class - Simulator where the event originated The sound asset id The ID of the owner The ID of the object - - Simulator where the event originated - Get the sound asset id @@ -17020,4585 +11277,302 @@ Get the ID of the Object - + - pre-defined built in sounds + Class for controlling various system settings. + + Some values are readonly because they affect things that + happen when the GridClient object is initialized, so changing them at + runtime won't do any good. Non-readonly values may affect things that + happen at login or dynamically + + + Main grid login server + + + Beta grid login server + + + + InventoryManager requests inventory information on login, + GridClient initializes an Inventory store for main inventory. - + + InventoryManager requests library information on login, + GridClient initializes an Inventory store for the library. - + + Number of milliseconds between sending pings to each sim + + + Number of milliseconds between sending camera updates + + + Number of milliseconds between updating the current + positions of moving, non-accelerating and non-colliding objects + + + Millisecond interval between ticks, where all ACKs are + sent out and the age of unACKed packets is checked + + + The initial size of the packet inbox, where packets are + stored before processing + + + Maximum size of packet that we want to send over the wire + + + The maximum value of a packet sequence number before it + rolls over back to one + + + The maximum size of the sequence number archive, used to + check for resent and/or duplicate packets + + + The relative directory where external resources are kept + + + Login server to connect to + + + IP Address the client will bind to + + + Use XML-RPC Login or LLSD Login, default is XML-RPC Login + + + Number of milliseconds before an asset transfer will time + out + + + Number of milliseconds before a teleport attempt will time + out + + + Number of milliseconds before NetworkManager.Logout() will + time out + + + Number of milliseconds before a CAPS call will time out + Setting this too low will cause web requests time out and + possibly retry repeatedly + + + Number of milliseconds for xml-rpc to timeout + + + Milliseconds before a packet is assumed lost and resent + + + Milliseconds without receiving a packet before the + connection to a simulator is assumed lost + + + Milliseconds to wait for a simulator info request through + the grid interface + + + Maximum number of queued ACKs to be sent before SendAcks() + is forced + + + Network stats queue length (seconds) + + + Enable to process packets synchronously, where all of the + callbacks for each packet must return before the next packet is + processed + This is an experimental feature and is not completely + reliable yet. Ideally it would reduce context switches and thread + overhead, but several calls currently block for a long time and + would need to be rewritten as asynchronous code before this is + feasible + + + Enable/disable storing terrain heightmaps in the + TerrainManager + + + Enable/disable sending periodic camera updates + + + Enable/disable automatically setting agent appearance at + login and after sim crossing + + + Enable/disable automatically setting the bandwidth throttle + after connecting to each simulator + The default throttle uses the equivalent of the maximum + bandwidth setting in the official client. If you do not set a + throttle your connection will by default be throttled well below + the minimum values and you may experience connection problems + + + Enable/disable the sending of pings to monitor lag and + packet loss + + + Should we connect to multiple sims? This will allow + viewing in to neighboring simulators and sim crossings + (Experimental) + + + If true, all object update packets will be decoded in to + native objects. If false, only updates for our own agent will be + decoded. Registering an event handler will force objects for that + type to always be decoded. If this is disabled the object tracking + will have missing or partial prim and avatar information + + + If true, when a cached object check is received from the + server the full object info will automatically be requested + + + Whether to establish connections to HTTP capabilities + servers for simulators + + + Whether to decode sim stats + + + The capabilities servers are currently designed to + periodically return a 502 error which signals for the client to + re-establish a connection. Set this to true to log those 502 errors + + + If true, any reference received for a folder or item + the library is not aware of will automatically be fetched + + + If true, and SEND_AGENT_UPDATES is true, + AgentUpdate packets will continuously be sent out to give the bot + smoother movement and autopiloting + + + If true, currently visible avatars will be stored + in dictionaries inside Simulator.ObjectAvatars. + If false, a new Avatar or Primitive object will be created + each time an object update packet is received + + + If true, currently visible avatars will be stored + in dictionaries inside Simulator.ObjectPrimitives. + If false, a new Avatar or Primitive object will be created + each time an object update packet is received + + + If true, position and velocity will periodically be + interpolated (extrapolated, technically) for objects and + avatars that are being tracked by the library. This is + necessary to increase the accuracy of speed and position + estimates for simulated objects + + + If true, utilization statistics will be tracked. There is a minor penalty + in CPU time for enabling this option. - + + If true, parcel details will be stored in the + Simulator.Parcels dictionary as they are received + + + If true, an incoming parcel properties reply will automatically send + a request for the parcel access list - + + if true, an incoming parcel properties reply will automatically send + a request for the traffic count. - + + If true, images, and other assets downloaded from the server + will be cached in a local directory - + + Path to store cached texture data + + + Maximum size cached files are allowed to take on disk (bytes) + + + Default color used for viewer particle effects + + + Maximum number of times to resend a failed packet + + + Throttle outgoing packet rate + + + UUID of a texture used by some viewers to indentify type of client used + + + The maximum number of concurrent texture downloads allowed + Increasing this number will not necessarily increase texture retrieval times due to + simulator throttles + + + The Refresh timer inteval is used to set the delay between checks for stalled texture downloads + + This is a static variable which applies to all instances + + + + Textures taking longer than this value will be flagged as timed out and removed from the pipeline - + + Get or set the minimum log level to output to the console by default + + If the library is not compiled with DEBUG defined and this level is set to DEBUG + You will get no output on the console. This behavior can be overriden by creating + a logger configuration file for log4net - - - + + Attach avatar names to log messages - - coins + + Log packet retransmission info - - cash register bell + + Constructor + Reference to a GridClient object - - - - - - - - - - rubber - - - plastic - - - flesh - - - wood splintering? - - - glass break - - - metal clunk - - - whoosh - - - shake - - - - - - - ding - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A dictionary containing all pre-defined sounds - - A dictionary containing the pre-defined sounds, - where the key is the sounds ID, and the value is a string - containing a name to identify the purpose of the sound - - - X position of this patch - - - Y position of this patch - - - A 16x16 array of floats holding decompressed layer data - - - - Creates a LayerData packet for compressed land data given a full - simulator heightmap and an array of indices of patches to compress - - A 256 * 256 array of floating point values - specifying the height at each meter in the simulator - Array of indexes in the 16x16 grid of patches - for this simulator. For example if 1 and 17 are specified, patches - x=1,y=0 and x=1,y=1 are sent - - - - - - Add a patch of terrain to a BitPacker - - BitPacker to write the patch to - Heightmap of the simulator, must be a 256 * - 256 float array - X offset of the patch to create, valid values are - from 0 to 15 - Y offset of the patch to create, valid values are - from 0 to 15 - - - - Default constructor - - - - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - Raised when the simulator responds sends - - - Raises the LandPatchReceived event - A LandPatchReceivedEventArgs object containing the - data returned from the simulator - - - Simulator from that sent tha data - - - Sim coordinate of the patch - - - Sim coordinate of the patch - - - Size of tha patch - - - Heightmap for the patch - - - - The current status of a texture request as it moves through the pipeline or final result of a texture request. - - - - The initial state given to a request. Requests in this state - are waiting for an available slot in the pipeline - - - A request that has been added to the pipeline and the request packet - has been sent to the simulator - - - A request that has received one or more packets back from the simulator - - - A request that has received all packets back from the simulator - - - A request that has taken longer than - to download OR the initial packet containing the packet information was never received - - - The texture request was aborted by request of the agent - - - The simulator replied to the request that it was not able to find the requested texture - - - - Texture request download handler, allows a configurable number of download slots which manage multiple - concurrent texture downloads from the - This class makes full use of the internal - system for full texture downloads. - - - - Default constructor, Instantiates a new copy of the TexturePipeline class - - Reference to the instantiated object - - - - A request task containing information and status of a request as it is processed through the - - - The current which identifies the current status of the request - - - The Unique Request ID, This is also the Asset ID of the texture being requested - - - The slot this request is occupying in the threadpoolSlots array - - - The ImageType of the request. - - - The callback to fire when the request is complete, will include - the and the - object containing the result data - - - If true, indicates the callback will be fired whenever new data is returned from the simulator. - This is used to progressively render textures as portions of the texture are received. - - - An object that maintains the data of an request thats in-process. - - - A dictionary containing all pending and in-process transfer requests where the Key is both the RequestID - and also the Asset Texture ID, and the value is an object containing the current state of the request and also - the asset data as it is being re-assembled - - - Holds the reference to the client object - - - Maximum concurrent texture requests allowed at a time - - - An array of objects used to manage worker request threads - - - An array of worker slots which shows the availablity status of the slot - - - The primary thread which manages the requests. - - - true if the TexturePipeline is currently running - - - A synchronization object used by the primary thread - - - A refresh timer used to increase the priority of stalled requests - - - Current number of pending and in-process transfers - - - - Initialize callbacks required for the TexturePipeline to operate - - - - - Shutdown the TexturePipeline and cleanup any callbacks or transfers - - - - - Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - A float indicating the requested priority for the transfer. Higher priority values tell the simulator - to prioritize the request before lower valued requests. An image already being transferred using the can have - its priority changed by resending the request with the new priority value - Number of quality layers to discard. - This controls the end marker of the data sent - The packet number to begin the request at. A value of 0 begins the request - from the start of the asset texture - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - If true, the callback will be fired for each chunk of the downloaded image. - The callback asset parameter will contain all previously received chunks of the texture asset starting - from the beginning of the request - - - - Sends the actual request packet to the simulator - - The image to download - Type of the image to download, either a baked - avatar texture or a normal texture - Priority level of the download. Default is - 1,013,000.0f - Number of quality layers to discard. - This controls the end marker of the data sent - Packet number to start the download at. - This controls the start marker of the data sent - Sending a priority of 0 and a discardlevel of -1 aborts - download - - - - Cancel a pending or in process texture request - - The texture assets unique ID - - - - Master Download Thread, Queues up downloads in the threadpool - - - - - The worker thread that sends the request and handles timeouts - - A object containing the request details - - - - Handle responses from the simulator that tell us a texture we have requested is unable to be located - or no longer exists. This will remove the request from the pipeline and free up a slot if one is in use - + + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - - - Handles the remaining Image data that did not fit in the initial ImageData packet - - The sender - The EventArgs object containing the packet data - - - - Handle the initial ImageDataPacket sent from the simulator - - The sender - The EventArgs object containing the packet data - - - - - - - - Delegate to wrap another delegate and its arguments - - - - - - - - - An instance of DelegateWrapper which calls InvokeWrappedDelegate, - which in turn calls the DynamicInvoke method of the wrapped - delegate - - - - - Callback used to call EndInvoke on the asynchronously - invoked DelegateWrapper - - - - - Executes the specified delegate with the specified arguments - asynchronously on a thread pool thread - - - - - - - - - Invokes the wrapped delegate synchronously - - - - - - - - - Calls EndInvoke on the wrapper and Close on the resulting WaitHandle - to prevent resource leaks - - - - - - - - - - - Initialize the UDP packet handler in server mode - - Port to listening for incoming UDP packets on - - - - Initialize the UDP packet handler in client mode - - Remote UDP server to connect to - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Thrown when a packet could not be successfully deserialized - - - - - Default constructor - - - - - Constructor that takes an additional error message - - An error message to attach to this exception - - - - The header of a message template packet. Holds packet flags, sequence - number, packet ID, and any ACKs that will be appended at the end of - the packet - - - - - Convert the AckList to a byte array, used for packet serializing - - Reference to the target byte array - Beginning position to start writing to in the byte - array, will be updated with the ending position of the ACK list - - - - - - - - - - - - - - - - - - - - - - - - - - A block of data in a packet. Packets are composed of one or more blocks, - each block containing one or more fields - - - - Current length of the data in this packet - - - - Create a block from a byte array - - Byte array containing the serialized block - Starting position of the block in the byte array. - This will point to the data after the end of the block when the - call returns - - - - Serialize this block into a byte array - - Byte array to serialize this block into - Starting position in the byte array to serialize to. - This will point to the position directly after the end of the - serialized block when the call returns - - - A generic value, not an actual packet type - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Operation to apply when applying color to texture - - - - - Information needed to translate visual param value to RGBA color - - - - - Construct VisualColorParam - - Operation to apply when applying color to texture - Colors - - - - Represents alpha blending and bump infor for a visual parameter - such as sleive length - - - - - Create new alhpa information for a visual param - - Stregth of the alpha to apply - File containing the alpha channel - Skip blending if parameter value is 0 - Use miltiply insted of alpha blending - - - Stregth of the alpha to apply - - - File containing the alpha channel - - - Skip blending if parameter value is 0 - - - Use miltiply insted of alpha blending - - - - A single visual characteristic of an avatar mesh, such as eyebrow height - - - - - Set all the values through the constructor - - Index of this visual param - Internal name - - - - - Displayable label of this characteristic - Displayable label for the minimum value of this characteristic - Displayable label for the maximum value of this characteristic - Default value - Minimum value - Maximum value - Is this param used for creation of bump layer? - Array of param IDs that are drivers for this parameter - Alpha blending/bump info - Color information - - - Index of this visual param - - - Internal name - - - Group ID this parameter belongs to - - - Name of the wearable this parameter belongs to - - - Displayable label of this characteristic - - - Displayable label for the minimum value of this characteristic - - - Displayable label for the maximum value of this characteristic - - - Default value - - - Minimum value - - - Maximum value - - - Is this param used for creation of bump layer? - - - Alpha blending/bump info - - - Color information - - - Array of param IDs that are drivers for this parameter - - - - Holds the Params array of all the avatar appearance parameters - - - - - Base class for all Asset types - - - - - Construct a new Asset object - - - - - Construct a new Asset object - - A unique specific to this asset - A byte array containing the raw asset data - - - A byte array containing the raw asset data - - - True if the asset it only stored on the server temporarily - - - A unique ID - - - The assets unique ID - - - - The "type" of asset, Notecard, Animation, etc - - - - - Regenerates the AssetData byte array from the properties - of the derived class. - - - - - Decodes the AssetData, placing it in appropriate properties of the derived - class. - - True if the asset decoding succeeded, otherwise false - - - - Constants for the archiving module - - - - - The location of the archive control file - - - - - Path for the assets held in an archive - - - - - Path for the prims file - - - - - Path for terrains. Technically these may be assets, but I think it's quite nice to split them out. - - - - - Path for region settings. - - - - - The character the separates the uuid from extension information in an archived asset filename - - - - - Extensions used for asset types in the archive - - - - - Archives assets - - - - - Archive assets - - - - - Archive the assets given to this archiver to the given archive. - - - - - - - Write an assets metadata file to the given archive - - - - - - - Write asset data files to the given archive - - - - - - - Temporary code to do the bare minimum required to read a tar archive for our purposes - - - - - Generate a tar reader which reads from the given stream. - - - - - - - Binary reader for the underlying stream - - - - - Used to trim off null chars - - - - - Used to trim off space chars - - - - - Read the next entry in the tar file. - - - - - - the data for the entry. Returns null if there are no more entries - - - - Read the next 512 byte chunk of data as a tar header. - - A tar header struct. null if we have reached the end of the archive. - - - - Read data following a header - - - - - - - - - Convert octal bytes to a decimal representation - - - - - - - - - - - - - Temporary code to produce a tar archive in tar v7 format - - - - - Binary writer for the underlying stream - - - - - Write a directory entry to the tar archive. We can only handle one path level right now! - - - - - - - Write a file to the tar archive - - - - - - - - - Write a file to the tar archive - - - - - - - - - Finish writing the raw tar archive data to a stream. The stream will be closed on completion. - - - - - Write a particular entry - - - - - - - - - - - Represents an Animation - - - - Default Constructor - - - - Construct an Asset object of type Animation - - A unique specific to this asset - A byte array containing the raw asset data - - - Override the base classes AssetType - - - - Represents an that represents an avatars body ie: Hair, Etc. - - - - Initializes a new instance of an AssetBodyPart object - - - Initializes a new instance of an AssetBodyPart object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - Override the base classes AssetType - - - - Represents an that can be worn on an avatar - such as a Shirt, Pants, etc. - - - - Initializes a new instance of an AssetScriptBinary object - - - Initializes a new instance of an AssetScriptBinary object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - Override the base classes AssetType - - - - Type of gesture step - - - - - Base class for gesture steps - - - - - Retururns what kind of gesture step this is - - - - - Describes animation step of a gesture - - - - - If true, this step represents start of animation, otherwise animation stop - - - - - Animation asset - - - - Animation inventory name - - - - - Returns what kind of gesture step this is - - - - - Describes sound step of a gesture - - - - - Sound asset - - - - Sound inventory name - - - - - Returns what kind of gesture step this is - - - - - Describes sound step of a gesture - - - - - Text to output in chat - - - - - Returns what kind of gesture step this is - - - - - Describes sound step of a gesture - - - - - If true in this step we wait for all animations to finish - - - - - If true gesture player should wait for the specified amount of time - - - - - Time in seconds to wait if WaitForAnimation is false - - - - - Returns what kind of gesture step this is - - - - - Describes the final step of a gesture - - - - - Returns what kind of gesture step this is - - - - - Represents a sequence of animations, sounds, and chat actions - - - - - Constructs guesture asset - - - - - Constructs guesture asset - - A unique specific to this asset - A byte array containing the raw asset data - - - - Keyboard key that triggers the gestyre - - - - - Modifier to the trigger key - - - - - String that triggers playing of the gesture sequence - - - - - Text that replaces trigger in chat once gesture is triggered - - - - - Sequence of gesture steps - - - - - Returns asset type - - - - - Encodes gesture asset suitable for uplaod - - - - - Decodes gesture assset into play sequence - - true if the asset data was decoded successfully - - - - Represents a Landmark with RegionID and Position vector - - - - Construct an Asset of type Landmark - - - - Construct an Asset object of type Landmark - - A unique specific to this asset - A byte array containing the raw asset data - - - UUID of the Landmark target region - - - Local position of the target - - - Override the base classes AssetType - - - - Encode the raw contents of a string with the specific Landmark format - - - - - Decode the raw asset data, populating the RegionID and Position - - true if the AssetData was successfully decoded to a UUID and Vector + + Cost of uploading an asset + Read-only since this value is dynamically fetched at login Represents a string of characters encoded with specific formatting properties + + A text string containing main text of the notecard + + + List of s embedded on the notecard + Construct an Asset of type Notecard @@ -21606,17 +11580,14 @@ Construct an Asset object of type Notecard - A unique specific to this asset + A unique specific to this asset A byte array containing the raw asset data - - A text string containing main text of the notecard - - - List of s embedded on the notecard - - - Override the base classes AssetType + + + Construct an Asset object of type Notecard + + A text string containing the main body text of the notecard @@ -21629,569 +11600,2351 @@ true if the AssetData was successfully decoded - - - A linkset asset, containing a parent primitive and zero or more children - - - - Initializes a new instance of an AssetPrim object - - - - Initializes a new instance of an AssetPrim object - - A unique specific to this asset - A byte array containing the raw asset data - - - - Only used internally for XML serialization/deserialization - - - + Override the base classes AssetType - + + Capabilities is the name of the bi-directional HTTP REST protocol + used to communicate non real-time transactions such as teleporting or + group messaging - - - - - + + Reference to the simulator this system is connected to - - - The deserialized form of a single primitive in a linkset asset - - - - - Represents an AssetScriptBinary object containing the - LSO compiled bytecode of an LSL script - - - - Initializes a new instance of an AssetScriptBinary object - - - Initializes a new instance of an AssetScriptBinary object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - Override the base classes AssetType - - - - TODO: Encodes a scripts contents into a LSO Bytecode file - - - - - TODO: Decode LSO Bytecode into a string - - true - - - - Represents an LSL Text object containing a string of UTF encoded characters - - - - Initializes a new AssetScriptText object - - - - Initializes a new AssetScriptText object with parameters - - A unique specific to this asset - A byte array containing the raw asset data - - - A string of characters represting the script contents - - - Override the base classes AssetType - - - - Encode a string containing the scripts contents into byte encoded AssetData - - - - - Decode a byte array containing the scripts contents into a string - - true if decoding is successful - - - - Represents a Sound Asset - - - - Initializes a new instance of an AssetSound object - - - Initializes a new instance of an AssetSound object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - Override the base classes AssetType - - - - TODO: Encodes a sound file - - - - - TODO: Decode a sound file - - true - - - - Represents a texture - - - - Initializes a new instance of an AssetTexture object - - - - Initializes a new instance of an AssetTexture object - - A unique specific to this asset - A byte array containing the raw asset data - - - - Initializes a new instance of an AssetTexture object - - A object containing texture data - - - A object containing image data - - - - - - - - - - - Override the base classes AssetType - - - - Populates the byte array with a JPEG2000 - encoded image created from the data in - - - - Decodes the JPEG2000 data in AssetData to the - object - True if the decoding was successful, otherwise false - - - - Decodes the begin and end byte positions for each quality layer in - the image - - - - - - - Represents a Wearable Asset, Clothing, Hair, Skin, Etc - - - - Initializes a new instance of an AssetWearable object - - - Initializes a new instance of an AssetWearable object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - A string containing the name of the asset - - - A string containing a short description of the asset - - - The Assets WearableType - - - The For-Sale status of the object - - - An Integer representing the purchase price of the asset - - - The of the assets creator - - - The of the assets current owner - - - The of the assets prior owner - - - The of the Group this asset is set to - - - True if the asset is owned by a - - - The Permissions mask of the asset - - - A Dictionary containing Key/Value pairs of the objects parameters - - - A Dictionary containing Key/Value pairs where the Key is the textures Index and the Value is the Textures - - - - Decode an assets byte encoded data to a string - - true if the asset data was decoded successfully - - - - Encode the assets string represantion into a format consumable by the asset server - - - - = - - - Number of times we've received an unknown CAPS exception in series. - - - For exponential backoff on error. - - - - A set of textures that are layered on texture of each other and "baked" - in to a single texture, for avatar appearances - - - + Default constructor - Bake type + + - - Final baked texture - - - Component layers - - - Width of the final baked image and scratchpad - - - Height of the final baked image and scratchpad - - - Bake type - - - Final baked texture - - - Component layers - - - Width of the final baked image and scratchpad - - - Height of the final baked image and scratchpad - - - Bake type - - - Is this one of the 3 skin bakes - - + - Adds layer for baking + Request the URI of a named capability - TexturaData struct that contains texture and its params + Name of the capability to request + The URI of the requested capability, or String.Empty if + the capability does not exist - + - Converts avatar texture index (face) to Bake type + Process any incoming events, check to see if we have a message created for the event, - Face number (AvatarTextureIndex) - BakeType, layer to which this texture belongs to + + - + + Capabilities URI this system was initialized with + + + Whether the capabilities event queue is connected and + listening for incoming events + + - Make sure images exist, resize source if needed to match the destination + Triggered when an event is received via the EventQueueGet + capability - Destination image - Source image - Sanitization was succefull + Event name + Decoded event data + The simulator that generated the event - + - Fills a baked layer as a solid *appearing* color. The colors are - subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from - compressing it too far since it seems to cause upload failures if - the image is a pure solid color - - Color of the base of this layer - - - - Fills a baked layer as a solid *appearing* color. The colors are - subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from - compressing it too far since it seems to cause upload failures if - the image is a pure solid color - - Red value - Green value - Blue value - - - - Create a new blank image - - width - height - channel flags - - - - - - - - - - Image width + Level of Detail mesh - + - Image height + Return a decoded capabilities message as a strongly typed object + + A string containing the name of the capabilities message key + An to decode + A strongly typed object containing the decoded information from the capabilities message, or null + if no existing Message object exists for the specified event + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - Image channel flags + - + + + + + + + + + + + + + - Red channel data + + + + + + + + - + + + + + + + + + + + + + - Green channel data + + + + + + + + - + + + + + + + + + + + + + + + + + + + - Blue channel data + - + + + + + + + + + + + + + + + + - Alpha channel data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - Bump channel data + + + + + + + + + + + + + + + + + + + + + - - - Convert the channels in the image. Channels are created or destroyed as required. - - new channel flags + + - - - Resize or stretch the image using nearest neighbor (ugly) resampling - - new width - new height + + - - - Create a byte array containing 32-bit RGBA data with a bottom-left - origin, suitable for feeding directly into OpenGL - - A byte array containing raw texture data + + - + + + + + + + + + + + + + - A Wrapper around openjpeg to encode and decode images to and from byte arrays + Login Request Parameters - + + The URL of the Login Server + + + The number of milliseconds to wait before a login is considered + failed due to timeout + + + The request method + login_to_simulator is currently the only supported method + + + The Agents First name + + + The Agents Last name + + + A md5 hashed password + plaintext password will be automatically hashed + + + The agents starting location once logged in + Either "last", "home", or a string encoded URI + containing the simulator name and x/y/z coordinates e.g: uri:hooper&128&152&17 + + + A string containing the client software channel information + Second Life Release + + + The client software version information + The official viewer uses: Second Life Release n.n.n.n + where n is replaced with the current version of the viewer + + + A string containing the platform information the agent is running on + + + A string hash of the network cards Mac Address + + + Unknown or deprecated + + + A string hash of the first disk drives ID used to identify this clients uniqueness + + + A string containing the viewers Software, this is not directly sent to the login server but + instead is used to generate the Version string + + + A string representing the software creator. This is not directly sent to the login server but + is used by the library to generate the Version information + + + If true, this agent agrees to the Terms of Service of the grid its connecting to + + + Unknown + + + An array of string sent to the login server to enable various options + + + A randomly generated ID to distinguish between login attempts. This value is only used + internally in the library and is never sent over the wire + + - Defines the beginning and ending file positions of a layer in an - LRCP-progression JPEG2000 file + The decoded data returned from the login server after a successful login - + + true, false, indeterminate + + + Login message of the day + + + M or PG, also agent_region_access and agent_access_max + + - This structure is used to marshal both encoded and decoded images. - MUST MATCH THE STRUCT IN dotnet.h! + Parse LLSD Login Reply Data + + An + contaning the login response data + XML-RPC logins do not require this as XML-RPC.NET + automatically populates the struct properly using attributes + + + Sort by name + + + Sort by date + + + Sort folders by name, regardless of whether items are + sorted by name or date + + + Place system folders at the top + + + + Possible destinations for DeRezObject request - + + + + + Copy from in-world to agent inventory + + + Derez to TaskInventory + + + + + + Take Object + + + + + + Delete Object + + + Put an avatar attachment into agent inventory + + + + + + Return an object back to the owner's inventory + + + Return a deeded object back to the last owner's inventory + + - Information about a single packet in a JPEG2000 stream + Upper half of the Flags field for inventory items - - Packet start position + + Indicates that the NextOwner permission will be set to the + most restrictive set of permissions found in the object set + (including linkset items and object inventory items) on next rez - - Packet header end position + + Indicates that the object sale information has been + changed - - Packet end position + + If set, and a slam bit is set, indicates BaseMask will be overwritten on Rez - - TGA Header size + + If set, and a slam bit is set, indicates OwnerMask will be overwritten on Rez - - OpenJPEG is not threadsafe, so this object is used to lock - during calls into unmanaged code + + If set, and a slam bit is set, indicates GroupMask will be overwritten on Rez - + + If set, and a slam bit is set, indicates EveryoneMask will be overwritten on Rez + + + If set, and a slam bit is set, indicates NextOwnerMask will be overwritten on Rez + + + Indicates whether this object is composed of multiple + items or not + + + Indicates that the asset is only referenced by this + inventory item. If this item is deleted or updated to reference a + new assetID, the asset can be deleted + + - Encode a object into a byte array - - The object to encode - true to enable lossless conversion, only useful for small images ie: sculptmaps - A byte array containing the encoded Image object - - - - Encode a object into a byte array - - The object to encode - a byte array of the encoded image - - - - Decode JPEG2000 data to an and - - JPEG2000 encoded data - ManagedImage object to decode to - Image object to decode to - True if the decode succeeds, otherwise false - - - - - - - - - - - - - - - - - - - - - - - - - - Encode a object into a byte array - - The source object to encode - true to enable lossless decoding - A byte array containing the source Bitmap object - - - - Capability to load TGAs to Bitmap + Base Class for Inventory Items - + + of item/folder + + + of parent folder + + + Name of item/folder + + + Item/Folder Owners + + - Interface requirements for Messaging system + Constructor, takes an itemID as a parameter + + The of the item + + + + + + + + + + + + + + + + Generates a number corresponding to the value of the object to support the use of a hash table, + suitable for use in hashing algorithms and data structures such as a hash table + + A Hashcode of all the combined InventoryBase fields + + + + Determine whether the specified object is equal to the current object + + InventoryBase object to compare against + true if objects are the same + + + + Determine whether the specified object is equal to the current object + + InventoryBase object to compare against + true if objects are the same + + + + An Item in Inventory - + + The of this item + + + The combined of this item + + + The type of item from + + + The type of item from the enum + + + The of the creator of this item + + + A Description of this item + + + The s this item is set to or owned by + + + If true, item is owned by a group + + + The price this item can be purchased for + + + The type of sale from the enum + + + Combined flags from + + + Time and date this inventory item was created, stored as + UTC (Coordinated Universal Time) + + + Used to update the AssetID in requests sent to the server + + + The of the previous owner of the item + + - Abstract base for rendering plugins + Construct a new InventoryItem object + + The of the item + + + + Construct a new InventoryItem object of a specific Type + + The type of item from + of the item + + + + Indicates inventory item is a link + + True if inventory item is a link to another inventory item + + + + + + + + + + + + + + + + Generates a number corresponding to the value of the object to support the use of a hash table. + Suitable for use in hashing algorithms and data structures such as a hash table + + A Hashcode of all the combined InventoryItem fields + + + + Compares an object + + The object to compare + true if comparison object matches + + + + Determine whether the specified object is equal to the current object + + The object to compare against + true if objects are the same + + + + Determine whether the specified object is equal to the current object + + The object to compare against + true if objects are the same + + + + InventoryTexture Class representing a graphical image + + + + + + Construct an InventoryTexture object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryTexture object from a serialization stream - + - Generates a basic mesh structure from a primitive + InventorySound Class representing a playable sound - Primitive to generate the mesh from - Level of detail to generate the mesh at - The generated mesh - + - Generates a basic mesh structure from a sculpted primitive and - texture + Construct an InventorySound object - Sculpted primitive to generate the mesh from - Sculpt texture - Level of detail to generate the mesh at - The generated mesh + A which becomes the + objects AssetUUID - + - Generates a series of faces, each face containing a mesh and - metadata + Construct an InventorySound object from a serialization stream - Primitive to generate the mesh from - Level of detail to generate the mesh at - The generated mesh - + - Generates a series of faces for a sculpted prim, each face - containing a mesh and metadata + InventoryCallingCard Class, contains information on another avatar - Sculpted primitive to generate the mesh from - Sculpt texture - Level of detail to generate the mesh at - The generated mesh - + - Apply texture coordinate modifications from a - to a list of vertices + Construct an InventoryCallingCard object - Vertex list to modify texture coordinates for - Center-point of the face - Face texture parameters + A which becomes the + objects AssetUUID + + + + Construct an InventoryCallingCard object from a serialization stream + + + + + InventoryLandmark Class, contains details on a specific location + + + + + Construct an InventoryLandmark object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryLandmark object from a serialization stream + + + + + Landmarks use the InventoryItemFlags struct and will have a flag of 1 set if they have been visited + + + + + InventoryObject Class contains details on a primitive or coalesced set of primitives + + + + + Construct an InventoryObject object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryObject object from a serialization stream + + + + + Gets or sets the upper byte of the Flags value + + + + + Gets or sets the object attachment point, the lower byte of the Flags value + + + + + InventoryNotecard Class, contains details on an encoded text document + + + + + Construct an InventoryNotecard object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryNotecard object from a serialization stream + + + + + InventoryCategory Class + + TODO: Is this even used for anything? + + + + Construct an InventoryCategory object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryCategory object from a serialization stream + + + + + InventoryLSL Class, represents a Linden Scripting Language object + + + + + Construct an InventoryLSL object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryLSL object from a serialization stream + + + + + InventorySnapshot Class, an image taken with the viewer + + + + + Construct an InventorySnapshot object + + A which becomes the + objects AssetUUID + + + + Construct an InventorySnapshot object from a serialization stream + + + + + InventoryAttachment Class, contains details on an attachable object + + + + + Construct an InventoryAttachment object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryAttachment object from a serialization stream + + + + + Get the last AttachmentPoint this object was attached to + + + + + InventoryWearable Class, details on a clothing item or body part + + + + + Construct an InventoryWearable object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryWearable object from a serialization stream + + + + + The , Skin, Shape, Skirt, Etc + + + + + InventoryAnimation Class, A bvh encoded object which animates an avatar + + + + + Construct an InventoryAnimation object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryAnimation object from a serialization stream + + + + + InventoryGesture Class, details on a series of animations, sounds, and actions + + + + + Construct an InventoryGesture object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryGesture object from a serialization stream + + + + + A folder contains s and has certain attributes specific + to itself + + + + The Preferred for a folder. + + + The Version of this folder + + + Number of child items this folder contains. + + + + Constructor + + UUID of the folder + + + + + + + + + + Get Serilization data for this InventoryFolder object + + + + + Construct an InventoryFolder object from a serialization stream + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tools for dealing with agents inventory + + + + Used for converting shadow_id to asset_id + + + The event subscribers, null of no subscribers + + + Raises the ItemReceived Event + A ItemReceivedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the FolderUpdated Event + A FolderUpdatedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the InventoryObjectOffered Event + A InventoryObjectOfferedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the TaskItemReceived Event + A TaskItemReceivedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the FindObjectByPath Event + A FindObjectByPathEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the TaskInventoryReply Event + A TaskInventoryReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the SaveAssetToInventory Event + A SaveAssetToInventoryEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ScriptRunningReply Event + A ScriptRunningReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Partial mapping of AssetTypes to folder names + + + + Default constructor + + Reference to the GridClient object + + + + Fetch an inventory item from the dataserver + + The items + The item Owners + a integer representing the number of milliseconds to wait for results + An object on success, or null if no item was found + Items will also be sent to the event + + + + Request A single inventory item + + The items + The item Owners + + + + + Request inventory items + + Inventory items to request + Owners of the inventory items + + + + + Get contents of a folder + + The of the folder to search + The of the folders owner + true to retrieve folders + true to retrieve items + sort order to return results in + a integer representing the number of milliseconds to wait for results + A list of inventory items matching search criteria within folder + + InventoryFolder.DescendentCount will only be accurate if both folders and items are + requested + + + + Request the contents of an inventory folder + + The folder to search + The folder owners + true to return s contained in folder + true to return s containd in folder + the sort order to return items in + + + + + Returns the UUID of the folder (category) that defaults to + containing 'type'. The folder is not necessarily only for that + type + + This will return the root folder if one does not exist + + The UUID of the desired folder if found, the UUID of the RootFolder + if not found, or UUID.Zero on failure + + + + Find an object in inventory using a specific path to search + + The folder to begin the search in + The object owners + A string path to search + milliseconds to wait for a reply + Found items or if + timeout occurs or item is not found + + + + Find inventory items by path + + The folder to begin the search in + The object owners + A string path to search, folders/objects separated by a '/' + Results are sent to the event + + + + Search inventory Store object for an item or folder + + The folder to begin the search in + An array which creates a path to search + Number of levels below baseFolder to conduct searches + if True, will stop searching after first match is found + A list of inventory items found + + + + Move an inventory item or folder to a new location + + The item or folder to move + The to move item or folder to + + + + Move an inventory item or folder to a new location and change its name + + The item or folder to move + The to move item or folder to + The name to change the item or folder to + + + + Move and rename a folder + + The source folders + The destination folders + The name to change the folder to + + + + Update folder properties + + of the folder to update + Sets folder's parent to + Folder name + Folder type + + + + Move a folder + + The source folders + The destination folders + + + + Move multiple folders, the keys in the Dictionary parameter, + to a new parents, the value of that folder's key. + + A Dictionary containing the + of the source as the key, and the + of the destination as the value + + + + Move an inventory item to a new folder + + The of the source item to move + The of the destination folder + + + + Move and rename an inventory item + + The of the source item to move + The of the destination folder + The name to change the folder to + + + + Move multiple inventory items to new locations + + A Dictionary containing the + of the source item as the key, and the + of the destination folder as the value + + + + Remove descendants of a folder + + The of the folder + + + + Remove a single item from inventory + + The of the inventory item to remove + + + + Remove a folder from inventory + + The of the folder to remove + + + + Remove multiple items or folders from inventory + + A List containing the s of items to remove + A List containing the s of the folders to remove + + + + Empty the Lost and Found folder + + + + + Empty the Trash folder + + + + + + + + + + + Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. + + + + + + + + + + + + + Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. + + + + + + + + Creates a new inventory folder + + ID of the folder to put this folder in + Name of the folder to create + The UUID of the newly created folder + + + + Creates a new inventory folder + + ID of the folder to put this folder in + Name of the folder to create + Sets this folder as the default folder + for new assets of the specified type. Use AssetType.Unknown + to create a normal folder, otherwise it will likely create a + duplicate of an existing folder type + The UUID of the newly created folder + If you specify a preferred type of AsseType.Folder + it will create a new root folder which may likely cause all sorts + of strange problems + + + + Create an inventory item and upload asset data + + Asset data + Inventory item name + Inventory item description + Asset type + Inventory type + Put newly created inventory in this folder + Delegate that will receive feedback on success or failure + + + + Create an inventory item and upload asset data + + Asset data + Inventory item name + Inventory item description + Asset type + Inventory type + Put newly created inventory in this folder + Permission of the newly created item + (EveryoneMask, GroupMask, and NextOwnerMask of Permissions struct are supported) + Delegate that will receive feedback on success or failure + + + + Creates inventory link to another inventory item or folder + + Put newly created link in folder with this UUID + Inventory item or folder + Method to call upon creation of the link + + + + Creates inventory link to another inventory item + + Put newly created link in folder with this UUID + Original inventory item + Method to call upon creation of the link + + + + Creates inventory link to another inventory folder + + Put newly created link in folder with this UUID + Original inventory folder + Method to call upon creation of the link + + + + Creates inventory link to another inventory item or folder + + Put newly created link in folder with this UUID + Original item's UUID + Name + Description + Asset Type + Inventory Type + Transaction UUID + Method to call upon creation of the link + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Request a copy of an asset embedded within a notecard + + Usually UUID.Zero for copying an asset from a notecard + UUID of the notecard to request an asset from + Target folder for asset to go to in your inventory + UUID of the embedded asset + callback to run when item is copied to inventory + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Save changes to notecard embedded in object contents + + Encoded notecard asset data + Notecard UUID + Object's UUID + Called upon finish of the upload with status information + + + + Upload new gesture asset for an inventory gesture item + + Encoded gesture asset + Gesture inventory UUID + Callback whick will be called when upload is complete + + + + Update an existing script in an agents Inventory + + A byte[] array containing the encoded scripts contents + the itemID of the script + if true, sets the script content to run on the mono interpreter + + + + + Update an existing script in an task Inventory + + A byte[] array containing the encoded scripts contents + the itemID of the script + UUID of the prim containting the script + if true, sets the script content to run on the mono interpreter + if true, sets the script to running + + + + + Rez an object from inventory + + Simulator to place object in + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details + + + + Rez an object from inventory + + Simulator to place object in + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details + UUID of group to own the object + + + + Rez an object from inventory + + Simulator to place object in + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details + UUID of group to own the object + User defined queryID to correlate replies + If set to true, the CreateSelected flag + will be set on the rezzed object + + + + DeRez an object from the simulator to the agents Objects folder in the agents Inventory + + The simulator Local ID of the object + If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed + + + + DeRez an object from the simulator and return to inventory + + The simulator Local ID of the object + The type of destination from the enum + The destination inventory folders -or- + if DeRezzing object to a tasks Inventory, the Tasks + The transaction ID for this request which + can be used to correlate this request with other packets + If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed + + + + Rez an item from inventory to its previous simulator location + + + + + + + + + Give an inventory item to another avatar + + The of the item to give + The name of the item + The type of the item from the enum + The of the recipient + true to generate a beameffect during transfer + + + + Give an inventory Folder with contents to another avatar + + The of the Folder to give + The name of the folder + The type of the item from the enum + The of the recipient + true to generate a beameffect during transfer + + + + Copy or move an from agent inventory to a task (primitive) inventory + + The target object + The item to copy or move from inventory + + For items with copy permissions a copy of the item is placed in the tasks inventory, + for no-copy items the object is moved to the tasks inventory + + + + Retrieve a listing of the items contained in a task (Primitive) + + The tasks + The tasks simulator local ID + milliseconds to wait for reply from simulator + A list containing the inventory items inside the task or null + if a timeout occurs + This request blocks until the response from the simulator arrives + or timeoutMS is exceeded + + + + Request the contents of a tasks (primitives) inventory from the + current simulator + + The LocalID of the object + + + + + Request the contents of a tasks (primitives) inventory + + The simulator Local ID of the object + A reference to the simulator object that contains the object + + + + + Move an item from a tasks (Primitive) inventory to the specified folder in the avatars inventory + + LocalID of the object in the simulator + UUID of the task item to move + The ID of the destination folder in this agents inventory + Simulator Object + Raises the event + + + + Remove an item from an objects (Prim) Inventory + + LocalID of the object in the simulator + UUID of the task item to remove + Simulator Object + You can confirm the removal by comparing the tasks inventory serial before and after the + request with the request combined with + the event + + + + Copy an InventoryScript item from the Agents Inventory into a primitives task inventory + + An unsigned integer representing a primitive being simulated + An which represents a script object from the agents inventory + true to set the scripts running state to enabled + A Unique Transaction ID + + The following example shows the basic steps necessary to copy a script from the agents inventory into a tasks inventory + and assumes the script exists in the agents inventory. + + uint primID = 95899503; // Fake prim ID + UUID scriptID = UUID.Parse("92a7fe8a-e949-dd39-a8d8-1681d8673232"); // Fake Script UUID in Inventory + + Client.Inventory.FolderContents(Client.Inventory.FindFolderForType(AssetType.LSLText), Client.Self.AgentID, + false, true, InventorySortOrder.ByName, 10000); + + Client.Inventory.RezScript(primID, (InventoryItem)Client.Inventory.Store[scriptID]); + + + + + + Request the running status of a script contained in a task (primitive) inventory + + The ID of the primitive containing the script + The ID of the script + The event can be used to obtain the results of the + request + + + + + Send a request to set the running state of a script contained in a task (primitive) inventory + + The ID of the primitive containing the script + The ID of the script + true to set the script running, false to stop a running script + To verify the change you can use the method combined + with the event + + + + Create a CRC from an InventoryItem + + The source InventoryItem + A uint representing the source InventoryItem as a CRC + + + + Reverses a cheesy XORing with a fixed UUID to convert a shadow_id to an asset_id + + Obfuscated shadow_id value + Deobfuscated asset_id value + + + + Does a cheesy XORing with a fixed UUID to convert an asset_id to a shadow_id + + asset_id value to obfuscate + Obfuscated shadow_id value + + + + Wrapper for creating a new object + + The type of item from the enum + The of the newly created object + An object with the type and id passed + + + + Parse the results of a RequestTaskInventory() response + + A string which contains the data from the task reply + A List containing the items contained within the tasks inventory + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + UpdateCreateInventoryItem packets are received when a new inventory item + is created. This may occur when an object that's rezzed in world is + taken into inventory, when an item is created using the CreateInventoryItem + packet, or when an object is purchased + + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + an inventory object sent by another avatar or primitive + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + + Get this agents Inventory data + + + + + Callback for inventory item creation finishing + + Whether the request to create an inventory + item succeeded or not + Inventory item being created. If success is + false this will be null + + + + Callback for an inventory item being create from an uploaded asset + + true if inventory item creation was successful + + + + + + + + + + + + + Reply received when uploading an inventory asset + + Has upload been successful + Error message if upload failed + Inventory asset UUID + New asset UUID + + + + Delegate that is invoked when script upload is completed + + Has upload succeded (note, there still might be compile errors) + Upload status message + Is compilation successful + If compilation failed, list of error messages, null on compilation success + Script inventory UUID + Script's new asset UUID + + + Set to true to accept offer, false to decline it + + + The folder to accept the inventory into, if null default folder for will be used + + + + Callback when an inventory object is accepted and received from a + task inventory. This is the callback in which you actually get + the ItemID, as in ObjectOfferedCallback it is null when received + from a task. + + + + + Holds group information for Avatars such as those you might find in a profile + + + + true of Avatar accepts group notices + + + Groups Key + + + Texture Key for groups insignia + + + Name of the group + + + Powers avatar has in the group + + + Avatars Currently selected title + + + true of Avatar has chosen to list this in their profile + + + + Contains an animation currently being played by an agent + + + + The ID of the animation asset + + + A number to indicate start order of currently playing animations + On Linden Grids this number is unique per region, with OpenSim it is per client + + + + + + + Holds group information on an individual profile pick + + + + + Retrieve friend status notifications, and retrieve avatar names and + profiles + + + + The event subscribers, null of no subscribers + + + Raises the AvatarAnimation Event + An AvatarAnimationEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarAppearance Event + A AvatarAppearanceEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the UUIDNameReply Event + A UUIDNameReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarInterestsReply Event + A AvatarInterestsReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarPropertiesReply Event + A AvatarPropertiesReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarGroupsReply Event + A AvatarGroupsReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarPickerReply Event + A AvatarPickerReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ViewerEffectPointAt Event + A ViewerEffectPointAtEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ViewerEffectLookAt Event + A ViewerEffectLookAtEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ViewerEffect Event + A ViewerEffectEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarPicksReply Event + A AvatarPicksReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the PickInfoReply Event + A PickInfoReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarClassifiedReply Event + A AvatarClassifiedReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ClassifiedInfoReply Event + A ClassifiedInfoReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + + Represents other avatars + + + + + Tracks the specified avatar on your map + Avatar ID to track + + + + Request a single avatar name + + The avatar key to retrieve a name for + + + + Request a list of avatar names + + The avatar keys to retrieve names for + + + + Start a request for Avatar Properties + + + + + + Search for an avatar (first name, last name) + + The name to search for + An ID to associate with this query + + + + Start a request for Avatar Picks + + UUID of the avatar + + + + Start a request for Avatar Classifieds + + UUID of the avatar + + + + Start a request for details of a specific profile pick + + UUID of the avatar + UUID of the profile pick + + + + Start a request for details of a specific profile classified + + UUID of the avatar + UUID of the profile classified + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Crossed region handler for message that comes across the EventQueue. Sent to an agent + when the agent crosses a sim border into a new region. + + The message key + the IMessage object containing the deserialized data sent from the simulator + The which originated the packet + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the simulator sends us data containing + an agents animation playlist + + + Raised when the simulator sends us data containing + the appearance information for an agent + + + Raised when the simulator sends us data containing + agent names/id values + + + Raised when the simulator sends us data containing + the interests listed in an agents profile + + + Raised when the simulator sends us data containing + profile property information for an agent + + + Raised when the simulator sends us data containing + the group membership an agent is a member of + + + Raised when the simulator sends us data containing + name/id pair + + + Raised when the simulator sends us data containing + the objects and effect when an agent is pointing at + + + Raised when the simulator sends us data containing + the objects and effect when an agent is looking at + + + Raised when the simulator sends us data containing + an agents viewer effect information + + + Raised when the simulator sends us data containing + the top picks from an agents profile + + + Raised when the simulator sends us data containing + the Pick details + + + Raised when the simulator sends us data containing + the classified ads an agent has placed + + + Raised when the simulator sends us data containing + the details of a classified ad + + + Provides data for the event + The event occurs when the simulator sends + the animation playlist for an agent + + The following code example uses the and + properties to display the animation playlist of an avatar on the window. + + // subscribe to the event + Client.Avatars.AvatarAnimation += Avatars_AvatarAnimation; + + private void Avatars_AvatarAnimation(object sender, AvatarAnimationEventArgs e) + { + // create a dictionary of "known" animations from the Animations class using System.Reflection + Dictionary<UUID, string> systemAnimations = new Dictionary<UUID, string>(); + Type type = typeof(Animations); + System.Reflection.FieldInfo[] fields = type.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); + foreach (System.Reflection.FieldInfo field in fields) + { + systemAnimations.Add((UUID)field.GetValue(type), field.Name); + } + + // find out which animations being played are known animations and which are assets + foreach (Animation animation in e.Animations) + { + if (systemAnimations.ContainsKey(animation.AnimationID)) + { + Console.WriteLine("{0} is playing {1} ({2}) sequence {3}", e.AvatarID, + systemAnimations[animation.AnimationID], animation.AnimationSequence); + } + else + { + Console.WriteLine("{0} is playing {1} (Asset) sequence {2}", e.AvatarID, + animation.AnimationID, animation.AnimationSequence); + } + } + } + + + + + + Construct a new instance of the AvatarAnimationEventArgs class + + The ID of the agent + The list of animations to start + + + Get the ID of the agent + + + Get the list of animations to start + + + Provides data for the event + The event occurs when the simulator sends + the appearance data for an avatar + + The following code example uses the and + properties to display the selected shape of an avatar on the window. + + // subscribe to the event + Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; + + // handle the data when the event is raised + void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) + { + Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") + } + + + + + + Construct a new instance of the AvatarAppearanceEventArgs class + + The ID of the agent + true of the agent is a trial account + The default agent texture + The agents appearance layer textures + The for the agent + + + Get the ID of the agent + + + true if the agent is a trial account + + + Get the default agent texture + + + Get the agents appearance layer textures + + + Get the for the agent + + + Represents the interests from the profile of an agent + + + Get the ID of the agent + + + The properties of an agent + + + Get the ID of the agent + + + Get the ID of the agent + + + Get the ID of the agent + + + Get the ID of the avatar @@ -22199,11 +13952,10 @@ - The of the agent + The of the agent - - + The simulators handle the agent teleported to @@ -22213,7 +13965,7 @@ Indicates the level of access required - to access the simulator, or the content rating, or the simulators + to access the simulator, or the content rating, or the simulators map status @@ -22229,13 +13981,13 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data @@ -22246,37 +13998,37 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data @@ -22285,15 +14037,14 @@ - - + A string key of the reason the teleport failed e.g. CouldntTPCloser Which could be used to look up a value in a dictionary or enum - The of the Agent + The of the Agent A string human readable message containing the reason @@ -22303,25 +14054,25 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data @@ -22334,43 +14085,43 @@ the DataBlocksExtended map will not be sent from the simulator + + An Array of objects + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + Prim ownership information for a specified owner on a single parcel - The of the prim owner, + The of the prim owner, UUID.Zero if agent has no permission to view prim owner information The total number of prims - True if the OwnerID is a + True if the OwnerID is a - True if the owner is online + True if the owner is online This is no longer used by the LL Simulators The date the most recent prim was rezzed - - An Array of objects - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - The details of a single parcel in a region, also contains some regionwide globals @@ -22391,19 +14142,17 @@ Total parcel land area - - + Key of authorized buyer - Bitmap describing land layout in 4x4m squares across the + Bitmap describing land layout in 4x4m squares across the entire region - - + Date land was claimed @@ -22415,29 +14164,26 @@ Parcel Description - - + - - + - Total number of primitives owned by the parcel group on + Total number of primitives owned by the parcel group on this parcel Whether the land is deeded to a group or not - - + Maximum number of primitives this parcel supports - The Asset UUID of the Texture which when applied to a + The Asset UUID of the Texture which when applied to a primitive will display the media @@ -22456,8 +14202,7 @@ Autoreturn value in minutes for others' objects - - + Total number of other primitives on this parcel @@ -22466,12 +14211,11 @@ UUID of the owner of this parcel - Total number of primitives owned by the parcel owner on + Total number of primitives owned by the parcel owner on this parcel - - + How long is pass valid for @@ -22480,33 +14224,20 @@ Price for a temporary pass - - + - - - - - - - - - - - - - True if the region denies access to age unverified users + - - + This field is no longer used - The result of a request for parcel properties + The result of a request for parcel properties + Sale price of the parcel, only useful if ForSale is set The SalePrice will remain the same after an ownership @@ -22520,14 +14251,13 @@ - - + - A number which increments by 1, starting at 0 for each ParcelProperties request. - Can be overriden by specifying the sequenceID with the ParcelPropertiesRequest being sent. - a Negative number indicates the action in has occurred. + A number which increments by 1, starting at 0 for each ParcelProperties request. + Can be overriden by specifying the sequenceID with the ParcelPropertiesRequest being sent. + a Negative number indicates the action in has occurred. @@ -22537,8 +14267,7 @@ Total primitives across the entire simulator - - + Key of parcel snapshot @@ -22550,12 +14279,13 @@ Total number of primitives on this parcel - - + - - + + + + TRUE of region denies access to age unverified users A description of the media @@ -22582,20 +14312,20 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data A message sent from the viewer to the simulator to updated a specific parcels settings - The of the agent authorized to purchase this - parcel of land or a NULL if the sale is authorized to anyone + The of the agent authorized to purchase this + parcel of land or a NULL if the sale is authorized to anyone true to enable auto scaling of the parcel media @@ -22608,11 +14338,11 @@ A string containing the description to set - The of the which allows for additional + The of the which allows for additional powers and restrictions. - The which specifies how avatars which teleport + The which specifies how avatars which teleport to this parcel are handled @@ -22623,84 +14353,67 @@ to visitors - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + Deserialize the message - An containing the data + An containing the data Serialize the object - An containing the objects data + An containing the objects data Base class used for the RemoteParcelRequest message @@ -22718,23 +14431,23 @@ Region handle of the parcel we are looking up - Region of the parcel we are looking up + Region of the parcel we are looking up Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data - A message sent from the simulator to the viewer in response to a + A message sent from the simulator to the viewer in response to a which will contain parcel information @@ -22745,13 +14458,13 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data @@ -22766,37 +14479,25 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data + An containing the data @@ -22804,6 +14505,29 @@ the groups the agent is in + + The Agent receiving the message + + + An array containing information + for each the agent is a member of + + + An array containing information + for each the agent is a member of + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + Group Details specific to the agent @@ -22814,10 +14538,10 @@ The agents tier contribution to the group - The Groups + The Groups - The of the groups insignia + The of the groups insignia The name of the group @@ -22833,38 +14557,15 @@ true of the agent allows this group to be listed in their profile - - The Agent receiving the message - - - An array containing information - for each the agent is a member of - - - An array containing information - for each the agent is a member of - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - A message sent from the viewer to the simulator which + A message sent from the viewer to the simulator which specifies the language and permissions for others to detect the language specified - A string containng the default language + A string containng the default language to use for the agent @@ -22875,13 +14576,13 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data @@ -22889,15 +14590,6 @@ leaves a group - - An object containing the Agents UUID, and the Groups UUID - - - The ID of the Agent leaving the group - - - The GroupID the Agent is leaving - An Array containing the AgentID and GroupID @@ -22907,13 +14599,22 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data + + + An object containing the Agents UUID, and the Groups UUID + + + The ID of the Agent leaving the group + + + The GroupID the Agent is leaving Base class for Asset uploads/results via Capabilities @@ -22927,13 +14628,13 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data @@ -22946,7 +14647,7 @@ - A message sent from the simulator that will inform the agent the upload is complete, + A message sent from the simulator that will inform the agent the upload is complete, and the UUID of the uploaded asset @@ -22966,17 +14667,17 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data - A message sent from the simulator which indicates the minimum version required for + A message sent from the simulator which indicates the minimum version required for using voice chat @@ -22993,17 +14694,17 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data - A message sent from the simulator to the viewer containing the + A message sent from the simulator to the viewer containing the voice server URI @@ -23021,37 +14722,36 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data + - - + - - + Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data @@ -23066,13 +14766,13 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data @@ -23084,11 +14784,11 @@ The Asset ID of the script - True of the script is compiled/ran using the mono interpreter, false indicates it + True of the script is compiled/ran using the mono interpreter, false indicates it uses the older less efficient lsl2 interprter - The Task containing the scripts + The Task containing the scripts true of the script is in a running state @@ -23097,13 +14797,13 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data @@ -23118,13 +14818,13 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data @@ -23133,22 +14833,22 @@ - The of the Task containing the notecard asset to update + The of the Task containing the notecard asset to update - The notecard assets contained in the tasks inventory + The notecard assets contained in the tasks inventory Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data @@ -23165,13 +14865,13 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data @@ -23186,30 +14886,30 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data A message sent from the simulator to the viewer which indicates - an error occurred while attempting to update a script in an agents or tasks + an error occurred while attempting to update a script in an agents or tasks inventory @@ -23237,24 +14937,24 @@ The scripts InventoryItem ItemID to update - A lowercase string containing either "mono" or "lsl2" which + A lowercase string containing either "mono" or "lsl2" which specifies the script is compiled and ran on the mono runtime, or the older lsl runtime - The tasks which contains the script to update + The tasks which contains the script to update Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data @@ -23269,13 +14969,13 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data @@ -23306,13 +15006,13 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data @@ -23327,44 +15027,43 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Base class for Map Layers via Capabilities - - + Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data @@ -23376,6 +15075,21 @@ A message sent from the simulator to the viewer which contains an array of map images and their grid coordinates + + An array containing LayerData items + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + An object containing map location details @@ -23396,21 +15110,6 @@ The grid location of the northern border of the map tile - - An array containing LayerData items - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - Object containing request or response @@ -23418,13 +15117,13 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data @@ -23435,25 +15134,25 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data A string containing the method used @@ -23462,10 +15161,10 @@ A request sent from an agent to the Simulator to begin a new conference. Contains a list of Agents which will be included in the conference - + - An array containing the of the agents invited to this conference + An array containing the of the agents invited to this conference The conferences Session ID @@ -23474,26 +15173,25 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data A moderation request sent from a conference moderator Contains an agent and an optional action to take - + The Session ID - - + A list containing Key/Value pairs, known valid values: @@ -23503,24 +15201,23 @@ "text" or "voice" - - + Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data - A message sent from the agent to the simulator which tells the + A message sent from the agent to the simulator which tells the simulator we've accepted a conference invitation @@ -23531,49 +15228,49 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Key of sender @@ -23621,20 +15318,22 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Sent from the simulator to the viewer. + When an agent initially joins a session the AgentUpdatesBlock object will contain a list of session members including - a boolean indicating they can use voice chat in this session, a boolean indicating they are allowed to moderate + a boolean indicating they can use voice chat in this session, a boolean indicating they are allowed to moderate this session, and lastly a string which indicates another agent is entering the session with the Transition set to "ENTER" + During the session lifetime updates on individuals are sent. During the update the booleans sent during the initial join are excluded with the exception of the Transition field. This indicates a new user entering or exiting the session with the string "ENTER" or "LEAVE" respectively. @@ -23644,13 +15343,13 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data @@ -23671,105 +15370,106 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data + Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data - A message sent from the viewer to the simulator which + A message sent from the viewer to the simulator which specifies that the user has changed current URL of the specific media on a prim face @@ -23793,13 +15493,13 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data Base class used for the ObjectMedia message @@ -23829,7 +15529,7 @@ Deserialize the message - An containing the data + An containing the data @@ -23861,7 +15561,7 @@ Deserialize the message - An containing the data + An containing the data @@ -23893,7 +15593,7 @@ Deserialize the message - An containing the data + An containing the data @@ -23907,1888 +15607,9644 @@ Serialize the object - An containing the objects data + An containing the objects data Deserialize the message - An containing the data + An containing the data - - Details about object resource usage - - - Object UUID - - - Object name - - - Indicates if object is group owned - - - Locatio of the object - - - Object owner - - - Resource usage, keys are resource names, values are resource usage for that specific resource - - + - Deserializes object from OSD - - An containing the data - - - - Makes an instance based on deserialized data - - - serialized data - Instance containg deserialized data - - - Details about parcel resource usage - - - Parcel UUID - - - Parcel local ID - - - Parcel name - - - Indicates if parcel is group owned - - - Parcel owner - - - Array of containing per object resource usage - - - - Deserializes object from OSD - - An containing the data - - - - Makes an instance based on deserialized data - - - serialized data - Instance containg deserialized data - - - Resource usage base class, both agent and parcel resource - usage contains summary information - - - Summary of available resources, keys are resource names, - values are resource usage for that specific resource - - - Summary resource usage, keys are resource names, - values are resource usage for that specific resource - - - - Serializes object - - - serialized data - - - - Deserializes object from OSD - - An containing the data - - - Agent resource usage - - - Per attachment point object resource usage - - - - Deserializes object from OSD - - An containing the data - - - - Makes an instance based on deserialized data - - - serialized data - Instance containg deserialized data - - - - Detects which class handles deserialization of this message - - An containing the data - Object capable of decoding this message - - - Request message for parcel resource usage - - - UUID of the parel to request resource usage info - - - - Serializes object - - - serialized data - - - - Deserializes object from OSD - - An containing the data - - - Response message for parcel resource usage - - - URL where parcel resource usage details can be retrieved - - - URL where parcel resource usage summary can be retrieved - - - - Serializes object - - - serialized data - - - - Deserializes object from OSD - - An containing the data - - - - Detects which class handles deserialization of this message - - An containing the data - Object capable of decoding this message - - - Parcel resource usage - - - Array of containing per percal resource usage - - - - Deserializes object from OSD - - An containing the data - - - - Return a decoded capabilities message as a strongly typed object - - A string containing the name of the capabilities message key - An to decode - A strongly typed object containing the decoded information from the capabilities message, or null - if no existing Message object exists for the specified event - - - - Permissions for control of object media + Represents a texture - + + A object containing image data + + + + + + + + + Initializes a new instance of an AssetTexture object + + - Style of cotrols that shold be displayed to the user + Initializes a new instance of an AssetTexture object + + A unique specific to this asset + A byte array containing the raw asset data + + + + Initializes a new instance of an AssetTexture object + + A object containing texture data + + + + Populates the byte array with a JPEG2000 + encoded image created from the data in - + - Class representing media data for a single face + Decodes the JPEG2000 data in AssetData to the + object + + True if the decoding was successful, otherwise false + + + + Decodes the begin and end byte positions for each quality layer in + the image + + + + + Override the base classes AssetType + + + + Add a custom decoder callback + + The key of the field to decode + The custom decode handler + + + + Remove a custom decoder callback + + The key of the field to decode + The custom decode handler + + + + Creates a formatted string containing the values of a Packet + + The Packet + A formatted string of values of the nested items in the Packet object + + + + Decode an IMessage object into a beautifully formatted string + + The IMessage object + Recursion level (used for indenting) + A formatted string containing the names and values of the source object + + + + A custom decoder callback + + The key of the object + the data to decode + A string represending the fieldData + + + + Static helper functions and global variables - - Is display of the alternative image enabled + + This header flag signals that ACKs are appended to the packet - - Should media auto loop + + This header flag signals that this packet has been sent before - - Shoule media be auto played + + This header flags signals that an ACK is expected for this packet - - Auto scale media to prim face + + This header flag signals that the message is compressed using zerocoding - - Should viewer automatically zoom in on the face when clicked - - - Should viewer interpret first click as interaction with the media - or when false should the first click be treated as zoom in commadn - - - Style of controls viewer should display when - viewer media on this face - - - Starting URL for the media - - - Currently navigated URL - - - Media height in pixes - - - Media width in pixels - - - Who can controls the media - - - Who can interact with the media - - - Is URL whitelist enabled - - - Array of URLs that are whitelisted - - + - Serialize to OSD + - OSDMap with the serialized data + + - + - Deserialize from OSD data + - Serialized OSD data - Deserialized object + + + - + - Particle system specific enumerators, flags and methods. + + + + + + + + + + + + + + + + Given an X/Y location in absolute (grid-relative) terms, a region + handle is returned along with the local X/Y location in that region + + The absolute X location, a number such as + 255360.35 + The absolute Y location, a number such as + 255360.35 + The sim-local X position of the global X + position, a value from 0.0 to 256.0 + The sim-local Y position of the global Y + position, a value from 0.0 to 256.0 + A 64-bit region handle that can be used to teleport to + + + + Converts a floating point number to a terse string format used for + transmitting numbers in wearable asset files + + Floating point number to convert to a string + A terse string representation of the input number + + + + Convert a variable length field (byte array) to a string, with a + field name prepended to each line of the output + + If the byte array has unprintable characters in it, a + hex dump will be written instead + The StringBuilder object to write to + The byte array to convert to a string + A field name to prepend to each line of output + + + + Decode a zerocoded byte array, used to decompress packets marked + with the zerocoded flag + + Any time a zero is encountered, the next byte is a count + of how many zeroes to expand. One zero is encoded with 0x00 0x01, + two zeroes is 0x00 0x02, three zeroes is 0x00 0x03, etc. The + first four bytes are copied directly to the output buffer. + + The byte array to decode + The length of the byte array to decode. This + would be the length of the packet up to (but not including) any + appended ACKs + The output byte array to decode to + The length of the output buffer + + + + Encode a byte array with zerocoding. Used to compress packets marked + with the zerocoded flag. Any zeroes in the array are compressed down + to a single zero byte followed by a count of how many zeroes to expand + out. A single zero becomes 0x00 0x01, two zeroes becomes 0x00 0x02, + three zeroes becomes 0x00 0x03, etc. The first four bytes are copied + directly to the output buffer. + + The byte array to encode + The length of the byte array to encode + The output byte array to encode to + The length of the output buffer + + + + Calculates the CRC (cyclic redundancy check) needed to upload inventory. + + Creation date + Sale type + Inventory type + Type + Asset ID + Group ID + Sale price + Owner ID + Creator ID + Item ID + Folder ID + Everyone mask (permissions) + Flags + Next owner mask (permissions) + Group mask (permissions) + Owner mask (permissions) + The calculated CRC + + + + Attempts to load a file embedded in the assembly + + The filename of the resource to load + A Stream for the requested file, or null if the resource + was not successfully loaded + + + + Attempts to load a file either embedded in the assembly or found in + a given search path + + The filename of the resource to load + An optional path that will be searched if + the asset is not found embedded in the assembly + A Stream for the requested file, or null if the resource + was not successfully loaded + + + + Converts a list of primitives to an object that can be serialized + with the LLSD system + + Primitives to convert to a serializable object + An object that can be serialized with LLSD + + + + Deserializes OSD in to a list of primitives + + Structure holding the serialized primitive list, + must be of the SDMap type + A list of deserialized primitives + + + + Converts a struct or class object containing fields only into a key value separated string + + The struct object + A string containing the struct fields as the keys, and the field value as the value separated + + + // Add the following code to any struct or class containing only fields to override the ToString() + // method to display the values of the passed object + + /// Print the struct data as a string + ///A string containing the field name, and field value + public override string ToString() + { + return Helpers.StructToString(this); + } + + + + + + Passed to Logger.Log() to identify the severity of a log entry - + + No logging information will be output + + + Non-noisy useful information, may be helpful in + debugging a problem + + + A non-critical error occurred. A warning will not + prevent the rest of the library from operating as usual, + although it may be indicative of an underlying issue + + + A critical error has occurred. Generally this will + be followed by the network layer shutting down, although the + stability of the library after an error is uncertain + + + Used for internal testing, this logging level can + generate very noisy (long and/or repetitive) messages. Don't + pass this to the Log() function, use DebugLog() instead. + + + + = + + + Number of times we've received an unknown CAPS exception in series. + + + For exponential backoff on error. + + + + Constants for the archiving module + + + + + The location of the archive control file + + + + + Path for the assets held in an archive + + + + + Path for the prims file + + + + + Path for terrains. Technically these may be assets, but I think it's quite nice to split them out. + + + + + Path for region settings. + + + + + The character the separates the uuid from extension information in an archived asset filename + + + + + Extensions used for asset types in the archive + + + + + + + + + + + + + + + + + + + Thrown when a packet could not be successfully deserialized + + + Default constructor - + - Complete structure for the particle system + Constructor that takes an additional error message + An error message to attach to this exception - + - Decodes a byte[] array into a ParticleSystem Object + The header of a message template packet. Holds packet flags, sequence + number, packet ID, and any ACKs that will be appended at the end of + the packet - ParticleSystem object - Start position for BitPacker - + - Particle source pattern + Convert the AckList to a byte array, used for packet serializing + Reference to the target byte array + Beginning position to start writing to in the byte + array, will be updated with the ending position of the ACK list - - None + + + + + + + + + + + + + + + + + + + + A block of data in a packet. Packets are composed of one or more blocks, + each block containing one or more fields + + + + + Create a block from a byte array + + Byte array containing the serialized block + Starting position of the block in the byte array. + This will point to the data after the end of the block when the + call returns + + + + Serialize this block into a byte array + + Byte array to serialize this block into + Starting position in the byte array to serialize to. + This will point to the position directly after the end of the + serialized block when the call returns + + + Current length of the data in this packet + + + A generic value, not an actual packet type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - Drop particles from source position with no force + + - - "Explode" particles in all directions + + - - Particles shoot across a 2D area + + - - Particles shoot across a 3D Cone + + - - Inverse of AngleCone (shoot particles everywhere except the 3D cone defined + + - - - Particle Data Flags - + + - - None + + - - Interpolate color and alpha from start to end + + - - Interpolate scale from start to end + + - - Bounce particles off particle sources Z height + + - - velocity of particles is dampened toward the simulators wind + + - - Particles follow the source + + - - Particles point towards the direction of source's velocity + + - - Target of the particles + + - - Particles are sent in a straight line + + - - Particles emit a glow + + - - used for point/grab/touch + + - - - Particle Flags Enum - + + - - None + + - - Acceleration and velocity for particles are - relative to the object rotation + + - - Particles use new 'correct' angle parameters + + - - Particle Flags - There appears to be more data packed in to this area - for many particle systems. It doesn't appear to be flag values - and serialization breaks unless there is a flag for every - possible bit so it is left as an unsigned integer + + - - - pattern of particles + + - - A representing the maximimum age (in seconds) particle will be displayed - Maximum value is 30 seconds + + - - A representing the number of seconds, - from when the particle source comes into view, - or the particle system's creation, that the object will emits particles; - after this time period no more particles are emitted + + - - A in radians that specifies where particles will not be created + + - - A in radians that specifies where particles will be created + + - - A representing the number of seconds between burts. + + - - A representing the number of meters - around the center of the source where particles will be created. + + - - A representing in seconds, the minimum speed between bursts of new particles - being emitted + + - - A representing in seconds the maximum speed of new particles being emitted. + + - - A representing the maximum number of particles emitted per burst + + - - A which represents the velocity (speed) from the source which particles are emitted + + - - A which represents the Acceleration from the source which particles are emitted + + - - The Key of the texture displayed on the particle + + - - The Key of the specified target object or avatar particles will follow + + - - Flags of particle from + + - - Max Age particle system will emit particles for + + - - The the particle has at the beginning of its lifecycle + + - - The the particle has at the ending of its lifecycle + + - - A that represents the starting X size of the particle - Minimum value is 0, maximum value is 4 + + - - A that represents the starting Y size of the particle - Minimum value is 0, maximum value is 4 + + - - A that represents the ending X size of the particle - Minimum value is 0, maximum value is 4 + + - - A that represents the ending Y size of the particle - Minimum value is 0, maximum value is 4 + + - - - Generate byte[] array from particle data - - Byte array + + - - - Parameters used to construct a visual representation of a primitive - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - Attachment point to an avatar + + - - - + + - - - + + - - - + + - - - + + - - - Information on the flexible properties of a primitive - + + - - - Default constructor - + + - - - - - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - - - + + - - - - - + + - - - Information on the light properties of a primitive - + + - - - Default constructor - + + - - - - - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - - - + + - - - - - + + - - - Information on the sculpt properties of a sculpted primitive - + + - - - Default constructor - + + - - - - - - - + + - - - Render inside out (inverts the normals). - + + - - - Render an X axis mirror of the sculpty. - + + - - - Extended properties to describe an object - + + - - - Default constructor - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + The avatar has no rights + + + The avatar can see the online status of the target avatar + + + The avatar can see the location of the target avatar on the map + + + The avatar can modify the ojects of the target avatar + + + This class holds information about an avatar in the friends list. There are two ways + to interface to this class. The first is through the set of boolean properties. This is the typical + way clients of this class will use it. The second interface is through two bitflag properties, + TheirFriendsRights and MyFriendsRights - + + Used internally when building the initial list of friends at login time + System ID of the avatar being prepesented + Rights the friend has to see you online and to modify your objects + Rights you have to see your friend online and to modify their objects - + + FriendInfo represented as a string + A string reprentation of both my rights and my friends rights - + + System ID of the avatar - + + full name of the avatar - + + True if the avatar is online - + + True if the friend can see if I am online - + + True if the friend can see me on the map - + + True if the freind can modify my objects - + + True if I can see if my friend is online - + + True if I can see if my friend is on the map - + + True if I can modify my friend's objects - + + My friend's rights represented as bitmapped flags - + - Set the properties that are set in an ObjectPropertiesFamily packet + My rights represented as bitmapped flags - - that has - been partially filled by an ObjectPropertiesFamily packet - + - Texture animation mode + This class is used to add and remove avatars from your friends list and to manage their permission. - - Disable texture animation + + The event subscribers. null if no subcribers - - Enable texture animation + + Raises the FriendOnline event + A FriendInfoEventArgs object containing the + data returned from the data server - - Loop when animating textures + + Thread sync lock object - - Animate in reverse direction + + The event subscribers. null if no subcribers - - Animate forward then reverse + + Raises the FriendOffline event + A FriendInfoEventArgs object containing the + data returned from the data server - - Slide texture smoothly instead of frame-stepping + + Thread sync lock object - - Rotate texture instead of using frames + + The event subscribers. null if no subcribers - - Scale texture instead of using frames + + Raises the FriendRightsUpdate event + A FriendInfoEventArgs object containing the + data returned from the data server - - - A single textured face. Don't instantiate this class yourself, use the - methods in TextureEntry - + + Thread sync lock object - - - Contains the definition for individual faces - - - + + The event subscribers. null if no subcribers - - - + + Raises the FriendNames event + A FriendNamesEventArgs object containing the + data returned from the data server - - - + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - - + + Raises the FriendshipOffered event + A FriendshipOfferedEventArgs object containing the + data returned from the data server - - - + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - - + + Raises the FriendshipResponse event + A FriendshipResponseEventArgs object containing the + data returned from the data server - - - + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - - + + Raises the FriendshipTerminated event + A FriendshipTerminatedEventArgs object containing the + data returned from the data server - - In the future this will specify whether a webpage is - attached to this face + + Thread sync lock object - - - + + The event subscribers. null if no subcribers + + + Raises the FriendFoundReply event + A FriendFoundReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object - + + A dictionary of key/value pairs containing known friends of this avatar. + + The Key is the of the friend, the value is a + object that contains detailed information including permissions you have and have given to the friend - - - + - Represents all of the texturable faces for an object + A Dictionary of key/value pairs containing current pending frienship offers. + + The key is the of the avatar making the request, + the value is the of the request which is used to accept + or decline the friendship offer - Grid objects have infinite faces, with each face - using the properties of the default face unless set otherwise. So if - you have a TextureEntry with a default texture uuid of X, and face 18 - has a texture UUID of Y, every face would be textured with X except for - face 18 that uses Y. In practice however, primitives utilize a maximum - of nine faces - + - Constructor that takes a default texture UUID + Internal constructor - Texture UUID to use as the default texture + A reference to the GridClient Object - + - Constructor that takes a TextureEntryFace for the - default face + Accept a friendship request - Face to use as the default face + agentID of avatatar to form friendship with + imSessionID of the friendship request message - + - Constructor that creates the TextureEntry class from a byte array + Decline a friendship request - Byte array containing the TextureEntry field - Starting position of the TextureEntry field in - the byte array - Length of the TextureEntry field, in bytes + of friend + imSessionID of the friendship request message - + + Overload: Offer friendship to an avatar. + System ID of the avatar you are offering friendship to - + + Offer friendship to an avatar. + System ID of the avatar you are offering friendship to + A message to send with the request - + - This will either create a new face if a custom face for the given - index is not defined, or return the custom face for that index if - it already exists + Terminate a friendship with an avatar - The index number of the face to create or - retrieve - A TextureEntryFace containing all the properties for that - face + System ID of the avatar you are terminating the friendship with - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Change the rights of a friend avatar. - - - - + the of the friend + the new rights to give the friend + This method will implicitly set the rights to those passed in the rights parameter. - + + Use to map a friends location on the grid. - - + Friends UUID to find + - + + Use to track a friends movement on the grid - - + Friends Key - + + Ask for a notification of friend's online status - - + Friend's UUID - + - Controls the texture animation of a particular prim + This handles the asynchronous response of a RequestAvatarNames call. + + names cooresponding to the the list of IDs sent the the RequestAvatarNames call. + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Populate FriendList with data from the login reply - - - - + true if login was successful + true if login request is requiring a redirect + A string containing the response to the login request + A string containing the reason for the request + A object containing the decoded + reply from the login server + + + Raised when the simulator sends notification one of the members in our friends list comes online + + + Raised when the simulator sends notification one of the members in our friends list goes offline + + + Raised when the simulator sends notification one of the members in our friends list grants or revokes permissions - + + Raised when the simulator sends us the names on our friends list + + + Raised when the simulator sends notification another agent is offering us friendship + + + Raised when a request we sent to friend another agent is accepted or declined + + + Raised when the simulator sends notification one of the members in our friends list has terminated + our friendship + + + Raised when the simulator sends the location of a friend we have + requested map location info for + + + Contains information on a member of our friends list + + + Construct a new instance of the FriendInfoEventArgs class + The FriendInfo + + + Get the FriendInfo + + + Contains Friend Names - + + Construct a new instance of the FriendNamesEventArgs class + A dictionary where the Key is the ID of the Agent, + and the Value is a string containing their name - + + A dictionary where the Key is the ID of the Agent, + and the Value is a string containing their name + + + Sent when another agent requests a friendship with our agent + + + Construct a new instance of the FriendshipOfferedEventArgs class + The ID of the agent requesting friendship + The name of the agent requesting friendship + The ID of the session, used in accepting or declining the + friendship offer + + + Get the ID of the agent requesting friendship + + + Get the name of the agent requesting friendship - + + Get the ID of the session, used in accepting or declining the + friendship offer + + + A response containing the results of our request to form a friendship with another agent + + + Construct a new instance of the FriendShipResponseEventArgs class + The ID of the agent we requested a friendship with + The name of the agent we requested a friendship with + true if the agent accepted our friendship offer + + + Get the ID of the agent we requested a friendship with + + + Get the name of the agent we requested a friendship with - + + true if the agent accepted our friendship offer + + + Contains data sent when a friend terminates a friendship with us + + + Construct a new instance of the FrindshipTerminatedEventArgs class + The ID of the friend who terminated the friendship with us + The name of the friend who terminated the friendship with us + + + Get the ID of the agent that terminated the friendship with us + + + Get the name of the agent that terminated the friendship with us - + + Data sent in response to a request which contains the information to allow us to map the friends location - + + Construct a new instance of the FriendFoundReplyEventArgs class + The ID of the agent we have requested location information for + The region handle where our friend is located + The simulator local position our friend is located - + + Get the ID of the agent we have received location information for + + + Get the region handle where our mapped friend is located + + + Get the simulator local position where our friend is located + + + - - + Looking direction, must be a normalized vector + Up direction, must be a normalized vector - + - Current version of the media data for the prim + Align the coordinate frame X and Y axis with a given rotation + around the Z axis in radians + Absolute rotation around the Z axis in + radians + + + Origin position of this coordinate frame - + + X axis of this coordinate frame, or Forward/At in grid terms + + + Y axis of this coordinate frame, or Left in grid terms + + + Z axis of this coordinate frame, or Up in grid terms + + - Array of media entries indexed by face number + Throttles the network traffic for various different traffic types. + Access this class through GridClient.Throttle - + + Default constructor, uses a default high total of 1500 KBps (1536000) - + + Constructor that decodes an existing AgentThrottle packet in to + individual values + Reference to the throttle data in an AgentThrottle + packet + Offset position to start reading at in the + throttle data + This is generally not needed in clients as the server will + never send a throttle packet to the client - + + Send an AgentThrottle packet to the current server using the + current values - + + Send an AgentThrottle packet to the specified server using the + current values - + + Convert the current throttle values to a byte array that can be put + in an AgentThrottle packet + Byte array containing all the throttle values + + + Maximum bits per second for resending unacknowledged packets + + + Maximum bits per second for LayerData terrain + + + Maximum bits per second for LayerData wind data + + + Maximum bits per second for LayerData clouds + + + Unknown, includes object data - + + Maximum bits per second for textures + + + Maximum bits per second for downloaded assets + + + Maximum bits per second the entire connection, divided up + between invidiual streams using default multipliers + + + Permission request flags, asked when a script wants to control an Avatar - + + Placeholder for empty values, shouldn't ever see this + + + Script wants ability to take money from you + + + Script wants to take camera controls for you + + + Script wants to remap avatars controls + + + Script wants to trigger avatar animations + This function is not implemented on the grid + + + Script wants to attach or detach the prim or primset to your avatar + + + Script wants permission to release ownership + This function is not implemented on the grid + The concept of "public" objects does not exist anymore. + + + Script wants ability to link/delink with other prims + + + Script wants permission to change joints + This function is not implemented on the grid + + + Script wants permissions to change permissions + This function is not implemented on the grid + + + Script wants to track avatars camera position and rotation + + + Script wants to control your camera + + + Special commands used in Instant Messages - - Foliage type for this primitive. Only applicable if this - primitive is foliage + + Indicates a regular IM from another agent + + + Simple notification box with an OK button + + + You've been invited to join a group. + + + Inventory offer + + + Accepted inventory offer + + + Declined inventory offer + + + Group vote + + + An object is offering its inventory + + + Accept an inventory offer from an object + + + Decline an inventory offer from an object - + Unknown - + + Start a session, or add users to a session + + + Start a session, but don't prune offline users + + + Start a session with your group + + + Start a session without a calling card (finder or objects) + + + Send a message to a session + + + Leave a session + + + Indicates that the IM is from an object + + + Sent an IM to a busy user, this is the auto response + + + Shows the message in the console and chat history + + + Send a teleport lure + + + Response sent to the agent which inititiated a teleport invitation + + + Response sent to the agent which inititiated a teleport invitation + + + Only useful if you have Linden permissions + + + A placeholder type for future expansion, currently not + used + + + IM to tell the user to go to an URL + + + IM for help + + + IM sent automatically on call for help, sends a lure + to each Helper reached + + + Like an IM but won't go to email + + + IM from a group officer to all group members + + + Unknown + + + Unknown + + + Accept a group invitation + + + Decline a group invitation + + + Unknown + + + An avatar is offering you friendship + + + An avatar has accepted your friendship offer + + + An avatar has declined your friendship offer + + + Indicates that a user has started typing + + + Indicates that a user has stopped typing + + + Flag in Instant Messages, whether the IM should be delivered to + offline avatars as well - + + Only deliver to online avatars + + + If the avatar is offline the message will be held until + they login next, and possibly forwarded to their e-mail account + + + Conversion type to denote Chat Packet types in an easier-to-understand format - + + Whisper (5m radius) + + + Normal chat (10/20m radius), what the official viewer typically sends + + + Shouting! (100m radius) + + + Event message when an Avatar has begun to type + + + Event message when an Avatar has stopped typing + + + Send the message to the debug channel + + + Event message when an object uses llOwnerSay + + + Special value to support llRegionSay, never sent to the client + + + Identifies the source of a chat message - + + Chat from the grid or simulator + + + Chat from another avatar + + + Chat from an object + + + - + + + + + + + + + + + Effect type used in ViewerEffect packets - + + + + + + + + + + + + + + + + + + + + + + + Project a beam from a source to a destination, such as + the one used when editing an object + + + + + + + + + + + + Create a swirl of particles around an object + + + + + + + + + Cause an avatar to look at an object + + + Cause an avatar to point at an object + + + The action an avatar is doing when looking at something, used in + ViewerEffect packets for the LookAt effect - + + + + + + + + + + + + + + + + + + + + Deprecated + + + + + + + + + + + + + + + The action an avatar is doing when pointing at something, used in + ViewerEffect packets for the PointAt effect - + + + + + + + + + + + + + + Money transaction types - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + Flags sent when a script takes or releases a control + + NOTE: (need to verify) These might be a subset of the ControlFlags enum in Movement, + + + No Flags set + + + Forward (W or up Arrow) + + + Back (S or down arrow) + + + Move left (shift+A or left arrow) + + + Move right (shift+D or right arrow) + + + Up (E or PgUp) + + + Down (C or PgDown) + + + Rotate left (A or left arrow) + + + Rotate right (D or right arrow) + + + Left Mouse Button + + + Left Mouse button in MouseLook + + + + Currently only used to hide your group title - + + No flags set + + + Hide your group title + + + Action state of the avatar, which can currently be typing and + editing - - Identifies the owner if audio or a particle system is - active + + - + + + + + + + + Current teleport status - + + Unknown status + + + Teleport initialized + + + Teleport in progress + + + Teleport failed + + + Teleport completed + + + Teleport cancelled + + + - + + No flags set, or teleport failed + + + Set when newbie leaves help island for first time + + + + + + Via Lure + + + Via Landmark + + + Via Location + + + Via Home + + + Via Telehub + + + Via Login + + + Linden Summoned + + + Linden Forced me + + + + + + Agent Teleported Home via Script + + + + + + + + + + + + forced to new location for example when avatar is banned or ejected + + + Teleport Finished via a Lure + + + Finished, Sim Changed + + + Finished, Same Sim + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + Instant Message - + + Key of sender + + + Name of sender + + + Key of destination avatar + + + ID of originating estate + + + Key of originating region + + + Coordinates in originating region + + + Instant message type + + + Group IM session toggle + + + Key of IM session, for Group Messages, the groups UUID + + + Timestamp of the instant message + + + Instant message text + + + Whether this message is held for offline avatars + + + Context specific packed data + + + Print the struct data as a string + A string containing the field name, and field value + + + - + + Construct a new instance of the ChatEventArgs object + + Sim from which the message originates + The message sent + The audible level of the message + The type of message sent: whisper, shout, etc + The source type of the message sender + The name of the agent or object sending the message + The ID of the agent or object sending the message + The ID of the object owner, or the agent ID sending the message + The position of the agent or object sending the message + + + Get the simulator sending the message + + + Get the message sent + + + Get the audible level of the message + + + Get the type of message sent: whisper, shout, etc + + + Get the source type of the message sender + + + Get the name of the agent or object sending the message + + + Get the ID of the agent or object sending the message + + + Get the ID of the object owner, or the agent ID sending the message + + + Get the position of the agent or object sending the message + + + Contains the data sent when a primitive opens a dialog with this agent + + + + Construct a new instance of the ScriptDialogEventArgs + + The dialog message + The name of the object that sent the dialog request + The ID of the image to be displayed + The ID of the primitive sending the dialog + The first name of the senders owner + The last name of the senders owner + The communication channel the dialog was sent on + The string labels containing the options presented in this dialog + + + Get the dialog message + + + Get the name of the object that sent the dialog request + + + Get the ID of the image to be displayed + + + Get the ID of the primitive sending the dialog + + + Get the first name of the senders owner + + + Get the last name of the senders owner + + + Get the communication channel the dialog was sent on, responses + should also send responses on this same channel + + + Get the string labels containing the options presented in this dialog + + + Contains the data sent when a primitive requests debit or other permissions + requesting a YES or NO answer + + + + Construct a new instance of the ScriptQuestionEventArgs + + The simulator containing the object sending the request + The ID of the script making the request + The ID of the primitive containing the script making the request + The name of the primitive making the request + The name of the owner of the object making the request + The permissions being requested + + + Get the simulator containing the object sending the request + + + Get the ID of the script making the request + + + Get the ID of the primitive containing the script making the request + + + Get the name of the primitive making the request + + + Get the name of the owner of the object making the request + + + Get the permissions being requested + + + Contains the data sent when a primitive sends a request + to an agent to open the specified URL + + + + Construct a new instance of the LoadUrlEventArgs + + The name of the object sending the request + The ID of the object sending the request + The ID of the owner of the object sending the request + True if the object is owned by a group + The message sent with the request + The URL the object sent + + + Get the name of the object sending the request + + + Get the ID of the object sending the request + + + Get the ID of the owner of the object sending the request + + + True if the object is owned by a group + + + Get the message sent with the request + + + Get the URL the object sent + + + The date received from an ImprovedInstantMessage + + + + Construct a new instance of the InstantMessageEventArgs object + + the InstantMessage object + the simulator where the InstantMessage origniated + + + Get the InstantMessage object + + + Get the simulator where the InstantMessage origniated + + + Contains the currency balance + + + + Construct a new BalanceEventArgs object + + The currenct balance + + + + Get the currenct balance - + + Contains the transaction summary when an item is purchased, + money is given, or land is purchased + + + Construct a new instance of the MoneyBalanceReplyEventArgs object + + The ID of the transaction + True of the transaction was successful + The current currency balance + The meters credited + The meters comitted + A brief description of the transaction + + + Get the ID of the transaction + + + True of the transaction was successful + + + Get the remaining currency balance + + + Get the meters credited + + + Get the meters comitted + + + Get the description of the transaction + + + Data sent from the simulator containing information about your agent and active group information + + + + Construct a new instance of the AgentDataReplyEventArgs object + + The agents first name + The agents last name + The agents active group ID + The group title of the agents active group + The combined group powers the agent has in the active group + The name of the group the agent has currently active + + + Get the agents first name + + + Get the agents last name + + + Get the active group ID of your agent + + + Get the active groups title of your agent + + + Get the combined group powers of your agent + + + Get the active group name of your agent + + + Data sent by the simulator to indicate the active/changed animations + applied to your agent + + + + Construct a new instance of the AnimationsChangedEventArgs class + + The dictionary that contains the changed animations + + + Get the dictionary that contains the changed animations + + + + Data sent from a simulator indicating a collision with your agent - + + Construct a new instance of the MeanCollisionEventArgs class + + The type of collision that occurred + The ID of the agent or object that perpetrated the agression + The ID of the Victim + The strength of the collision + The Time the collision occurred + + + Get the Type of collision + + + Get the ID of the agent or object that collided with your agent + + + Get the ID of the agent that was attacked + + + A value indicating the strength of the collision + + + Get the time the collision occurred + + + Data sent to your agent when it crosses region boundaries + + + + Construct a new instance of the RegionCrossedEventArgs class + + The simulator your agent just left + The simulator your agent is now in + + + Get the simulator your agent just left + + + Get the simulator your agent is now in + + + Data sent from the simulator when your agent joins a group chat session + + + + Construct a new instance of the GroupChatJoinedEventArgs class + + The ID of the session + The name of the session + A temporary session id used for establishing new sessions + True of your agent successfully joined the session + + + Get the ID of the group chat session + + + Get the name of the session + + + Get the temporary session ID used for establishing new sessions + + + True if your agent successfully joined the session + + + The session information when your agent exits a group chat session + + + + Construct a new instance of the GroupChatLeftEventArgs class + + The ID of the session your agent left + + + Get the ID of the session your agent left + + + Data sent by the simulator containing urgent messages + + + + Construct a new instance of the AlertMessageEventArgs class + + The alert message + + + Get the alert message + + + Data sent by a script requesting to take or release specified controls to your agent + + + + Construct a new instance of the ScriptControlEventArgs class + + The controls the script is attempting to take or release to the agent + True if the script is passing controls back to the agent + True if the script is requesting controls be released to the script + + + Get the controls the script is attempting to take or release to the agent + + + True if the script is passing controls back to the agent + + + True if the script is requesting controls be released to the script + + + + Data sent from the simulator to an agent to indicate its view limits - + + Construct a new instance of the CameraConstraintEventArgs class + + The collision plane + + + Get the collision plane + + + + Data containing script sensor requests which allow an agent to know the specific details + of a primitive sending script sensor requests - + + Construct a new instance of the ScriptSensorReplyEventArgs + + The ID of the primitive sending the sensor + The ID of the group associated with the primitive + The name of the primitive sending the sensor + The ID of the primitive sending the sensor + The ID of the owner of the primitive sending the sensor + The position of the primitive sending the sensor + The range the primitive specified to scan + The rotation of the primitive sending the sensor + The type of sensor the primitive sent + The velocity of the primitive sending the sensor + + + Get the ID of the primitive sending the sensor + + + Get the ID of the group associated with the primitive + + + Get the name of the primitive sending the sensor + + + Get the ID of the primitive sending the sensor + + + Get the ID of the owner of the primitive sending the sensor + + + Get the position of the primitive sending the sensor + + + Get the range the primitive specified to scan + + + Get the rotation of the primitive sending the sensor + + + Get the type of sensor the primitive sent + + + Get the velocity of the primitive sending the sensor + + + Contains the response data returned from the simulator in response to a + + + Construct a new instance of the AvatarSitResponseEventArgs object + + + Get the ID of the primitive the agent will be sitting on + + + True if the simulator Autopilot functions were involved + + + Get the camera offset of the agent when seated + + + Get the camera eye offset of the agent when seated + + + True of the agent will be in mouselook mode when seated + + + Get the position of the agent when seated + + + Get the rotation of the agent when seated + + + Data sent when an agent joins a chat session your agent is currently participating in + + + + Construct a new instance of the ChatSessionMemberAddedEventArgs object + + The ID of the chat session + The ID of the agent joining + + + Get the ID of the chat session + + + Get the ID of the agent that joined + + + Data sent when an agent exits a chat session your agent is currently participating in + + + + Construct a new instance of the ChatSessionMemberLeftEventArgs object + + The ID of the chat session + The ID of the Agent that left + + + Get the ID of the chat session + + + Get the ID of the agent that left + + + + Identifier code for primitive types - + + None + + + A Primitive + + + A Avatar + + + Linden grass + + + Linden tree + + + A primitive that acts as the source for a particle stream + + + A Linden tree + + + Primary parameters for primitives such as Physics Enabled or Phantom - + + Deprecated + + + Whether physics are enabled for this object + + + + + + + + + + + + + + + + + + + + + Whether this object contains an active touch script + + + + + + Whether this object can receive payments + + + Whether this object is phantom (no collisions) + + + + + + + + + + + + + + + Deprecated + + + + + + + + + + + + Deprecated + + + + + + + + + + + + + + + Server flag, will not be sent to clients. Specifies that + the object is destroyed when it touches a simulator edge + + + Server flag, will not be sent to clients. Specifies that + the object will be returned to the owner's inventory when it + touches a simulator edge + + + Server flag, will not be sent to clients. + + + Server flag, will not be sent to client. Specifies that + the object is hovering/flying + + + + + + + + + + + + + + + Sound flags for sounds attached to primitives - + + + + + + + + + + + + + + + + + + + + + + + Material type for a primitive - - Uses basic heuristics to estimate the primitive shape + + - - - Packs PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew - parameters in to signed eight bit values - - Floating point parameter to pack - Signed eight bit value containing the packed parameter + + - + + + + + + + + + + + + + + + + + + + - Unpacks PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew - parameters from signed eight bit integers to floating point values + Used in a helper function to roughly determine prim shape + + + + + Extra parameters for primitives, these flags are for features that have + been added after the original ObjectFlags that has all eight bits + reserved already + + + + Whether this object has flexible parameters + + + Whether this object has light parameters + + + Whether this object is a sculpted prim + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Attachment points for objects on avatar bodies + + + Both InventoryObject and InventoryAttachment types can be attached + + + + Right hand if object was not previously attached + + + Chest + + + Skull + + + Left shoulder + + + Right shoulder + + + Left hand + + + Right hand + + + Left foot + + + Right foot + + + Spine + + + Pelvis + + + Mouth + + + Chin + + + Left ear + + + Right ear + + + Left eyeball + + + Right eyeball + + + Nose + + + Right upper arm + + + Right forearm + + + Left upper arm + + + Left forearm + + + Right hip + + + Right upper leg + + + Right lower leg + + + Left hip + + + Left upper leg + + + Left lower leg + + + Stomach + + + Left pectoral + + + Right pectoral + + + HUD Center position 2 + + + HUD Top-right + + + HUD Top + + + HUD Top-left + + + HUD Center + + + HUD Bottom-left + + + HUD Bottom + + + HUD Bottom-right + + + + Tree foliage types + + + + Pine1 tree + + + Oak tree + + + Tropical Bush1 + + + Palm1 tree + + + Dogwood tree + + + Tropical Bush2 + + + Palm2 tree + + + Cypress1 tree + + + Cypress2 tree + + + Pine2 tree + + + Plumeria + + + Winter pinetree1 + + + Winter Aspen tree + + + Winter pinetree2 + + + Eucalyptus tree + + + Fern + + + Eelgrass + + + Sea Sword + + + Kelp1 plant + + + Beach grass + + + Kelp2 plant + + + + Grass foliage types + + + + + + + + + + + + + + + + + + + + + + + Action associated with clicking on an object + + + + Touch object + + + Sit on object + + + Purchase object or contents + + + Pay the object + + + Open task inventory + + + Play parcel media + + + Open parcel media + + + + A set of textures that are layered on texture of each other and "baked" + in to a single texture, for avatar appearances + + + + Final baked texture + + + Component layers + + + Width of the final baked image and scratchpad + + + Height of the final baked image and scratchpad + + + Bake type + + + + Default constructor + + Bake type + + + + Adds layer for baking + + TexturaData struct that contains texture and its params + + + + Converts avatar texture index (face) to Bake type + + Face number (AvatarTextureIndex) + BakeType, layer to which this texture belongs to + + + + Make sure images exist, resize source if needed to match the destination + + Destination image + Source image + Sanitization was succefull + + + + Fills a baked layer as a solid *appearing* color. The colors are + subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from + compressing it too far since it seems to cause upload failures if + the image is a pure solid color + + Color of the base of this layer + + + + Fills a baked layer as a solid *appearing* color. The colors are + subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from + compressing it too far since it seems to cause upload failures if + the image is a pure solid color + + Red value + Green value + Blue value + + + Final baked texture + + + Component layers + + + Width of the final baked image and scratchpad + + + Height of the final baked image and scratchpad + + + Bake type + + + Is this one of the 3 skin bakes + + + The event subscribers. null if no subcribers + + + Raises the LandPatchReceived event + A LandPatchReceivedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + + Default constructor + + + + + + Retrieve the terrain height at a given coordinate + + The region that the point of interest is in + Sim X coordinate, valid range is from 0 to 255 + Sim Y coordinate, valid range is from 0 to 255 + The terrain height at the given point if the + lookup was successful, otherwise 0.0f + True if the lookup was successful, otherwise false + + + Raised when the simulator responds sends + + + Simulator from that sent tha data + + + Sim coordinate of the patch + + + Sim coordinate of the patch + + + Size of tha patch + + + Heightmap for the patch + + + + The InternalDictionary class is used through the library for storing key/value pairs. + It is intended to be a replacement for the generic Dictionary class and should + be used in its place. It contains several methods for allowing access to the data from + outside the library that are read only and thread safe. + + + Key + Value + + + Internal dictionary that this class wraps around. Do not + modify or enumerate the contents of this dictionary without locking + on this member + + + + Initializes a new instance of the Class + with the specified key/value, has the default initial capacity. + + + + // initialize a new InternalDictionary named testDict with a string as the key and an int as the value. + public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(); + + + + + + Initializes a new instance of the Class + with the specified key/value, has its initial valies copied from the specified + + + + to copy initial values from + + + // initialize a new InternalDictionary named testAvName with a UUID as the key and an string as the value. + // populates with copied values from example KeyNameCache Dictionary. + + // create source dictionary + Dictionary<UUID, string> KeyNameCache = new Dictionary<UUID, string>(); + KeyNameCache.Add("8300f94a-7970-7810-cf2c-fc9aa6cdda24", "Jack Avatar"); + KeyNameCache.Add("27ba1e40-13f7-0708-3e98-5819d780bd62", "Jill Avatar"); + + // Initialize new dictionary. + public InternalDictionary<UUID, string> testAvName = new InternalDictionary<UUID, string>(KeyNameCache); + + + + + + Initializes a new instance of the Class + with the specified key/value, With its initial capacity specified. + + Initial size of dictionary + + + // initialize a new InternalDictionary named testDict with a string as the key and an int as the value, + // initially allocated room for 10 entries. + public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(10); + + + + + + Try to get entry from with specified key + + Key to use for lookup + Value returned + if specified key exists, if not found + + + // find your avatar using the Simulator.ObjectsAvatars InternalDictionary: + Avatar av; + if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) + Console.WriteLine("Found Avatar {0}", av.Name); + + + + + + + Finds the specified match. + + The match. + Matched value + + + // use a delegate to find a prim in the ObjectsPrimitives InternalDictionary + // with the ID 95683496 + uint findID = 95683496; + Primitive findPrim = sim.ObjectsPrimitives.Find( + delegate(Primitive prim) { return prim.ID == findID; }); + + + + + Find All items in an + return matching items. + a containing found items. + + Find All prims within 20 meters and store them in a List + + int radius = 20; + List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( + delegate(Primitive prim) { + Vector3 pos = prim.Position; + return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); + } + ); + + + + + Find All items in an + return matching keys. + a containing found keys. + + Find All keys which also exist in another dictionary + + List<UUID> matches = myDict.FindAll( + delegate(UUID id) { + return myOtherDict.ContainsKey(id); + } + ); + + + + + Perform an on each entry in an + to perform + + + // Iterates over the ObjectsPrimitives InternalDictionary and prints out some information. + Client.Network.CurrentSim.ObjectsPrimitives.ForEach( + delegate(Primitive prim) + { + if (prim.Text != null) + { + Console.WriteLine("NAME={0} ID = {1} TEXT = '{2}'", + prim.PropertiesFamily.Name, prim.ID, prim.Text); + } + }); + + + + + Perform an on each key of an + to perform + + + + Perform an on each KeyValuePair of an + + to perform + + + Check if Key exists in Dictionary + Key to check for + if found, otherwise + + + Check if Value exists in Dictionary + Value to check for + if found, otherwise + + + + Adds the specified key to the dictionary, dictionary locking is not performed, + + + The key + The value + + + + Removes the specified key, dictionary locking is not performed + + The key. + if successful, otherwise + + + + Gets the number of Key/Value pairs contained in the + + + + + Indexer for the dictionary + + The key + The value + + + + Avatar group management + + + + Key of Group Member + + + Total land contribution + + + Online status information + + + Abilities that the Group Member has + + + Current group title + + + Is a group owner + + + + Role manager for a group + + + + Key of the group + + + Key of Role + + + Name of Role + + + Group Title associated with Role + + + Description of Role + + + Abilities Associated with Role + + + Returns the role's title + The role's title + + + + Class to represent Group Title + + + + Key of the group + + + ID of the role title belongs to + + + Group Title + + + Whether title is Active + + + Returns group title + + + + Represents a group on the grid + + + + Key of Group + + + Key of Group Insignia + + + Key of Group Founder + + + Key of Group Role for Owners + + + Name of Group + + + Text of Group Charter + + + Title of "everyone" role + + + Is the group open for enrolement to everyone + + + Will group show up in search + + + + + + + + + + + + Is the group Mature + + + Cost of group membership + + + + + + + + + The total number of current members this group has + + + The number of roles this group has configured + + + Show this group in agent's profile + + + Returns the name of the group + A string containing the name of the group + + + + A group Vote + + + + Key of Avatar who created Vote + + + Text of the Vote proposal + + + Total number of votes + + + + A group proposal + + + + The Text of the proposal + + + The minimum number of members that must vote before proposal passes or failes + + + The required ration of yes/no votes required for vote to pass + The three options are Simple Majority, 2/3 Majority, and Unanimous + TODO: this should be an enum + + + The duration in days votes are accepted + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Struct representing a group notice + + + + + + + + + + + + + + + + + + + + + + + Struct representing a group notice list entry + + + + Notice ID + + + Creation timestamp of notice + + + Agent name who created notice + + + Notice subject + + + Is there an attachment? + + + Attachment Type + + + + Struct representing a member of a group chat session and their settings + + + + The of the Avatar + + + True if user has voice chat enabled + + + True of Avatar has moderator abilities + + + True if a moderator has muted this avatars chat + + + True if a moderator has muted this avatars voice + + + + Role update flags + + + + + + + + + + + + + + + + + + + + + + + + + Can send invitations to groups default role + + + Can eject members from group + + + Can toggle 'Open Enrollment' and change 'Signup fee' + + + Member is visible in the public member list + + + Can create new roles + + + Can delete existing roles + + + Can change Role names, titles and descriptions + + + Can assign other members to assigners role + + + Can assign other members to any role + + + Can remove members from roles + + + Can assign and remove abilities in roles + + + Can change group Charter, Insignia, 'Publish on the web' and which + members are publicly visible in group member listings + + + Can buy land or deed land to group + + + Can abandon group owned land to Governor Linden on mainland, or Estate owner for + private estates + + + Can set land for-sale information on group owned parcels + + + Can subdivide and join parcels + + + Can join group chat sessions + + + Can use voice chat in Group Chat sessions + + + Can moderate group chat sessions + + + Can toggle "Show in Find Places" and set search category + + + Can change parcel name, description, and 'Publish on web' settings + + + Can set the landing point and teleport routing on group land + + + Can change music and media settings + + + Can toggle 'Edit Terrain' option in Land settings + + + Can toggle various About Land > Options settings + + + Can always terraform land, even if parcel settings have it turned off + + + Can always fly while over group owned land + + + Can always rez objects on group owned land + + + Can always create landmarks for group owned parcels + + + Can set home location on any group owned parcel + + + Can modify public access settings for group owned parcels + + + Can manager parcel ban lists on group owned land + + + Can manage pass list sales information + + + Can eject and freeze other avatars on group owned land + + + Can return objects set to group + + + Can return non-group owned/set objects + + + Can return group owned objects + + + Can landscape using Linden plants + + + Can deed objects to group + + + Can move group owned objects + + + Can set group owned objects for-sale + + + Pay group liabilities and receive group dividends + + + Can send group notices + + + Can receive group notices + + + Can create group proposals + + + Can vote on group proposals + + + + Handles all network traffic related to reading and writing group + information + + + + The event subscribers. null if no subcribers + + + Raises the CurrentGroups event + A CurrentGroupsEventArgs object containing the + data sent from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupNamesReply event + A GroupNamesEventArgs object containing the + data response from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupProfile event + An GroupProfileEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupMembers event + A GroupMembersEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupRolesDataReply event + A GroupRolesDataReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupRoleMembersReply event + A GroupRolesRoleMembersReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupTitlesReply event + A GroupTitlesReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupAccountSummary event + A GroupAccountSummaryReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupCreated event + An GroupCreatedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupJoined event + A GroupOperationEventArgs object containing the + result of the operation returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupLeft event + A GroupOperationEventArgs object containing the + result of the operation returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupDropped event + An GroupDroppedEventArgs object containing the + the group your agent left + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupMemberEjected event + An GroupMemberEjectedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupNoticesListReply event + An GroupNoticesListReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupInvitation event + An GroupInvitationEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + A reference to the current instance + + + Currently-active group members requests + + + Currently-active group roles requests + + + Currently-active group role-member requests + + + Dictionary keeping group members while request is in progress + + + Dictionary keeping mebmer/role mapping while request is in progress + + + Dictionary keeping GroupRole information while request is in progress + + + Caches group name lookups + + + + Construct a new instance of the GroupManager class + + A reference to the current instance + + + + Request a current list of groups the avatar is a member of. + + CAPS Event Queue must be running for this to work since the results + come across CAPS. + + + + Lookup name of group based on groupID + + groupID of group to lookup name for. + + + + Request lookup of multiple group names + + List of group IDs to request. + + + Lookup group profile data such as name, enrollment, founder, logo, etc + Subscribe to OnGroupProfile event to receive the results. + group ID (UUID) + + + Request a list of group members. + Subscribe to OnGroupMembers event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Request group roles + Subscribe to OnGroupRoles event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Request members (members,role) role mapping for a group. + Subscribe to OnGroupRolesMembers event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Request a groups Titles + Subscribe to OnGroupTitles event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Begin to get the group account summary + Subscribe to the OnGroupAccountSummary event to receive the results. + group ID (UUID) + How long of an interval + Which interval (0 for current, 1 for last) + + + Invites a user to a group + The group to invite to + A list of roles to invite a person to + Key of person to invite + + + Set a group as the current active group + group ID (UUID) + + + Change the role that determines your active title + Group ID to use + Role ID to change to + + + Set this avatar's tier contribution + Group ID to change tier in + amount of tier to donate + + + + Save wheather agent wants to accept group notices and list this group in their profile + + Group + Accept notices from this group + List this group in the profile + + + Request to join a group + Subscribe to OnGroupJoined event for confirmation. + group ID (UUID) to join. + + + + Request to create a new group. If the group is successfully + created, L$100 will automatically be deducted + + Subscribe to OnGroupCreated event to receive confirmation. + Group struct containing the new group info + + + Update a group's profile and other information + Groups ID (UUID) to update. + Group struct to update. + + + Eject a user from a group + Group ID to eject the user from + Avatar's key to eject + + + Update role information + Modified role to be updated + + + Create a new group role + Group ID to update + Role to create + + + Delete a group role + Group ID to update + Role to delete + + + Remove an avatar from a role + Group ID to update + Role ID to be removed from + Avatar's Key to remove + + + Assign an avatar to a role + Group ID to update + Role ID to assign to + Avatar's ID to assign to role + + + Request the group notices list + Group ID to fetch notices for + + + Request a group notice by key + ID of group notice + + + Send out a group notice + Group ID to update + GroupNotice structure containing notice data + + + Start a group proposal (vote) + The Group ID to send proposal to + GroupProposal structure containing the proposal + + + Request to leave a group + Subscribe to OnGroupLeft event to receive confirmation + The group to leave + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the simulator sends us data containing + our current group membership + + + Raised when the simulator responds to a RequestGroupName + or RequestGroupNames request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when a response to a RequestGroupAccountSummary is returned + by the simulator + + + Raised when a request to create a group is successful + + + Raised when a request to join a group either + fails or succeeds + + + Raised when a request to leave a group either + fails or succeeds + + + Raised when A group is removed from the group server + + + Raised when a request to eject a member from a group either + fails or succeeds + + + Raised when the simulator sends us group notices + + + + Raised when another agent invites our avatar to join a group + + + Contains the current groups your agent is a member of + + + Construct a new instance of the CurrentGroupsEventArgs class + The current groups your agent is a member of + + + Get the current groups your agent is a member of + + + A Dictionary of group names, where the Key is the groups ID and the value is the groups name + + + Construct a new instance of the GroupNamesEventArgs class + The Group names dictionary + + + Get the Group Names dictionary + + + Represents the members of a group + + + + Construct a new instance of the GroupMembersReplyEventArgs class + + The ID of the request + The ID of the group + The membership list of the group + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the dictionary of members + + + Represents the roles associated with a group + + + Construct a new instance of the GroupRolesDataReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The dictionary containing the roles + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the dictionary containing the roles + + + Represents the Role to Member mappings for a group + + + Construct a new instance of the GroupRolesMembersReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The member to roles map + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the member to roles map + + + Represents the titles for a group + + + Construct a new instance of the GroupTitlesReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The titles + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the titles + + + Represents the summary data for a group + + + Construct a new instance of the GroupAccountSummaryReplyEventArgs class + The ID of the group + The summary data + + + Get the ID of the group + + + Get the summary data + + + A response to a group create request + + + Construct a new instance of the GroupCreatedReplyEventArgs class + The ID of the group + the success or faulure of the request + A string containing additional information + + + Get the ID of the group + + + true of the group was created successfully + + + A string containing the message + + + Represents a response to a request + + + Construct a new instance of the GroupOperationEventArgs class + The ID of the group + true of the request was successful + + + Get the ID of the group + + + true of the request was successful + + + Represents your agent leaving a group + + + Construct a new instance of the GroupDroppedEventArgs class + The ID of the group + + + Get the ID of the group + + + Represents a list of active group notices + + + Construct a new instance of the GroupNoticesListReplyEventArgs class + The ID of the group + The list containing active notices + + + Get the ID of the group + + + Get the notices list + + + Represents the profile of a group + + + Construct a new instance of the GroupProfileEventArgs class + The group profile + + + Get the group profile + + + + Provides notification of a group invitation request sent by another Avatar + + The invitation is raised when another avatar makes an offer for our avatar + to join a group. + + + The ID of the Avatar sending the group invitation + + + The name of the Avatar sending the group invitation + + + A message containing the request information which includes + the name of the group, the groups charter and the fee to join details + + + The Simulator + + + Set to true to accept invitation, false to decline + + + + Wrapper around a byte array that allows bit to be packed and unpacked + one at a time or by a variable amount. Useful for very tightly packed + data like LayerData packets + + + + + + + + Default constructor, initialize the bit packer / bit unpacker + with a byte array and starting position + + Byte array to pack bits in to or unpack from + Starting position in the byte array + + + + Pack a floating point value in to the data + + Floating point value to pack + + + + Pack part or all of an integer in to the data + + Integer containing the data to pack + Number of bits of the integer to pack + + + + Pack part or all of an unsigned integer in to the data + + Unsigned integer containing the data to pack + Number of bits of the integer to pack + + + + + + + + + + + + + + + + + + + + + + + + + Unpacking a floating point value from the data - Signed eight bit value to unpack Unpacked floating point value - + - The type of bump-mapping applied to a face + Unpack a variable number of bits from the data in to integer format + + Number of bits to unpack + An integer containing the unpacked bits + This function is only useful up to 32 bits + + + + Unpack a variable number of bits from the data in to unsigned + integer format + + Number of bits to unpack + An unsigned integer containing the unpacked bits + This function is only useful up to 32 bits + + + + Unpack a 16-bit signed integer + + 16-bit signed integer + + + + Unpack a 16-bit unsigned integer + + 16-bit unsigned integer + + + + Unpack a 32-bit signed integer + + 32-bit signed integer + + + + Unpack a 32-bit unsigned integer + + 32-bit unsigned integer + + + + + + + + + + Avatar profile flags - + + Represents an avatar (other than your own) - + + Groups that this avatar is a member of + + + Positive and negative ratings + + + Avatar properties including about text, profile URL, image IDs and + publishing settings + + + Avatar interests including spoken languages, skills, and "want to" + choices + + + Movement control flags for avatars. Typically not set or used by + clients. To move your avatar, use Client.Self.Movement instead + + + Contains the visual parameters describing the deformation of the avatar - + + Default constructor - + + First name + + + Last name + + + Full name + + + Active group + + + Positive and negative ratings - + + Positive ratings for Behavior + + + Negative ratings for Behavior + + + Positive ratings for Appearance + + + Negative ratings for Appearance + + + Positive ratings for Building + + + Negative ratings for Building + + + Positive ratings given by this avatar + + + Negative ratings given by this avatar + + + Avatar properties including about text, profile URL, image IDs and + publishing settings - + + First Life about text + + + First Life image ID + + + + + + + + + + + + + + + Profile image ID + + + Flags of the profile + + + Web URL for this profile + + + Should this profile be published on the web + + + Avatar Online Status + + + Is this a mature profile + + + + + + + + + Avatar interests including spoken languages, skills, and "want to" + choices - + + Languages profile field + + + + + + + + + + + + + + + Index of TextureEntry slots for avatar appearances - + + Bake layers for avatar appearance - + + Maximum number of concurrent downloads for wearable assets and textures + + + Maximum number of concurrent uploads for baked textures + + + Timeout for fetching inventory listings + + + Timeout for fetching a single wearable, or receiving a single packet response + + + Timeout for fetching a single texture + + + Timeout for uploading a single baked texture + + + Number of times to retry bake upload + + + When changing outfit, kick off rebake after + 20 seconds has passed since the last change + + + Total number of wearables for each avatar + + + Total number of baked textures on each avatar + + + Total number of wearables per bake layer + + + Total number of textures on an avatar, baked or not + + + Mapping between BakeType and AvatarTextureIndex + + + Map of what wearables are included in each bake + + + Magic values to finalize the cache check hashes for each + bake + + + Default avatar texture, used to detect when a custom + texture is not set for a face + + + The event subscribers. null if no subcribers + + + Raises the AgentWearablesReply event + An AgentWearablesReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the CachedBakesReply event + An AgentCachedBakesReplyEventArgs object containing the + data returned from the data server AgentCachedTextureResponse + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the AppearanceSet event + An AppearanceSetEventArgs object indicating if the operatin was successfull + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the RebakeAvatarRequested event + An RebakeAvatarTexturesEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + A cache of wearables currently being worn + + + A cache of textures currently being worn + + + Incrementing serial number for AgentCachedTexture packets + + + Incrementing serial number for AgentSetAppearance packets + + + Indicates whether or not the appearance thread is currently + running, to prevent multiple appearance threads from running + simultaneously + + + Reference to our agent + + + Timer used for delaying rebake on changing outfit - + + Main appearance thread - + + Default constructor + + A reference to our agent + + + + Obsolete method for setting appearance. This function no longer does anything. + Use RequestSetAppearance() to manually start the appearance thread - + + Obsolete method for setting appearance. This function no longer does anything. + Use RequestSetAppearance() to manually start the appearance thread + + Unused parameter + + + + Starts the appearance setting thread - + + Starts the appearance setting thread + + True to force rebaking, otherwise false + + + + Ask the server what textures our agent is currently wearing - + + Build hashes out of the texture assetIDs for each baking layer to + ask the simulator whether it has cached copies of each baked texture - + + Returns the AssetID of the asset that is currently being worn in a + given WearableType slot + + WearableType slot to get the AssetID for + The UUID of the asset being worn in the given slot, or + UUID.Zero if no wearable is attached to the given slot or wearables + have not been downloaded yet + + + + Add a wearable to the current outfit and set appearance + + Wearable to be added to the outfit + + + + Add a list of wearables to the current outfit and set appearance + + List of wearable inventory items to + be added to the outfit + + + + Remove a wearable from the current outfit and set appearance + + Wearable to be removed from the outfit + + + + Removes a list of wearables from the current outfit and set appearance + + List of wearable inventory items to + be removed from the outfit + + + + Replace the current outfit with a list of wearables and set appearance + + List of wearable inventory items that + define a new outfit + + + + Checks if an inventory item is currently being worn + + The inventory item to check against the agent + wearables + The WearableType slot that the item is being worn in, + or WearbleType.Invalid if it is not currently being worn + + + + Returns a copy of the agents currently worn wearables + + A copy of the agents currently worn wearables + Avoid calling this function multiple times as it will make + a copy of all of the wearable data each time + + + + Calls either or + depending on the value of + replaceItems + + List of wearable inventory items to add + to the outfit or become a new outfit + True to replace existing items with the + new list of items, false to add these items to the existing outfit + + + + Adds a list of attachments to our agent + + A List containing the attachments to add + If true, tells simulator to remove existing attachment + first + + + + Attach an item to our agent at a specific attach point + + A to attach + the on the avatar + to attach the item to + + + + Attach an item to our agent specifying attachment details + + The of the item to attach + The attachments owner + The name of the attachment + The description of the attahment + The to apply when attached + The of the attachment + The on the agent + to attach the item to + + + + Detach an item from our agent using an object + + An object + + + + Detach an item from our agent + + The inventory itemID of the item to detach + + + + Inform the sim which wearables are part of our current outfit - + + Replaces the Wearables collection with a list of new wearable items + + Wearable items to replace the Wearables collection with + + + + Calculates base color/tint for a specific wearable + based on its params + + All the color info gathered from wearable's VisualParams + passed as list of ColorParamInfo tuples + Base color/tint for the wearable + + + + Blocking method to populate the Wearables dictionary + + True on success, otherwise false + + + + Blocking method to populate the Textures array with cached bakes + + True on success, otherwise false + + + + Populates textures and visual params from a decoded asset + + Wearable to decode + + + + Blocking method to download and parse currently worn wearable assets + + True on success, otherwise false + + + + Get a list of all of the textures that need to be downloaded for a + single bake layer + + Bake layer to get texture AssetIDs for + A list of texture AssetIDs to download + + + + Helper method to lookup the TextureID for a single layer and add it + to a list if it is not already present + + + + + + + Blocking method to download all of the textures needed for baking + the given bake layers + + A list of layers that need baking + No return value is given because the baking will happen + whether or not all textures are successfully downloaded + + + + Blocking method to create and upload baked textures for all of the + missing bakes + + True on success, otherwise false + + + + Blocking method to create and upload a baked texture for a single + bake layer + + Layer to bake + True on success, otherwise false + + + + Blocking method to upload a baked texture + + Five channel JPEG2000 texture data to upload + UUID of the newly created asset on success, otherwise UUID.Zero + + + + Creates a dictionary of visual param values from the downloaded wearables + + A dictionary of visual param indices mapping to visual param + values for our agent that can be fed to the Baker class + + + + Create an AgentSetAppearance packet from Wearables data and the + Textures array and send it - + + Converts a WearableType to a bodypart or clothing WearableType + + A WearableType + AssetType.Bodypart or AssetType.Clothing or AssetType.Unknown + + + + Converts a BakeType to the corresponding baked texture slot in AvatarTextureIndex + + A BakeType + The AvatarTextureIndex slot that holds the given BakeType + + + + Gives the layer number that is used for morph mask + + >A BakeType + Which layer number as defined in BakeTypeToTextures is used for morph mask + + + + Converts a BakeType to a list of the texture slots that make up that bake + + A BakeType + A list of texture slots that are inputs for the given bake + + + Triggered when an AgentWearablesUpdate packet is received, + telling us what our avatar is currently wearing + request. + + + Raised when an AgentCachedTextureResponse packet is + received, giving a list of cached bakes that were found on the + simulator + request. + + + + Raised when appearance data is sent to the simulator, also indicates + the main appearance thread is finished. + + request. + + + + Triggered when the simulator requests the agent rebake its appearance. + + + + + + Returns true if AppearanceManager is busy and trying to set or change appearance will fail - + + Contains information about a wearable inventory item - + + Inventory ItemID of the wearable + + + AssetID of the wearable asset + + + WearableType of the wearable + + + AssetType of the wearable + + + Asset data for the wearable + + - The level of shininess applied to a face + Data collected from visual params for each wearable + needed for the calculation of the color - + + Holds a texture assetID and the data needed to bake this layer into + an outfit texture. Used to keep track of currently worn textures + and baking data - + + A texture AssetID + + + Asset data for the texture + + + Collection of alpha masks that needs applying + + + Tint that should be applied to the texture + + + Contains the Event data returned from the data server from an AgentWearablesRequest + + + Construct a new instance of the AgentWearablesReplyEventArgs class + + + Contains the Event data returned from the data server from an AgentCachedTextureResponse + + + Construct a new instance of the AgentCachedBakesReplyEventArgs class + + + Contains the Event data returned from an AppearanceSetRequest + + + Triggered when appearance data is sent to the sim and + the main appearance thread is done. + Indicates whether appearance setting was successful + + + Indicates whether appearance setting was successful + + + Contains the Event data returned from the data server from an RebakeAvatarTextures + + + + Triggered when the simulator sends a request for this agent to rebake + its appearance + + The ID of the Texture Layer to bake + + + The ID of the Texture Layer to bake + + + + Registers, unregisters, and fires events generated by incoming packets - + + Reference to the GridClient object + + + Default constructor + + + + + + Register an event handler + + Use PacketType.Default to fire this event on every + incoming packet + Packet type to register the handler for + Callback to be fired + + + + Unregister an event handler + + Packet type to unregister the handler for + Callback to be unregistered + + + + Fire the events registered for this packet type synchronously + + Incoming packet type + Incoming packet + Simulator this packet was received from + + + + Fire the events registered for this packet type asynchronously + + Incoming packet type + Incoming packet + Simulator this packet was received from + + + + Object that is passed to worker threads in the ThreadPool for + firing packet callbacks - + + Callback to fire for this packet + + + Reference to the simulator that this packet came from + + + The packet that needs to be processed + + + Registers, unregisters, and fires events generated by the Capabilities + event queue - + + Reference to the GridClient object + + - The texture mapping style used for a face + Default constructor + + Reference to the GridClient object + + + + Register an new event handler for a capabilities event sent via the EventQueue + + Use String.Empty to fire this event on every CAPS event + Capability event name to register the + handler for + Callback to fire + + + + Unregister a previously registered capabilities handler + + Capability event name unregister the + handler for + Callback to unregister + + + + Fire the events registered for this event type synchronously + + Capability name + Decoded event body + Reference to the simulator that + generated this event + + + + Fire the events registered for this event type asynchronously + + Capability name + Decoded event body + Reference to the simulator that + generated this event + + + + Object that is passed to worker threads in the ThreadPool for + firing CAPS callbacks - + + Callback to fire for this packet + + + Name of the CAPS event + + + Strongly typed decoded data + + + Reference to the simulator that generated this event + + + Access to the data server which allows searching for land, events, people, etc - + + The event subscribers. null if no subcribers + + + Raises the EventInfoReply event + An EventInfoReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirEventsReply event + An DirEventsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the PlacesReply event + A PlacesReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirPlacesReply event + A DirPlacesReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirClassifiedsReply event + A DirClassifiedsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirGroupsReply event + A DirGroupsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirPeopleReply event + A DirPeopleReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirLandReply event + A DirLandReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Constructs a new instance of the DirectoryManager class + An instance of GridClient - + + Query the data server for a list of classified ads containing the specified string. + Defaults to searching for classified placed in any category, and includes PG, Adult and Mature + results. + + Responses are sent 16 per response packet, there is no way to know how many results a query reply will contain however assuming + the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received + + The event is raised when a response is received from the simulator + A string containing a list of keywords to search for + A UUID to correlate the results when the event is raised - + + Query the data server for a list of classified ads which contain specified keywords (Overload) + + The event is raised when a response is received from the simulator + A string containing a list of keywords to search for + The category to search + A set of flags which can be ORed to modify query options + such as classified maturity rating. + A UUID to correlate the results when the event is raised + + Search classified ads containing the key words "foo" and "bar" in the "Any" category that are either PG or Mature + + UUID searchID = StartClassifiedSearch("foo bar", ClassifiedCategories.Any, ClassifiedQueryFlags.PG | ClassifiedQueryFlags.Mature); + + + + Responses are sent 16 at a time, there is no way to know how many results a query reply will contain however assuming + the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received + - + - Flags in the TextureEntry block that describe which properties are - set + Starts search for places (Overloaded) + + The event is raised when a response is received from the simulator + Search text + Each request is limited to 100 places + being returned. To get the first 100 result entries of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + A UUID to correlate the results when the event is raised - + + Queries the dataserver for parcels of land which are flagged to be shown in search + + The event is raised when a response is received from the simulator + A string containing a list of keywords to search for separated by a space character + A set of flags which can be ORed to modify query options + such as classified maturity rating. + The category to search + Each request is limited to 100 places + being returned. To get the first 100 result entries of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + A UUID to correlate the results when the event is raised + + Search places containing the key words "foo" and "bar" in the "Any" category that are either PG or Adult + + UUID searchID = StartDirPlacesSearch("foo bar", DirFindFlags.DwellSort | DirFindFlags.IncludePG | DirFindFlags.IncludeAdult, ParcelCategory.Any, 0); + + + + Additional information on the results can be obtained by using the ParcelManager.InfoRequest method + - + + Starts a search for land sales using the directory + + The event is raised when a response is received from the simulator + What type of land to search for. Auction, + estate, mainland, "first land", etc + The OnDirLandReply event handler must be registered before + calling this function. There is no way to determine how many + results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each query. - + + Starts a search for land sales using the directory + + The event is raised when a response is received from the simulator + What type of land to search for. Auction, + estate, mainland, "first land", etc + Maximum price to search for + Maximum area to search for + Each request is limited to 100 parcels + being returned. To get the first 100 parcels of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + The OnDirLandReply event handler must be registered before + calling this function. There is no way to determine how many + results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each query. - + + Send a request to the data server for land sales listings - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Level of Detail mesh - - - - - Constructor for default logging settings - - - - Enable logging - - - The folder where any logs will be created - - - This will be prepended to beginning of each log file - - - The suffix or extension to be appended to each log file - - - - 0: NONE - No logging - 1: ERROR - Log errors only - 2: WARNING - Log errors and warnings - 3: INFO - Log errors, warnings and info - 4: DEBUG - Log errors, warnings, info and debug - - - - Audio Properties Events are sent after audio capture is started. These events are used to display a microphone VU meter - - - Event for most mundane request reposnses. - - - - Response to Connector.Create request - - - Response to Aux.GetCaptureDevices request - - - Response to Aux.GetRenderDevices request - - - Audio Properties Events are sent after audio capture is started. - These events are used to display a microphone VU meter - - - Response to Account.Login request - - - This event message is sent whenever the login state of the - particular Account has transitioned from one value to another - - - - List of audio input devices - - - - - List of audio output devices - - - - - Set audio test mode - - - - - This is used to login a specific user account(s). It may only be called after - Connector initialization has completed successfully - - Handle returned from successful Connector �create� request - User's account name - User's account password - Values may be �AutoAnswer� or �VerifyAnswer� - "" - This is an integer that specifies how often - the daemon will send participant property events while in a channel. If this is not set - the default will be �on state change�, which means that the events will be sent when - the participant starts talking, stops talking, is muted, is unmuted. - The valid values are: - 0 � Never - 5 � 10 times per second - 10 � 5 times per second - 50 � 1 time per second - 100 � on participant state change (this is the default) - false - - - - - - This is used to logout a user session. It should only be called with a valid AccountHandle. - - Handle returned from successful Connector �login� request - - - - - - This is used to get a list of audio devices that can be used for capture (input) of voice. - - - - - - - This is used to get a list of audio devices that can be used for render (playback) of voice. - - - - - This command is used to select the render device. - - The name of the device as returned by the Aux.GetRenderDevices command. - - - - This command is used to select the capture device. - - The name of the device as returned by the Aux.GetCaptureDevices command. - - - - This command is used to start the audio capture process which will cause - AuxAudioProperty Events to be raised. These events can be used to display a - microphone VU meter for the currently selected capture device. This command - should not be issued if the user is on a call. - - (unused but required) - - - - - - This command is used to stop the audio capture process. - - - - - - - This command is used to set the mic volume while in the audio tuning process. - Once an acceptable mic level is attained, the application must issue a - connector set mic volume command to have that level be used while on voice - calls. - - the microphone volume (-100 to 100 inclusive) - - - - - - This command is used to set the speaker volume while in the audio tuning - process. Once an acceptable speaker level is attained, the application must - issue a connector set speaker volume command to have that level be used while - on voice calls. - - the speaker volume (-100 to 100 inclusive) - - - - - - This is used to initialize and stop the Connector as a whole. The Connector - Create call must be completed successfully before any other requests are made - (typically during application initialization). The shutdown should be called - when the application is shutting down to gracefully release resources - - A string value indicting the Application name - URL for the management server - LoggingSettings - - - + + Flags sent to specify query options + + Available flags: + Specify the parcel rating with one or more of the following: + IncludePG IncludeMature IncludeAdult + + Specify the field to pre sort the results with ONLY ONE of the following: + PerMeterSort NameSort AreaSort PricesSort + + Specify the order the results are returned in, if not specified the results are pre sorted in a Descending Order + SortAsc + + Specify additional filters to limit the results with one or both of the following: + LimitByPrice LimitByArea + + Flags can be combined by separating them with the | (pipe) character + + Additional details can be found in + What type of land to search for. Auction, + Estate or Mainland + Maximum price to search for when the + DirFindFlags.LimitByPrice flag is specified in findFlags + Maximum area to search for when the + DirFindFlags.LimitByArea flag is specified in findFlags + Each request is limited to 100 parcels + being returned. To get the first 100 parcels of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + The event will be raised with the response from the simulator + + There is no way to determine how many results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each reply. + + Any land set for sale to either anybody or specific to the connected agent will be included in the + results if the land is included in the query + + + // request all mainland, any maturity rating that is larger than 512 sq.m + StartLandSearch(DirFindFlags.SortAsc | DirFindFlags.PerMeterSort | DirFindFlags.LimitByArea | DirFindFlags.IncludePG | DirFindFlags.IncludeMature | DirFindFlags.IncludeAdult, SearchTypeFlags.Mainland, 0, 512, 0); + - + - Shutdown Connector -- Should be called when the application is shutting down - to gracefully release resources + Search for Groups - Handle returned from successful Connector �create� request + The name or portion of the name of the group you wish to search for + Start from the match number + - + - Mute or unmute the microphone + Search for Groups - Handle returned from successful Connector �create� request - true (mute) or false (unmute) + The name or portion of the name of the group you wish to search for + Start from the match number + Search flags + - + - Mute or unmute the speaker + Search the People directory for other avatars - Handle returned from successful Connector �create� request - true (mute) or false (unmute) + The name or portion of the name of the avatar you wish to search for + + - + - Set microphone volume - - Handle returned from successful Connector �create� request - The level of the audio, a number between -100 and 100 where - 0 represents �normal� speaking volume - - - - Set local speaker volume - - Handle returned from successful Connector �create� request - The level of the audio, a number between -100 and 100 where - 0 represents �normal� speaking volume - - - - Start up the Voice service. + Search Places for parcels of land you personally own - + - Handle miscellaneous request status + Searches Places for land owned by the specified group - - - - - ///If something goes wrong, we log it. - + ID of the group you want to recieve land list for (You must be a member of the group) + Transaction (Query) ID which can be associated with results from your request. + + - Cleanup oject resources + Search the Places directory for parcels that are listed in search and contain the specified keywords + + A string containing the keywords to search for + Transaction (Query) ID which can be associated with results from your request. + + + + Search Places - All Options + + One of the Values from the DirFindFlags struct, ie: AgentOwned, GroupOwned, etc. + One of the values from the SearchCategory Struct, ie: Any, Linden, Newcomer + A string containing a list of keywords to search for separated by a space character + String Simulator Name to search in + LLUID of group you want to recieve results for + Transaction (Query) ID which can be associated with results from your request. + Transaction (Query) ID which can be associated with results from your request. + + + + Search All Events with specifid searchText in all categories, includes PG, Mature and Adult + + A string containing a list of keywords to search for separated by a space character + Each request is limited to 100 entries + being returned. To get the first group of entries of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + UUID of query to correlate results in callback. + + + + Search Events + + A string containing a list of keywords to search for separated by a space character + One or more of the following flags: DateEvents, IncludePG, IncludeMature, IncludeAdult + from the Enum + + Multiple flags can be combined by separating the flags with the | (pipe) character + "u" for in-progress and upcoming events, -or- number of days since/until event is scheduled + For example "0" = Today, "1" = tomorrow, "2" = following day, "-1" = yesterday, etc. + Each request is limited to 100 entries + being returned. To get the first group of entries of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + EventCategory event is listed under. + UUID of query to correlate results in callback. + + + Requests Event Details + ID of Event returned from the method + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming event message + The Unique Capabilities Key + The event message containing the data + The simulator the message originated from + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming event message + The Unique Capabilities Key + The event message containing the data + The simulator the message originated from + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Classified Ad categories + + + Classified is listed in the Any category + + + Classified is shopping related + + + Classified is + + + + + + + + + + + + + + + + + + + + + + + + Event Categories + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Query Flags used in many of the DirectoryManager methods to specify which query to execute and how to return the results. + + Flags can be combined using the | (pipe) character, not all flags are available in all queries - + + Query the People database + + + + + + + + + Query the Groups database + + + Query the Events database + + + Query the land holdings database for land owned by the currently connected agent + + + + + + Query the land holdings database for land which is owned by a Group + + + Specifies the query should pre sort the results based upon traffic + when searching the Places database + + + + + + + + + + + + + + + Specifies the query should pre sort the results in an ascending order when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results using the SalePrice field when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results by calculating the average price/sq.m (SalePrice / Area) when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results using the ParcelSize field when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results using the Name field when searching the land sales database. + This flag is only used when searching the land sales database + + + When set, only parcels less than the specified Price will be included when searching the land sales database. + This flag is only used when searching the land sales database + + + When set, only parcels greater than the specified Size will be included when searching the land sales database. + This flag is only used when searching the land sales database + + + + + + + + + Include PG land in results. This flag is used when searching both the Groups, Events and Land sales databases + + + Include Mature land in results. This flag is used when searching both the Groups, Events and Land sales databases + + + Include Adult land in results. This flag is used when searching both the Groups, Events and Land sales databases + + + + + - Request voice cap when changing regions + Land types to search dataserver for - + + Search Auction, Mainland and Estate + + + Land which is currently up for auction + + + Parcels which are on the mainland (Linden owned) continents + + + Parcels which are on privately owned simulators + + - Handle a change in session state + The content rating of the event - - - Close a voice session - - - + + Event is PG - - - Locate a Session context from its handle - - Creates the session context if it does not exist. + + Event is Mature - - - Handle completion of main voice cap request. - - - - - - - + + Event is Adult - + - Daemon has started so connect to it. + Classified Ad Options + + There appear to be two formats the flags are packed in. + This set of flags is for the newer style + + + + + + + + + + + + + + + + + + + Classified ad query options - + + Include all ads in results + + + Include PG ads in results + + + Include Mature ads in results + + + Include Adult ads in results + + - The daemon TCP connection is open. + The For Sale flag in PlacesReplyData - + + Parcel is not listed for sale + + + Parcel is For Sale + + - Handle creation of the Connector. + A classified ad on the grid - + + UUID for this ad, useful for looking up detailed + information about it + + + The title of this classified ad + + + Flags that show certain options applied to the classified + + + Creation date of the ad + + + Expiration date of the ad + + + Price that was paid for this ad + + + Print the struct data as a string + A string containing the field name, and field value + + - Handle response to audio output device query + A parcel retrieved from the dataserver such as results from the + "For-Sale" listings or "Places" Search - + + The unique dataserver parcel ID + This id is used to obtain additional information from the entry + by using the method + + + A string containing the name of the parcel + + + The size of the parcel + This field is not returned for Places searches + + + The price of the parcel + This field is not returned for Places searches + + + If True, this parcel is flagged to be auctioned + + + If true, this parcel is currently set for sale + + + Parcel traffic + + + Print the struct data as a string + A string containing the field name, and field value + + - Handle response to audio input device query + An Avatar returned from the dataserver - + + Online status of agent + This field appears to be obsolete and always returns false + + + The agents first name + + + The agents last name + + + The agents + + + Print the struct data as a string + A string containing the field name, and field value + + - Set voice channel for new parcel + Response to a "Groups" Search - - - Request info from a parcel capability Uri. - - - + + The Group ID - - - Receive parcel voice cap - - - - - - - + + The name of the group - - - Tell Vivox where we are standing - - This has to be called when we move or turn. + + The current number of members - - - Start and stop updating out position. - - - + + Print the struct data as a string + A string containing the field name, and field value - + - Starts a thread that keeps the daemon running - - - - - - - - - Stops the daemon and the thread keeping it running + Parcel information returned from a request + + Represents one of the following: + A parcel of land on the grid that has its Show In Search flag set + A parcel of land owned by the agent making the request + A parcel of land owned by a group the agent making the request is a member of + + + In a request for Group Land, the First record will contain an empty record + + Note: This is not the same as searching the land for sale data source - + + The ID of the Agent of Group that owns the parcel + + + The name + + + The description + + + The Size of the parcel + + + The billable Size of the parcel, for mainland + parcels this will match the ActualArea field. For Group owned land this will be 10 percent smaller + than the ActualArea. For Estate land this will always be 0 + + + Indicates the ForSale status of the parcel + + + The Gridwide X position + + + The Gridwide Y position + + + The Z position of the parcel, or 0 if no landing point set + + + The name of the Region the parcel is located in + + + The Asset ID of the parcels Snapshot texture + + + The calculated visitor traffic + + + The billing product SKU + Known values are: + + 023Mainland / Full Region + 024Estate / Full Region + 027Estate / Openspace + 029Estate / Homestead + 129Mainland / Homestead (Linden Owned) + + + + + No longer used, will always be 0 + + + Get a SL URL for the parcel + A string, containing a standard SLURL + + + Print the struct data as a string + A string containing the field name, and field value + + - - - - - - - - - - - Create a Session - Sessions typically represent a connection to a media session with one or more - participants. This is used to generate an �outbound� call to another user or - channel. The specifics depend on the media types involved. A session handle is - required to control the local user functions within the session (or remote - users if the current account has rights to do so). Currently creating a - session automatically connects to the audio media, there is no need to call - Session.Connect at this time, this is reserved for future use. - - Handle returned from successful Connector �create� request - This is the URI of the terminating point of the session (ie who/what is being called) - This is the display name of the entity being called (user or channel) - Only needs to be supplied when the target URI is password protected - This indicates the format of the password as passed in. This can either be - �ClearText� or �SHA1UserName�. If this element does not exist, it is assumed to be �ClearText�. If it is - �SHA1UserName�, the password as passed in is the SHA1 hash of the password and username concatenated together, - then base64 encoded, with the final �=� character stripped off. - - - - - - - - - - Used to accept a call - - SessionHandle such as received from SessionNewEvent - "default" - - - - - - This command is used to start the audio render process, which will then play - the passed in file through the selected audio render device. This command - should not be issued if the user is on a call. - - The fully qualified path to the sound file. - True if the file is to be played continuously and false if it is should be played once. - - - - - - This command is used to stop the audio render process. - - The fully qualified path to the sound file issued in the start render command. - - - - - - This is used to �end� an established session (i.e. hang-up or disconnect). - - Handle returned from successful Session �create� request or a SessionNewEvent - - - - - - Set the combined speaking and listening position in 3D space. - - Handle returned from successful Session �create� request or a SessionNewEvent - Speaking position - Listening position - - - - - - Set User Volume for a particular user. Does not affect how other users hear that user. - - Handle returned from successful Session �create� request or a SessionNewEvent - - - The level of the audio, a number between -100 and 100 where 0 represents �normal� speaking volume - - - - - Positional vector of the users position - - - Velocity vector of the position - - - At Orientation (X axis) of the position - - - Up Orientation (Y axis) of the position - - - Left Orientation (Z axis) of the position - - - - Extract the avatar UUID encoded in a SIP URI - - - - - - - - - Represents a single Voice Session to the Vivox service. + An "Event" Listing summary - + + The ID of the event creator + + + The name of the event + + + The events ID + + + A string containing the short date/time the event will begin + + + The event start time in Unixtime (seconds since epoch) + + + The events maturity rating + + + Print the struct data as a string + A string containing the field name, and field value + + - Close this session. + The details of an "Event" - - - Look up an existing Participants in this session - - - - - + + The events ID - - - - - - - + + The ID of the event creator - + + The name of the event + + + The category + + + The events description + + + The short date/time the event will begin + + + The event start time in Unixtime (seconds since epoch) UTC adjusted + + + The length of the event in minutes + + + 0 if no cover charge applies + + + The cover charge amount in L$ if applicable + + + The name of the region where the event is being held + + + The gridwide location of the event + + + The maturity rating + + + Get a SL URL for the parcel where the event is hosted + A string, containing a standard SLURL + + + Print the struct data as a string + A string containing the field name, and field value + + + Contains the Event data returned from the data server from an EventInfoRequest + + + Construct a new instance of the EventInfoReplyEventArgs class + A single EventInfo object containing the details of an event + + - A callback fired to indicate the status or final state of the requested texture. For progressive - downloads this will fire each time new asset data is returned from the simulator. + A single EventInfo object containing the details of an event - The indicating either Progress for textures not fully downloaded, - or the final result of the request after it has been processed through the TexturePipeline - The object containing the Assets ID, raw data - and other information. For progressive rendering the will contain - the data from the beginning of the file. For failed, aborted and timed out requests it will contain - an empty byte array. + + + Contains the "Event" detail data returned from the data server + + + Construct a new instance of the DirEventsReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing the "Events" returned by the search query + + + The ID returned by + + + A list of "Events" returned by the data server + + + Contains the "Event" list data returned from the data server + + + Construct a new instance of PlacesReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing the "Places" returned by the data server query + + + The ID returned by + + + A list of "Places" returned by the data server + + + Contains the places data returned from the data server + + + Construct a new instance of the DirPlacesReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing land data returned by the data server + + + The ID returned by + + + A list containing Places data returned by the data server + + + Contains the classified data returned from the data server + + + Construct a new instance of the DirClassifiedsReplyEventArgs class + A list of classified ad data returned from the data server + + + A list containing Classified Ads returned by the data server + + + Contains the group data returned from the data server + + + Construct a new instance of the DirGroupsReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list of groups data returned by the data server + + + The ID returned by + + + A list containing Groups data returned by the data server + + + Contains the people data returned from the data server + + + Construct a new instance of the DirPeopleReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list of people data returned by the data server + + + The ID returned by + + + A list containing People data returned by the data server + + + Contains the land sales data returned from the data server + + + Construct a new instance of the DirLandReplyEventArgs class + A list of parcels for sale returned by the data server + + + A list containing land forsale data returned by the data server diff --git a/bin/OpenMetaverse.dll b/bin/OpenMetaverse.dll index b9c73b754b3c9ed6e07fcf03d8b68d33ecab5b6b..59e39bbf6019b264f17837be18c092c771dfc35a 100644 GIT binary patch literal 1691648 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

?n%(os)F+Snwdv@9p1q-oAZdHp+mnc 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

QJzdj^y63OU!so8q)mMAQD!Xq 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

>)&XGzF#x-Z#5VFJI$sa(5mSNwd(pI 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

Bz#t*)n;5pGFq?QqG_nA*DUkJ7G3qh*iuZC7z? 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

;tL*^nHH_I1C&CjsnLi=l4(GJY~+) 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 literal 1768960 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

s?VSFG1fo*X7k>Si>#G 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

- Same as Queue except Dequeue function blocks until there is an object to return. - Note: This class does not need to be synchronized + A hierarchical token bucket for bandwidth throttling. See + http://en.wikipedia.org/wiki/Token_bucket for more information - - - Create new BlockingQueue. - - The System.Collections.ICollection to copy elements from - - - - Create new BlockingQueue. - - The initial number of elements that the queue can contain - - - - Create new BlockingQueue. - - - - - Gets flag indicating if queue has been closed. - - - - - BlockingQueue Destructor (Close queue, resume any waiting thread). - - - - - Remove all objects from the Queue. - - - - - Remove all objects from the Queue, resume all dequeue threads. - - - - - Removes and returns the object at the beginning of the Queue. - - Object in queue. - - - - Removes and returns the object at the beginning of the Queue. - - time to wait before returning - Object in queue. - - - - Removes and returns the object at the beginning of the Queue. - - time to wait before returning (in milliseconds) - Object in queue. - - - - Adds an object to the end of the Queue - - Object to put in queue - - - - Open Queue. - - - - - Copy constructor - - Circular queue to copy - - - - An 8-bit color structure including an alpha channel - - - - - - - - - - - - - - - - - Builds a color from a byte array - - Byte array containing a 16 byte color - Beginning position in the byte array - True if the byte array stores inverted values, - otherwise false. For example the color black (fully opaque) inverted - would be 0xFF 0xFF 0xFF 0x00 - - - - Returns the raw bytes for this vector - - Byte array containing a 16 byte color - Beginning position in the byte array - True if the byte array stores inverted values, - otherwise false. For example the color black (fully opaque) inverted - would be 0xFF 0xFF 0xFF 0x00 - True if the alpha value is inverted in - addition to whatever the inverted parameter is. Setting inverted true - and alphaInverted true will flip the alpha value back to non-inverted, - but keep the other color bytes inverted - A 16 byte array containing R, G, B, and A - - - - Copy constructor - - Color to copy - - - Red - - - Green - - - Blue - - - Alpha - - - A Color4 with zero RGB values and fully opaque (alpha 1.0) - - - A Color4 with full RGB values (1.0) and fully opaque (alpha 1.0) - - - - IComparable.CompareTo implementation - - Sorting ends up like this: |--Grayscale--||--Color--|. - Alpha is only used when the colors are otherwise equivalent - - - - Builds a color from a byte array - - Byte array containing a 16 byte color - Beginning position in the byte array - True if the byte array stores inverted values, - otherwise false. For example the color black (fully opaque) inverted - would be 0xFF 0xFF 0xFF 0x00 - True if the alpha value is inverted in - addition to whatever the inverted parameter is. Setting inverted true - and alphaInverted true will flip the alpha value back to non-inverted, - but keep the other color bytes inverted - - - - Writes the raw bytes for this color to a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 16 bytes before the end of the array - - - - Serializes this color into four bytes in a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 4 bytes before the end of the array - True to invert the output (1.0 becomes 0 - instead of 255) - - - - Writes the raw bytes for this color to a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 16 bytes before the end of the array - - - - Ensures that values are in range 0-1 - - - - - Create an RGB color from a hue, saturation, value combination - - Hue - Saturation - Value - An fully opaque RGB color (alpha is 1.0) - - - - Performs linear interpolation between two colors - - Color to start at - Color to end at - Amount to interpolate - The interpolated color - - - - Attribute class that allows extra attributes to be attached to ENUMs - - - - Default initializer - - - Text used when presenting ENUM to user - - - Text used when presenting ENUM to user - - - - The different types of grid assets - - - - Unknown asset type - - - Texture asset, stores in JPEG2000 J2C stream format - - - Sound asset - - - Calling card for another avatar - - - Link to a location in world - - - Collection of textures and parameters that can be - worn by an avatar - - - Primitive that can contain textures, sounds, - scripts and more - - - Notecard asset - - - Holds a collection of inventory items - - - Root inventory folder - - - Linden scripting language script - - - LSO bytecode for a script - - - Uncompressed TGA texture - - - Collection of textures and shape parameters that can - be worn - - - Trash folder - - - Snapshot folder - - - Lost and found folder - - - Uncompressed sound - - - Uncompressed TGA non-square image, not to be used as a - texture - - - Compressed JPEG non-square image, not to be used as a - texture - - - Animation - - - Sequence of animations, sounds, chat, and pauses - - - Simstate file - - - Contains landmarks for favorites - - - Asset is a link to another inventory item - - - Asset is a link to another inventory folder - - - Beginning of the range reserved for ensembles - - - End of the range reserved for ensembles - - - Folder containing inventory links to wearables and attachments - that are part of the current outfit - - - Folder containing inventory items or links to - inventory items of wearables and attachments - together make a full outfit - - - Root folder for the folders of type OutfitFolder - - - Linden mesh format - - - - Inventory Item Types, eg Script, Notecard, Folder, etc - - - - Unknown - - - Texture - - - Sound - - - Calling Card - - - Landmark - - - Notecard - - - - - - - Folder - - - - - - - an LSL Script - - - - - - - - - - - - - - - - - - - - - - - - - - - - Item Sale Status - - - - Not for sale - - - The original is for sale - - - Copies are for sale - - - The contents of the object are for sale - - - - Types of wearable assets - - - - Body shape - - - Skin textures and attributes - - - Hair - - - Eyes - - - Shirt - - - Pants - - - Shoes - - - Socks - - - Jacket - - - Gloves - - - Undershirt - - - Underpants - - - Skirt - - - Alpha mask to hide parts of the avatar - - - Tattoo - - - Invalid wearable asset - - - - Identifier code for primitive types - - - - None - - - A Primitive - - - A Avatar - - - Linden grass - - - Linden tree - - - A primitive that acts as the source for a particle stream - - - A Linden tree - - - - Primary parameters for primitives such as Physics Enabled or Phantom - - - - Deprecated - - - Whether physics are enabled for this object - - - - - - - - - - - - - - - - - - - - - - - - - - - Whether this object contains an active touch script - - - - - - - Whether this object can receive payments - - - Whether this object is phantom (no collisions) - - - - - - - - - - - - - - - - - - - Deprecated - - - - - - - - - - - - - - - Deprecated - - - - - - - - - - - - - - - - - - - Server flag, will not be sent to clients. Specifies that - the object is destroyed when it touches a simulator edge - - - Server flag, will not be sent to clients. Specifies that - the object will be returned to the owner's inventory when it - touches a simulator edge - - - Server flag, will not be sent to clients. - - - Server flag, will not be sent to client. Specifies that - the object is hovering/flying - - - - - - - - - - - - - - - - - - - - Sound flags for sounds attached to primitives - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Material type for a primitive - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Used in a helper function to roughly determine prim shape - - - - - Extra parameters for primitives, these flags are for features that have - been added after the original ObjectFlags that has all eight bits - reserved already - - - - Whether this object has flexible parameters - - - Whether this object has light parameters - - - Whether this object is a sculpted prim - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Attachment points for objects on avatar bodies - - - Both InventoryObject and InventoryAttachment types can be attached - - - - Right hand if object was not previously attached + + Parent bucket to this bucket, or null if this is a root + bucket - - Chest + + Size of the bucket in bytes. If zero, the bucket has + infinite capacity - - Skull + + Rate that the bucket fills, in bytes per millisecond. If + zero, the bucket always remains full - - Left shoulder + + Number of tokens currently in the bucket - - Right shoulder + + Time of the last drip, in system ticks - - Left hand - - - Right hand - - - Left foot - - - Right foot - - - Spine - - - Pelvis - - - Mouth - - - Chin - - - Left ear - - - Right ear - - - Left eyeball - - - Right eyeball - - - Nose - - - Right upper arm - - - Right forearm - - - Left upper arm - - - Left forearm - - - Right hip - - - Right upper leg - - - Right lower leg - - - Left hip - - - Left upper leg - - - Left lower leg - - - Stomach - - - Left pectoral - - - Right pectoral - - - HUD Center position 2 - - - HUD Top-right - - - HUD Top - - - HUD Top-left - - - HUD Center - - - HUD Bottom-left - - - HUD Bottom - - - HUD Bottom-right - - - - Tree foliage types - - - - Pine1 tree - - - Oak tree - - - Tropical Bush1 - - - Palm1 tree - - - Dogwood tree - - - Tropical Bush2 - - - Palm2 tree - - - Cypress1 tree - - - Cypress2 tree - - - Pine2 tree - - - Plumeria - - - Winter pinetree1 - - - Winter Aspen tree - - - Winter pinetree2 - - - Eucalyptus tree - - - Fern - - - Eelgrass - - - Sea Sword - - - Kelp1 plant - - - Beach grass - - - Kelp2 plant - - - - Grass foliage types - - - - - - - + + Default constructor + Parent bucket if this is a child bucket, or + null if this is a root bucket + Maximum size of the bucket in bytes, or + zero if this bucket has no maximum capacity + Rate that the bucket fills, in bytes per + second. If zero, the bucket always remains full - + + Remove a given number of tokens from the bucket + Number of tokens to remove from the bucket + True if the requested number of tokens were removed from + the bucket, otherwise false - + + Remove a given number of tokens from the bucket + Number of tokens to remove from the bucket + True if tokens were added to the bucket + during this call, otherwise false + True if the requested number of tokens were removed from + the bucket, otherwise false - + + Add tokens to the bucket over time. The number of tokens added each + call depends on the length of time that has passed since the last + call to Drip + True if tokens were added to the bucket, otherwise false - + + The parent bucket of this bucket, or null if this bucket has no + parent. The parent bucket will limit the aggregate bandwidth of all + of its children buckets - + - Action associated with clicking on an object + Maximum burst rate in bytes per second. This is the maximum number + of tokens that can accumulate in the bucket at any one time - - Touch object - - - Sit on object - - - Purchase object or contents - - - Pay the object - - - Open task inventory - - - Play parcel media - - - Open parcel media - - - For thread safety - - - For thread safety - - - - Purges expired objects from the cache. Called automatically by the purge timer. - - - - - A thread-safe lockless queue that supports multiple readers and - multiple writers - - - - - Constructor - - - - - Provides a node container for data in a singly linked list - - - - - Constructor - - - - - Constructor - - - - Pointer to the next node in list - - - The data contained by the node - - - Queue head - - - Queue tail - - - Queue item count - - - Gets the current number of items in the queue. Since this - is a lockless collection this value should be treated as a close - estimate - - - - Enqueue an item - - Item to enqeue - - - - Try to dequeue an item - - Dequeued item if the dequeue was successful - True if an item was successfully deqeued, otherwise false - - - A 4x4 matrix containing all zeroes - - - A 4x4 identity matrix - - - - Convert this matrix to euler rotations - - X euler angle - Y euler angle - Z euler angle - - - - Convert this matrix to a quaternion rotation - - A quaternion representation of this rotation matrix - - - - Construct a matrix from euler rotation values in radians - - X euler angle in radians - Y euler angle in radians - Z euler angle in radians - - - - Get a formatted string representation of the vector - - A string representation of the vector - - - - Provides helper methods for parallelizing loops - - - + - Executes a for loop in which iterations may run in parallel + The speed limit of this bucket in bytes per second. This is the + number of tokens that are added to the bucket per second - The loop will be started at this index - The loop will be terminated before this index is reached - Method body to run for each iteration of the loop + Tokens are added to the bucket any time + is called, at the granularity of + the system tick interval (typically around 15-22ms) - + - Executes a for loop in which iterations may run in parallel + The number of bytes that can be sent at this moment. This is the + current number of tokens in the bucket + If this bucket has a parent bucket that does not have + enough tokens for a request, will + return false regardless of the content of this bucket - The number of concurrent execution threads to run - The loop will be started at this index - The loop will be terminated before this index is reached - Method body to run for each iteration of the loop - - - Executes a foreach loop in which iterations may run in parallel - - Object type that the collection wraps - An enumerable collection to iterate over - Method body to run for each object in the collection + + X value - - - Executes a foreach loop in which iterations may run in parallel - - Object type that the collection wraps - The number of concurrent execution threads to run - An enumerable collection to iterate over - Method body to run for each object in the collection + + Y value - - - Executes a series of tasks in parallel - - A series of method bodies to execute + + Z value - - - Executes a series of tasks in parallel - - The number of concurrent execution threads to run - A series of method bodies to execute + + W value @@ -1267,21 +126,6 @@ not. If this is true 12 bytes will be read, otherwise 16 bytes will be read. - - X value - - - Y value - - - Z value - - - W value - - - A quaternion with a value of 0,0,0,1 - Normalizes the quaternion @@ -1382,328 +226,82 @@ Raw string representation of the quaternion - + + A quaternion with a value of 0,0,0,1 + + - Determines the appropriate events to set, leaves the locks, and sets the events. + Same as Queue except Dequeue function blocks until there is an object to return. + Note: This class does not need to be synchronized - + - A routine for lazily creating a event outside the lock (so if errors - happen they are outside the lock and that we don't do much work - while holding a spin lock). If all goes well, reenter the lock and - set 'waitEvent' + Create new BlockingQueue. + + The System.Collections.ICollection to copy elements from + + + + Create new BlockingQueue. + + The initial number of elements that the queue can contain + + + + Create new BlockingQueue. - + - Waits on 'waitEvent' with a timeout of 'millisceondsTimeout. - Before the wait 'numWaiters' is incremented and is restored before leaving this routine. + BlockingQueue Destructor (Close queue, resume any waiting thread). - + - A hierarchical token bucket for bandwidth throttling. See - http://en.wikipedia.org/wiki/Token_bucket for more information + Remove all objects from the Queue. - + - Default constructor - - Parent bucket if this is a child bucket, or - null if this is a root bucket - Maximum size of the bucket in bytes, or - zero if this bucket has no maximum capacity - Rate that the bucket fills, in bytes per - second. If zero, the bucket always remains full - - - Parent bucket to this bucket, or null if this is a root - bucket - - - Size of the bucket in bytes. If zero, the bucket has - infinite capacity - - - Rate that the bucket fills, in bytes per millisecond. If - zero, the bucket always remains full - - - Number of tokens currently in the bucket - - - Time of the last drip, in system ticks - - - - The parent bucket of this bucket, or null if this bucket has no - parent. The parent bucket will limit the aggregate bandwidth of all - of its children buckets + Remove all objects from the Queue, resume all dequeue threads. - + - Maximum burst rate in bytes per second. This is the maximum number - of tokens that can accumulate in the bucket at any one time + Removes and returns the object at the beginning of the Queue. + + Object in queue. + + + + Removes and returns the object at the beginning of the Queue. + + time to wait before returning + Object in queue. + + + + Removes and returns the object at the beginning of the Queue. + + time to wait before returning (in milliseconds) + Object in queue. + + + + Adds an object to the end of the Queue + + Object to put in queue + + + + Open Queue. - + - The speed limit of this bucket in bytes per second. This is the - number of tokens that are added to the bucket per second + Gets flag indicating if queue has been closed. - Tokens are added to the bucket any time - is called, at the granularity of - the system tick interval (typically around 15-22ms) - - - - The number of bytes that can be sent at this moment. This is the - current number of tokens in the bucket - If this bucket has a parent bucket that does not have - enough tokens for a request, will - return false regardless of the content of this bucket - - - - Remove a given number of tokens from the bucket - - Number of tokens to remove from the bucket - True if the requested number of tokens were removed from - the bucket, otherwise false - - - - Remove a given number of tokens from the bucket - - Number of tokens to remove from the bucket - True if tokens were added to the bucket - during this call, otherwise false - True if the requested number of tokens were removed from - the bucket, otherwise false - - - - Add tokens to the bucket over time. The number of tokens added each - call depends on the length of time that has passed since the last - call to Drip - - True if tokens were added to the bucket, otherwise false - - - - A 128-bit Universally Unique Identifier, used throughout the Second - Life networking protocol - - - - - Constructor that takes a string UUID representation - - A string representation of a UUID, case - insensitive and can either be hyphenated or non-hyphenated - UUID("11f8aa9c-b071-4242-836b-13b7abe0d489") - - - - Constructor that takes a System.Guid object - - A Guid object that contains the unique identifier - to be represented by this UUID - - - - Constructor that takes a byte array containing a UUID - - Byte array containing a 16 byte UUID - Beginning offset in the array - - - - Constructor that takes an unsigned 64-bit unsigned integer to - convert to a UUID - - 64-bit unsigned integer to convert to a UUID - - - - Copy constructor - - UUID to copy - - - The System.Guid object this struct wraps around - - - An UUID with a value of all zeroes - - - A cache of UUID.Zero as a string to optimize a common path - - - - IComparable.CompareTo implementation - - - - - Assigns this UUID from 16 bytes out of a byte array - - Byte array containing the UUID to assign this UUID to - Starting position of the UUID in the byte array - - - - Returns a copy of the raw bytes for this UUID - - A 16 byte array containing this UUID - - - - Writes the raw bytes for this UUID to a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 16 bytes before the end of the array - - - - Calculate an LLCRC (cyclic redundancy check) for this UUID - - The CRC checksum for this UUID - - - - Create a 64-bit integer representation from the second half of this UUID - - An integer created from the last eight bytes of this UUID - - - - Generate a UUID from a string - - A string representation of a UUID, case - insensitive and can either be hyphenated or non-hyphenated - UUID.Parse("11f8aa9c-b071-4242-836b-13b7abe0d489") - - - - Generate a UUID from a string - - A string representation of a UUID, case - insensitive and can either be hyphenated or non-hyphenated - Will contain the parsed UUID if successful, - otherwise null - True if the string was successfully parse, otherwise false - UUID.TryParse("11f8aa9c-b071-4242-836b-13b7abe0d489", result) - - - - Combine two UUIDs together by taking the MD5 hash of a byte array - containing both UUIDs - - First UUID to combine - Second UUID to combine - The UUID product of the combination - - - - - - - - - - Return a hash code for this UUID, used by .NET for hash tables - - An integer composed of all the UUID bytes XORed together - - - - Comparison function - - An object to compare to this UUID - True if the object is a UUID and both UUIDs are equal - - - - Comparison function - - UUID to compare to - True if the UUIDs are equal, otherwise false - - - - Get a hyphenated string representation of this UUID - - A string representation of this UUID, lowercase and - with hyphens - 11f8aa9c-b071-4242-836b-13b7abe0d489 - - - - Equals operator - - First UUID for comparison - Second UUID for comparison - True if the UUIDs are byte for byte equal, otherwise false - - - - Not equals operator - - First UUID for comparison - Second UUID for comparison - True if the UUIDs are not equal, otherwise true - - - - XOR operator - - First UUID - Second UUID - A UUID that is a XOR combination of the two input UUIDs - - - - String typecasting operator - - A UUID in string form. Case insensitive, - hyphenated or non-hyphenated - A UUID built from the string representation - - - - Operating system - - - - Unknown - - - Microsoft Windows - - - Microsoft Windows CE - - - Linux - - - Apple OSX - - - - Runtime platform - - - - .NET runtime - - - Mono runtime: http://www.mono-project.com/ Used for converting degrees to radians @@ -1713,7 +311,7 @@ Provide a single instance of the CultureInfo class to - help parsing in situations where the grid assumes an en-us + help parsing in situations where the grid assumes an en-us culture @@ -2122,20 +720,11 @@ Resulting integer True if the parse was successful, otherwise false - - - Returns text specified in EnumInfo attribute of the enumerator - To add the text use [EnumInfo(Text = "Some nice text here")] before declaration - of enum values - - Enum value - Text representation of the enum - Takes an AssetType and returns the string representation - The source + The source The string version of the AssetType @@ -2149,7 +738,7 @@ Convert an InventoryType to a string - The to convert + The to convert A string representation of the source @@ -2163,7 +752,7 @@ Convert a SaleType to a string - The to convert + The to convert A string representation of the source @@ -2173,13 +762,6 @@ A string representation of the SaleType to convert A SaleType object which matched the type - - - Converts a string used in LLSD to AttachmentPoint type - - String representation of AttachmentPoint to convert - AttachmentPoint enum - Copy a byte array @@ -2238,7 +820,7 @@ Convert a native DateTime object to a UNIX timestamp - A DateTime object you want to convert to a + A DateTime object you want to convert to a timestamp An unsigned integer representing a UNIX timestamp @@ -2269,330 +851,87 @@ Attempts to convert a string representation of a hostname or IP - address to a + address to a + Hostname to convert to an IPAddress Converted IP address object, or null if the conversion failed - + - A two-dimensional vector with floating-point values + Operating system - - X value + + Unknown - - Y value + + Microsoft Windows - - A vector with a value of 0,0 + + Microsoft Windows CE - - A vector with a value of 1,1 + + Linux - - A vector with a value of 1,0 + + Apple OSX - - A vector with a value of 0,1 - - + - Test if this vector is equal to another vector, within a given - tolerance range - - Vector to test against - The acceptable magnitude of difference - between the two vectors - True if the magnitude of difference between the two vectors - is less than the given tolerance, otherwise false - - - - Test if this vector is composed of all finite numbers + Runtime platform - - - IComparable.CompareTo implementation - + + .NET runtime - - - Builds a vector from a byte array - - Byte array containing two four-byte floats - Beginning position in the byte array + + Mono runtime: http://www.mono-project.com/ - + - Returns the raw bytes for this vector + Convert this matrix to euler rotations - An eight-byte array containing X and Y + X euler angle + Y euler angle + Z euler angle - + - Writes the raw bytes for this vector to a byte array + Convert this matrix to a quaternion rotation - Destination byte array - Position in the destination array to start - writing. Must be at least 8 bytes before the end of the array + A quaternion representation of this rotation matrix - + - Parse a vector from a string + Construct a matrix from euler rotation values in radians - A string representation of a 2D vector, enclosed - in arrow brackets and separated by commas + X euler angle in radians + Y euler angle in radians + Z euler angle in radians - - - Interpolates between two vectors using a cubic equation - - - + Get a formatted string representation of the vector A string representation of the vector - + + A 4x4 matrix containing all zeroes + + + A 4x4 identity matrix + + + For thread safety + + + For thread safety + + - Get a string representation of the vector elements with up to three - decimal digits and separated by spaces only + Purges expired objects from the cache. Called automatically by the purge timer. - Raw string representation of the vector - - - - A three-dimensional vector with floating-point values - - - - - Constructor, builds a vector from a byte array - - Byte array containing three four-byte floats - Beginning position in the byte array - - - X value - - - Y value - - - Z value - - - A vector with a value of 0,0,0 - - - A vector with a value of 1,1,1 - - - A unit vector facing forward (X axis), value 1,0,0 - - - A unit vector facing left (Y axis), value 0,1,0 - - - A unit vector facing up (Z axis), value 0,0,1 - - - - Test if this vector is equal to another vector, within a given - tolerance range - - Vector to test against - The acceptable magnitude of difference - between the two vectors - True if the magnitude of difference between the two vectors - is less than the given tolerance, otherwise false - - - - IComparable.CompareTo implementation - - - - - Test if this vector is composed of all finite numbers - - - - - Builds a vector from a byte array - - Byte array containing a 12 byte vector - Beginning position in the byte array - - - - Returns the raw bytes for this vector - - A 12 byte array containing X, Y, and Z - - - - Writes the raw bytes for this vector to a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 12 bytes before the end of the array - - - - Parse a vector from a string - - A string representation of a 3D vector, enclosed - in arrow brackets and separated by commas - - - - Calculate the rotation between two vectors - - Normalized directional vector (such as 1,0,0 for forward facing) - Normalized target vector - - - - Interpolates between two vectors using a cubic equation - - - - - Get a formatted string representation of the vector - - A string representation of the vector - - - - Get a string representation of the vector elements with up to three - decimal digits and separated by spaces only - - Raw string representation of the vector - - - - Cross product between two vectors - - - - - A three-dimensional vector with doubleing-point values - - - - - Constructor, builds a vector from a byte array - - Byte array containing three eight-byte doubles - Beginning position in the byte array - - - X value - - - Y value - - - Z value - - - A vector with a value of 0,0,0 - - - A vector with a value of 1,1,1 - - - A unit vector facing forward (X axis), value of 1,0,0 - - - A unit vector facing left (Y axis), value of 0,1,0 - - - A unit vector facing up (Z axis), value of 0,0,1 - - - - Test if this vector is equal to another vector, within a given - tolerance range - - Vector to test against - The acceptable magnitude of difference - between the two vectors - True if the magnitude of difference between the two vectors - is less than the given tolerance, otherwise false - - - - IComparable.CompareTo implementation - - - - - Test if this vector is composed of all finite numbers - - - - - Builds a vector from a byte array - - Byte array containing a 24 byte vector - Beginning position in the byte array - - - - Returns the raw bytes for this vector - - A 24 byte array containing X, Y, and Z - - - - Writes the raw bytes for this vector to a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 24 bytes before the end of the array - - - - Parse a vector from a string - - A string representation of a 3D vector, enclosed - in arrow brackets and separated by commas - - - - Interpolates between two vectors using a cubic equation - - - - - Get a formatted string representation of the vector - - A string representation of the vector - - - - Get a string representation of the vector elements with up to three - decimal digits and separated by spaces only - - Raw string representation of the vector - - - - Cross product between two vectors - - - - - Constructor, builds a vector from a byte array - - Byte array containing four four-byte floats - Beginning position in the byte array X value @@ -2606,23 +945,12 @@ W value - - A vector with a value of 0,0,0,0 - - - A vector with a value of 1,1,1,1 - - - A vector with a value of 1,0,0,0 - - - A vector with a value of 0,1,0,0 - - - A vector with a value of 0,0,1,0 - - - A vector with a value of 0,0,0,1 + + + Constructor, builds a vector from a byte array + + Byte array containing four four-byte floats + Beginning position in the byte array @@ -2673,5 +1001,957 @@ Raw string representation of the vector + + A vector with a value of 0,0,0,0 + + + A vector with a value of 1,1,1,1 + + + A vector with a value of 1,0,0,0 + + + A vector with a value of 0,1,0,0 + + + A vector with a value of 0,0,1,0 + + + A vector with a value of 0,0,0,1 + + + + Provides helper methods for parallelizing loops + + + + + Executes a for loop in which iterations may run in parallel + + The loop will be started at this index + The loop will be terminated before this index is reached + Method body to run for each iteration of the loop + + + + Executes a for loop in which iterations may run in parallel + + The number of concurrent execution threads to run + The loop will be started at this index + The loop will be terminated before this index is reached + Method body to run for each iteration of the loop + + + + Executes a foreach loop in which iterations may run in parallel + + Object type that the collection wraps + An enumerable collection to iterate over + Method body to run for each object in the collection + + + + Executes a foreach loop in which iterations may run in parallel + + Object type that the collection wraps + The number of concurrent execution threads to run + An enumerable collection to iterate over + Method body to run for each object in the collection + + + + Executes a series of tasks in parallel + + A series of method bodies to execute + + + + Executes a series of tasks in parallel + + The number of concurrent execution threads to run + A series of method bodies to execute + + + + A three-dimensional vector with floating-point values + + + + X value + + + Y value + + + Z value + + + + Constructor, builds a vector from a byte array + + Byte array containing three four-byte floats + Beginning position in the byte array + + + + Test if this vector is equal to another vector, within a given + tolerance range + + Vector to test against + The acceptable magnitude of difference + between the two vectors + True if the magnitude of difference between the two vectors + is less than the given tolerance, otherwise false + + + + IComparable.CompareTo implementation + + + + + Test if this vector is composed of all finite numbers + + + + + Builds a vector from a byte array + + Byte array containing a 12 byte vector + Beginning position in the byte array + + + + Returns the raw bytes for this vector + + A 12 byte array containing X, Y, and Z + + + + Writes the raw bytes for this vector to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 12 bytes before the end of the array + + + + Parse a vector from a string + + A string representation of a 3D vector, enclosed + in arrow brackets and separated by commas + + + + Calculate the rotation between two vectors + + Normalized directional vector (such as 1,0,0 for forward facing) + Normalized target vector + + + + Interpolates between two vectors using a cubic equation + + + + + Get a formatted string representation of the vector + + A string representation of the vector + + + + Get a string representation of the vector elements with up to three + decimal digits and separated by spaces only + + Raw string representation of the vector + + + + Cross product between two vectors + + + + A vector with a value of 0,0,0 + + + A vector with a value of 1,1,1 + + + A unit vector facing forward (X axis), value 1,0,0 + + + A unit vector facing left (Y axis), value 0,1,0 + + + A unit vector facing up (Z axis), value 0,0,1 + + + + A 128-bit Universally Unique Identifier, used throughout the Second + Life networking protocol + + + + The System.Guid object this struct wraps around + + + + Constructor that takes a string UUID representation + + A string representation of a UUID, case + insensitive and can either be hyphenated or non-hyphenated + UUID("11f8aa9c-b071-4242-836b-13b7abe0d489") + + + + Constructor that takes a System.Guid object + + A Guid object that contains the unique identifier + to be represented by this UUID + + + + Constructor that takes a byte array containing a UUID + + Byte array containing a 16 byte UUID + Beginning offset in the array + + + + Constructor that takes an unsigned 64-bit unsigned integer to + convert to a UUID + + 64-bit unsigned integer to convert to a UUID + + + + Copy constructor + + UUID to copy + + + + IComparable.CompareTo implementation + + + + + Assigns this UUID from 16 bytes out of a byte array + + Byte array containing the UUID to assign this UUID to + Starting position of the UUID in the byte array + + + + Returns a copy of the raw bytes for this UUID + + A 16 byte array containing this UUID + + + + Writes the raw bytes for this UUID to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array + + + + Calculate an LLCRC (cyclic redundancy check) for this UUID + + The CRC checksum for this UUID + + + + Create a 64-bit integer representation from the second half of this UUID + + An integer created from the last eight bytes of this UUID + + + + Generate a UUID from a string + + A string representation of a UUID, case + insensitive and can either be hyphenated or non-hyphenated + UUID.Parse("11f8aa9c-b071-4242-836b-13b7abe0d489") + + + + Generate a UUID from a string + + A string representation of a UUID, case + insensitive and can either be hyphenated or non-hyphenated + Will contain the parsed UUID if successful, + otherwise null + True if the string was successfully parse, otherwise false + UUID.TryParse("11f8aa9c-b071-4242-836b-13b7abe0d489", result) + + + + Combine two UUIDs together by taking the MD5 hash of a byte array + containing both UUIDs + + First UUID to combine + Second UUID to combine + The UUID product of the combination + + + + + + + + + + Return a hash code for this UUID, used by .NET for hash tables + + An integer composed of all the UUID bytes XORed together + + + + Comparison function + + An object to compare to this UUID + True if the object is a UUID and both UUIDs are equal + + + + Comparison function + + UUID to compare to + True if the UUIDs are equal, otherwise false + + + + Get a hyphenated string representation of this UUID + + A string representation of this UUID, lowercase and + with hyphens + 11f8aa9c-b071-4242-836b-13b7abe0d489 + + + + Equals operator + + First UUID for comparison + Second UUID for comparison + True if the UUIDs are byte for byte equal, otherwise false + + + + Not equals operator + + First UUID for comparison + Second UUID for comparison + True if the UUIDs are not equal, otherwise true + + + + XOR operator + + First UUID + Second UUID + A UUID that is a XOR combination of the two input UUIDs + + + + String typecasting operator + + A UUID in string form. Case insensitive, + hyphenated or non-hyphenated + A UUID built from the string representation + + + An UUID with a value of all zeroes + + + A cache of UUID.Zero as a string to optimize a common path + + + + A two-dimensional vector with floating-point values + + + + X value + + + Y value + + + + Test if this vector is equal to another vector, within a given + tolerance range + + Vector to test against + The acceptable magnitude of difference + between the two vectors + True if the magnitude of difference between the two vectors + is less than the given tolerance, otherwise false + + + + Test if this vector is composed of all finite numbers + + + + + IComparable.CompareTo implementation + + + + + Builds a vector from a byte array + + Byte array containing two four-byte floats + Beginning position in the byte array + + + + Returns the raw bytes for this vector + + An eight-byte array containing X and Y + + + + Writes the raw bytes for this vector to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 8 bytes before the end of the array + + + + Parse a vector from a string + + A string representation of a 2D vector, enclosed + in arrow brackets and separated by commas + + + + Interpolates between two vectors using a cubic equation + + + + + Get a formatted string representation of the vector + + A string representation of the vector + + + + Get a string representation of the vector elements with up to three + decimal digits and separated by spaces only + + Raw string representation of the vector + + + A vector with a value of 0,0 + + + A vector with a value of 1,1 + + + A vector with a value of 1,0 + + + A vector with a value of 0,1 + + + + An 8-bit color structure including an alpha channel + + + + Red + + + Green + + + Blue + + + Alpha + + + + + + + + + + + + + Builds a color from a byte array + + Byte array containing a 16 byte color + Beginning position in the byte array + True if the byte array stores inverted values, + otherwise false. For example the color black (fully opaque) inverted + would be 0xFF 0xFF 0xFF 0x00 + + + + Returns the raw bytes for this vector + + Byte array containing a 16 byte color + Beginning position in the byte array + True if the byte array stores inverted values, + otherwise false. For example the color black (fully opaque) inverted + would be 0xFF 0xFF 0xFF 0x00 + True if the alpha value is inverted in + addition to whatever the inverted parameter is. Setting inverted true + and alphaInverted true will flip the alpha value back to non-inverted, + but keep the other color bytes inverted + A 16 byte array containing R, G, B, and A + + + + Copy constructor + + Color to copy + + + + IComparable.CompareTo implementation + + Sorting ends up like this: |--Grayscale--||--Color--|. + Alpha is only used when the colors are otherwise equivalent + + + + Builds a color from a byte array + + Byte array containing a 16 byte color + Beginning position in the byte array + True if the byte array stores inverted values, + otherwise false. For example the color black (fully opaque) inverted + would be 0xFF 0xFF 0xFF 0x00 + True if the alpha value is inverted in + addition to whatever the inverted parameter is. Setting inverted true + and alphaInverted true will flip the alpha value back to non-inverted, + but keep the other color bytes inverted + + + + Writes the raw bytes for this color to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array + + + + Serializes this color into four bytes in a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 4 bytes before the end of the array + True to invert the output (1.0 becomes 0 + instead of 255) + + + + Writes the raw bytes for this color to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array + + + + Ensures that values are in range 0-1 + + + + + Create an RGB color from a hue, saturation, value combination + + Hue + Saturation + Value + An fully opaque RGB color (alpha is 1.0) + + + + Performs linear interpolation between two colors + + Color to start at + Color to end at + Amount to interpolate + The interpolated color + + + A Color4 with zero RGB values and fully opaque (alpha 1.0) + + + A Color4 with full RGB values (1.0) and fully opaque (alpha 1.0) + + + + The different types of grid assets + + + + Unknown asset type + + + Texture asset, stores in JPEG2000 J2C stream format + + + Sound asset + + + Calling card for another avatar + + + Link to a location in world + + + Collection of textures and parameters that can be + worn by an avatar + + + Primitive that can contain textures, sounds, + scripts and more + + + Notecard asset + + + Holds a collection of inventory items + + + Root inventory folder + + + Linden scripting language script + + + LSO bytecode for a script + + + Uncompressed TGA texture + + + Collection of textures and shape parameters that can + be worn + + + Trash folder + + + Snapshot folder + + + Lost and found folder + + + Uncompressed sound + + + Uncompressed TGA non-square image, not to be used as a + texture + + + Compressed JPEG non-square image, not to be used as a + texture + + + Animation + + + Sequence of animations, sounds, chat, and pauses + + + Simstate file + + + Contains landmarks for favorites + + + Asset is a link to another inventory item + + + Asset is a link to another inventory folder + + + Beginning of the range reserved for ensembles + + + End of the range reserved for ensembles + + + Folder containing inventory links to wearables and attachments + that are part of the current outfit + + + Folder containing inventory items or links to + inventory items of wearables and attachments + together make a full outfit + + + Root folder for the folders of type OutfitFolder + + + + + + + Inventory Item Types, eg Script, Notecard, Folder, etc + + + + Unknown + + + Texture + + + Sound + + + Calling Card + + + Landmark + + + Notecard + + + + + + Folder + + + + + + an LSL Script + + + + + + + + + + + + + + + + + + + Item Sale Status + + + + Not for sale + + + The original is for sale + + + Copies are for sale + + + The contents of the object are for sale + + + + Types of wearable assets + + + + Body shape + + + Skin textures and attributes + + + Hair + + + Eyes + + + Shirt + + + Pants + + + Shoes + + + Socks + + + Jacket + + + Gloves + + + Undershirt + + + Underpants + + + Skirt + + + Alpha mask to hide parts of the avatar + + + Tattoo + + + Invalid wearable asset + + + + A three-dimensional vector with doubleing-point values + + + + X value + + + Y value + + + Z value + + + + Constructor, builds a vector from a byte array + + Byte array containing three eight-byte doubles + Beginning position in the byte array + + + + Test if this vector is equal to another vector, within a given + tolerance range + + Vector to test against + The acceptable magnitude of difference + between the two vectors + True if the magnitude of difference between the two vectors + is less than the given tolerance, otherwise false + + + + IComparable.CompareTo implementation + + + + + Test if this vector is composed of all finite numbers + + + + + Builds a vector from a byte array + + Byte array containing a 24 byte vector + Beginning position in the byte array + + + + Returns the raw bytes for this vector + + A 24 byte array containing X, Y, and Z + + + + Writes the raw bytes for this vector to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 24 bytes before the end of the array + + + + Parse a vector from a string + + A string representation of a 3D vector, enclosed + in arrow brackets and separated by commas + + + + Interpolates between two vectors using a cubic equation + + + + + Get a formatted string representation of the vector + + A string representation of the vector + + + + Get a string representation of the vector elements with up to three + decimal digits and separated by spaces only + + Raw string representation of the vector + + + + Cross product between two vectors + + + + A vector with a value of 0,0,0 + + + A vector with a value of 1,1,1 + + + A unit vector facing forward (X axis), value of 1,0,0 + + + A unit vector facing left (Y axis), value of 0,1,0 + + + A unit vector facing up (Z axis), value of 0,0,1 + + + + Determines the appropriate events to set, leaves the locks, and sets the events. + + + + + A routine for lazily creating a event outside the lock (so if errors + happen they are outside the lock and that we don't do much work + while holding a spin lock). If all goes well, reenter the lock and + set 'waitEvent' + + + + + Waits on 'waitEvent' with a timeout of 'millisceondsTimeout. + Before the wait 'numWaiters' is incremented and is restored before leaving this routine. + + + + + Copy constructor + + Circular queue to copy + diff --git a/bin/OpenMetaverseTypes.dll b/bin/OpenMetaverseTypes.dll index b989bad3f12716ee5d90aeded140aedada4b853d..01dc3d813cd9a4dfe4ae8dbcd0975368eecdb784 100644 GIT binary patch literal 106496 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

&ZzZAJmfpq5Y5&y`w1u20j? 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

eE1gXYBc;iwUDZGZMP=y#^HKOL< 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 literal 105984 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

m>Ou8x8zmRAfkr$4I9mQD<}6**^P}ma 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 Q#~33c{l7o|$F;!!13$u`tpET3 From b1c8d0588829dfa76f89460eeb8406d9c4fc479f Mon Sep 17 00:00:00 2001 From: Master ScienceSim Date: Wed, 20 Oct 2010 16:17:54 -0700 Subject: [PATCH 5/5] Major refactoring of appearance handling. AvatarService -- add two new methods, GetAppearance and SetAppearance to get around the lossy encoding in AvatarData. Preseve the old functions to avoid changing the behavior for ROBUST services. AvatarAppearance -- major refactor, moved the various encoding methods used by AgentCircuitData, ClientAgentUpdate and ScenePresence into one location. Changed initialization. AvatarAttachments -- added a class specifically to handle attachments in preparation for additional functionality that will be needed for viewer 2. AvatarFactory -- removed a number of unused or methods duplicated in other locations. Moved in all appearance event handling from ScenePresence. Required a change to IClientAPI that propogated throughout all the IClientAPI implementations. --- .../RemoteController/RemoteAdminPlugin.cs | 28 +- .../Client/MXP/ClientStack/MXPClientView.cs | 4 +- .../MXP/PacketHandler/MXPPacketServer.cs | 4 +- .../VWoHTTP/ClientStack/VWHClientView.cs | 2 +- OpenSim/Framework/AgentCircuitData.cs | 61 +- OpenSim/Framework/AvatarAppearance.cs | 1011 ++++++++--------- .../AvatarAttachment.cs} | 50 +- OpenSim/Framework/AvatarWearable.cs | 46 +- OpenSim/Framework/Capabilities/Caps.cs | 4 +- OpenSim/Framework/ChildAgentDataUpdate.cs | 70 +- OpenSim/Framework/IClientAPI.cs | 6 +- .../Framework/Tests/AgentCircuitDataTest.cs | 2 - .../ClientStack/LindenUDP/LLClientView.cs | 8 +- .../Avatar/Attachments/AttachmentsModule.cs | 16 +- .../AvatarFactory/AvatarFactoryModule.cs | 267 +++-- .../Avatar/LocalAvatarServiceConnector.cs | 11 + .../Examples/SimpleModule/MyNpcCharacter.cs | 2 +- OpenSim/Region/Framework/Scenes/Scene.cs | 7 - .../Region/Framework/Scenes/ScenePresence.cs | 163 +-- .../Server/IRCClientView.cs | 4 +- .../OptionalModules/World/NPC/NPCAvatar.cs | 2 +- .../OptionalModules/World/NPC/NPCModule.cs | 16 +- .../Services/AvatarService/AvatarService.cs | 14 + .../Avatar/AvatarServiceConnector.cs | 12 + .../SimianAvatarServiceConnector.cs | 82 +- OpenSim/Services/Interfaces/IAvatarService.cs | 32 +- .../Services/LLLoginService/LLLoginService.cs | 10 +- OpenSim/Tests/Common/Mock/TestClient.cs | 2 +- 28 files changed, 1056 insertions(+), 880 deletions(-) rename OpenSim/{Region/Framework/Interfaces/IAvatarFactory.cs => Framework/AvatarAttachment.cs} (56%) diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index aeed467cab..0589748577 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs @@ -1472,12 +1472,9 @@ namespace OpenSim.ApplicationPlugins.RemoteController { m_log.DebugFormat("[RADMIN] Initializing inventory for {0} from {1}", destination, source); Scene scene = m_application.SceneManager.CurrentOrFirstScene; - AvatarAppearance avatarAppearance = null; - AvatarData avatar = scene.AvatarService.GetAvatar(source); - if (avatar != null) - avatarAppearance = avatar.ToAvatarAppearance(source); // If the model has no associated appearance we're done. + AvatarAppearance avatarAppearance = scene.AvatarService.GetAppearance(source); if (avatarAppearance == null) return; @@ -1491,8 +1488,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController { CopyWearablesAndAttachments(destination, source, avatarAppearance); - AvatarData avatarData = new AvatarData(avatarAppearance); - scene.AvatarService.SetAvatar(destination, avatarData); + scene.AvatarService.SetAppearance(destination, avatarAppearance); } catch (Exception e) { @@ -1523,8 +1519,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } } - AvatarData avatarData = new AvatarData(avatarAppearance); - scene.AvatarService.SetAvatar(destination, avatarData); + scene.AvatarService.SetAppearance(destination, avatarAppearance); } catch (Exception e) { @@ -1619,12 +1614,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController } // Attachments - Dictionary attachments = avatarAppearance.GetAttachmentDictionary(); + Dictionary attachments = avatarAppearance.Attachments; - foreach (KeyValuePair attachment in attachments) + foreach (KeyValuePair attachment in attachments) { - int attachpoint = attachment.Key; - UUID itemID = attachment.Value[0]; + int attachpoint = attachment.Value.AttachPoint; + UUID itemID = attachment.Value.ItemID; if (itemID != UUID.Zero) { @@ -1908,10 +1903,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController if (include) { // Setup for appearance processing - AvatarData avatarData = scene.AvatarService.GetAvatar(ID); - if (avatarData != null) - avatarAppearance = avatarData.ToAvatarAppearance(ID); - else + avatarAppearance = scene.AvatarService.GetAppearance(ID); + if (avatarAppearance == null) avatarAppearance = new AvatarAppearance(); AvatarWearable[] wearables = avatarAppearance.Wearables; @@ -2076,8 +2069,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController m_log.DebugFormat("[RADMIN] Outfit {0} load completed", outfitName); } // foreach outfit m_log.DebugFormat("[RADMIN] Inventory update complete for {0}", name); - AvatarData avatarData2 = new AvatarData(avatarAppearance); - scene.AvatarService.SetAvatar(ID, avatarData2); + scene.AvatarService.SetAppearance(ID, avatarAppearance); } catch (Exception e) { diff --git a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs index af9478e5e0..19331c68bf 100644 --- a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs +++ b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs @@ -596,7 +596,7 @@ namespace OpenSim.Client.MXP.ClientStack public event TeleportLandmarkRequest OnTeleportLandmarkRequest; public event DeRezObject OnDeRezObject; public event Action OnRegionHandShakeReply; - public event GenericCall2 OnRequestWearables; + public event GenericCall1 OnRequestWearables; public event GenericCall1 OnCompleteMovementToRegion; public event UpdateAgent OnPreAgentUpdate; public event UpdateAgent OnAgentUpdate; @@ -861,7 +861,7 @@ namespace OpenSim.Client.MXP.ClientStack OpenSim.Region.Framework.Scenes.Scene scene=(OpenSim.Region.Framework.Scenes.Scene)Scene; AvatarAppearance appearance; scene.GetAvatarAppearance(this,out appearance); - OnSetAppearance(appearance.Texture, (byte[])appearance.VisualParams.Clone()); + OnSetAppearance(this, appearance.Texture, (byte[])appearance.VisualParams.Clone()); } public void Stop() diff --git a/OpenSim/Client/MXP/PacketHandler/MXPPacketServer.cs b/OpenSim/Client/MXP/PacketHandler/MXPPacketServer.cs index 7056e0110b..dcecb8b384 100644 --- a/OpenSim/Client/MXP/PacketHandler/MXPPacketServer.cs +++ b/OpenSim/Client/MXP/PacketHandler/MXPPacketServer.cs @@ -533,9 +533,7 @@ namespace OpenSim.Client.MXP.PacketHandler agent.InventoryFolder = UUID.Zero; agent.startpos = new Vector3(0, 0, 0); // TODO Fill in region start position agent.CapsPath = "http://localhost/"; - AvatarData avatar = scene.AvatarService.GetAvatar(account.PrincipalID); - if (avatar != null) - agent.Appearance = avatar.ToAvatarAppearance(account.PrincipalID); //userService.GetUserAppearance(userProfile.ID); + agent.Appearance = scene.AvatarService.GetAppearance(account.PrincipalID); if (agent.Appearance == null) { diff --git a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs index 99a46dc884..0d2323251d 100644 --- a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs +++ b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs @@ -245,7 +245,7 @@ namespace OpenSim.Client.VWoHTTP.ClientStack public event TeleportLandmarkRequest OnTeleportLandmarkRequest = delegate { }; public event DeRezObject OnDeRezObject = delegate { }; public event Action OnRegionHandShakeReply = delegate { }; - public event GenericCall2 OnRequestWearables = delegate { }; + public event GenericCall1 OnRequestWearables = delegate { }; public event GenericCall1 OnCompleteMovementToRegion = delegate { }; public event UpdateAgent OnPreAgentUpdate; public event UpdateAgent OnAgentUpdate = delegate { }; diff --git a/OpenSim/Framework/AgentCircuitData.cs b/OpenSim/Framework/AgentCircuitData.cs index 4f89d78c0e..be98380cfd 100644 --- a/OpenSim/Framework/AgentCircuitData.cs +++ b/OpenSim/Framework/AgentCircuitData.cs @@ -26,7 +26,9 @@ */ using System; +using System.Reflection; using System.Collections.Generic; +using log4net; using OpenMetaverse; using OpenMetaverse.StructuredData; @@ -38,6 +40,12 @@ namespace OpenSim.Framework ///

public class AgentCircuitData { +// DEBUG ON + private static readonly ILog m_log = + LogManager.GetLogger( + MethodBase.GetCurrentMethod().DeclaringType); +// DEBUG OFF + /// /// Avatar Unique Agent Identifier /// @@ -205,6 +213,7 @@ namespace OpenSim.Framework args["mac"] = OSD.FromString(Mac); args["id0"] = OSD.FromString(Id0); +/* if (Appearance != null) { //System.Console.WriteLine("XXX Before packing Wearables"); @@ -221,20 +230,26 @@ namespace OpenSim.Framework } //System.Console.WriteLine("XXX Before packing Attachments"); - Dictionary attachments = Appearance.GetAttachmentDictionary(); + Dictionary attachments = Appearance.Attachments; if ((attachments != null) && (attachments.Count > 0)) { OSDArray attachs = new OSDArray(attachments.Count); - foreach (KeyValuePair kvp in attachments) + foreach (KeyValuePair kvp in attachments) { - AttachmentData adata = new AttachmentData(kvp.Key, kvp.Value[0], kvp.Value[1]); - attachs.Add(adata.PackUpdateMessage()); + AvatarAttachment adata = new AvatarAttachment(kvp.Value); + attachs.Add(adata.Pack()); //System.Console.WriteLine("XXX att.pt=" + kvp.Key + "; itemID=" + kvp.Value[0] + "; assetID=" + kvp.Value[1]); } args["attachments"] = attachs; } } - +*/ + if (Appearance != null) + { + OSDMap appmap = Appearance.Pack(); + args["packed_appearance"] = appmap; + } + if (ServiceURLs != null && ServiceURLs.Count > 0) { OSDArray urls = new OSDArray(ServiceURLs.Count * 2); @@ -317,9 +332,37 @@ namespace OpenSim.Framework if (args["start_pos"] != null) Vector3.TryParse(args["start_pos"].AsString(), out startpos); +// DEBUG ON + m_log.WarnFormat("[AGENTCIRCUITDATA] agentid={0}, child={1}, startpos={2}",AgentID,child,startpos.ToString()); +// DEBUG OFF + + try { + // Unpack various appearance elements Appearance = new AvatarAppearance(AgentID); + if (args["packed_appearance"] != null) + { + if (args["packed_appearance"].Type == OSDType.Map) + { + Appearance.Unpack((OSDMap)args["packed_appearance"]); + m_log.WarnFormat("[AGENTCIRCUITDATA] unpacked appearance"); + } + else + m_log.WarnFormat("[AGENTCIRCUITDATA] packed_appearance is not a map:\n{0}",args["packed_appearance"].ToString()); + } +// DEBUG ON + else + m_log.Warn("[AGENTCIRCUITDATA] failed to find a valid packed_appearance"); +// DEBUG OFF + } catch (Exception e) + { + m_log.ErrorFormat("[AGENTCIRCUITDATA] failed to unpack appearance; {0}",e.Message); + } + + +/* if (args["appearance_serial"] != null) Appearance.Serial = args["appearance_serial"].AsInteger(); + if ((args["wearables"] != null) && (args["wearables"]).Type == OSDType.Array) { OSDArray wears = (OSDArray)(args["wearables"]); @@ -328,23 +371,23 @@ namespace OpenSim.Framework Appearance.Wearables[i].ItemID = wears[i*2].AsUUID(); Appearance.Wearables[i].AssetID = wears[(i*2)+1].AsUUID(); } - } + } if ((args["attachments"] != null) && (args["attachments"]).Type == OSDType.Array) { OSDArray attachs = (OSDArray)(args["attachments"]); - AttachmentData[] attachments = new AttachmentData[attachs.Count]; + AvatarAttachment[] attachments = new AvatarAttachment[attachs.Count]; int i = 0; foreach (OSD o in attachs) { if (o.Type == OSDType.Map) { - attachments[i++] = new AttachmentData((OSDMap)o); + attachments[i++] = new AvatarAttachment((OSDMap)o); } } Appearance.SetAttachments(attachments); } - +*/ ServiceURLs = new Dictionary(); if (args.ContainsKey("service_urls") && args["service_urls"] != null && (args["service_urls"]).Type == OSDType.Array) { diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs index 5da8ba1368..55646dda91 100644 --- a/OpenSim/Framework/AvatarAppearance.cs +++ b/OpenSim/Framework/AvatarAppearance.cs @@ -26,9 +26,12 @@ */ using System; +using System.Reflection; using System.Collections; using System.Collections.Generic; using OpenMetaverse; +using OpenMetaverse.StructuredData; +using log4net; namespace OpenSim.Framework { @@ -37,48 +40,26 @@ namespace OpenSim.Framework ///

?yOBK=gtAc+&N&FyMroo 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 z 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�$|`yu|llUWu;aPw}xR5y9fM=qCOW-NhTx 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�(HV>L$&J3%2wRFOI^pw7!AHiT+A>BJm0vv^c# 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 K`uqPb2mUYDU~nh^ diff --git a/bin/OpenMetaverse.dll.config b/bin/OpenMetaverse.dll.config index dc36a4513f..13fdc11c72 100644 --- a/bin/OpenMetaverse.dll.config +++ b/bin/OpenMetaverse.dll.config @@ -1,7 +1,7 @@ - - - - - - - + + + + + + + diff --git a/bin/OpenMetaverseTypes.XML b/bin/OpenMetaverseTypes.XML index 69e5c1bb26..3903aea866 100644 --- a/bin/OpenMetaverseTypes.XML +++ b/bin/OpenMetaverseTypes.XML @@ -1,1253 +1,112 @@ - /home/root/libopenmetaverse/bin/OpenMetaverseTypes + OpenMetaverseTypes - +

public class AvatarAppearance { - //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - // these are guessed at by the list here - - // http://wiki.secondlife.com/wiki/Avatar_Appearance. We'll - // correct them over time for when were are wrong. - public readonly static int BODY = 0; - public readonly static int SKIN = 1; - public readonly static int HAIR = 2; - public readonly static int EYES = 3; - public readonly static int SHIRT = 4; - public readonly static int PANTS = 5; - public readonly static int SHOES = 6; - public readonly static int SOCKS = 7; - public readonly static int JACKET = 8; - public readonly static int GLOVES = 9; - public readonly static int UNDERSHIRT = 10; - public readonly static int UNDERPANTS = 11; - public readonly static int SKIRT = 12; - - private readonly static int MAX_WEARABLES = 13; - - private static UUID BODY_ASSET = new UUID("66c41e39-38f9-f75a-024e-585989bfab73"); - private static UUID BODY_ITEM = new UUID("66c41e39-38f9-f75a-024e-585989bfaba9"); - private static UUID SKIN_ASSET = new UUID("77c41e39-38f9-f75a-024e-585989bbabbb"); - private static UUID SKIN_ITEM = new UUID("77c41e39-38f9-f75a-024e-585989bfabc9"); - private static UUID SHIRT_ASSET = new UUID("00000000-38f9-1111-024e-222222111110"); - private static UUID SHIRT_ITEM = new UUID("77c41e39-38f9-f75a-0000-585989bf0000"); - private static UUID PANTS_ASSET = new UUID("00000000-38f9-1111-024e-222222111120"); - private static UUID PANTS_ITEM = new UUID("77c41e39-38f9-f75a-0000-5859892f1111"); - private static UUID HAIR_ASSET = new UUID("d342e6c0-b9d2-11dc-95ff-0800200c9a66"); - private static UUID HAIR_ITEM = new UUID("d342e6c1-b9d2-11dc-95ff-0800200c9a66"); + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); public readonly static int VISUALPARAM_COUNT = 218; + public readonly static int TEXTURE_COUNT = 21; + protected UUID m_owner; + protected int m_serial = 1; + protected byte[] m_visualparams; + protected Primitive.TextureEntry m_texture; + protected AvatarWearable[] m_wearables; + protected Dictionary m_attachments; + protected float m_avatarHeight = 0; + protected float m_hipOffset = 0; public virtual UUID Owner { get { return m_owner; } set { m_owner = value; } } - protected int m_serial = 1; public virtual int Serial { @@ -86,194 +67,158 @@ namespace OpenSim.Framework set { m_serial = value; } } - protected byte[] m_visualparams; - public virtual byte[] VisualParams { get { return m_visualparams; } set { m_visualparams = value; } } - protected AvatarWearable[] m_wearables; - - public virtual AvatarWearable[] Wearables - { - get { return m_wearables; } - set { m_wearables = value; } - } - - public virtual UUID BodyItem { - get { return m_wearables[BODY].ItemID; } - set { m_wearables[BODY].ItemID = value; } - } - - public virtual UUID BodyAsset { - get { return m_wearables[BODY].AssetID; } - set { m_wearables[BODY].AssetID = value; } - } - - public virtual UUID SkinItem { - get { return m_wearables[SKIN].ItemID; } - set { m_wearables[SKIN].ItemID = value; } - } - - public virtual UUID SkinAsset { - get { return m_wearables[SKIN].AssetID; } - set { m_wearables[SKIN].AssetID = value; } - } - - public virtual UUID HairItem { - get { return m_wearables[HAIR].ItemID; } - set { m_wearables[HAIR].ItemID = value; } - } - - public virtual UUID HairAsset { - get { return m_wearables[HAIR].AssetID; } - set { m_wearables[HAIR].AssetID = value; } - } - - public virtual UUID EyesItem { - get { return m_wearables[EYES].ItemID; } - set { m_wearables[EYES].ItemID = value; } - } - - public virtual UUID EyesAsset { - get { return m_wearables[EYES].AssetID; } - set { m_wearables[EYES].AssetID = value; } - } - - public virtual UUID ShirtItem { - get { return m_wearables[SHIRT].ItemID; } - set { m_wearables[SHIRT].ItemID = value; } - } - - public virtual UUID ShirtAsset { - get { return m_wearables[SHIRT].AssetID; } - set { m_wearables[SHIRT].AssetID = value; } - } - - public virtual UUID PantsItem { - get { return m_wearables[PANTS].ItemID; } - set { m_wearables[PANTS].ItemID = value; } - } - - public virtual UUID PantsAsset { - get { return m_wearables[PANTS].AssetID; } - set { m_wearables[PANTS].AssetID = value; } - } - - public virtual UUID ShoesItem { - get { return m_wearables[SHOES].ItemID; } - set { m_wearables[SHOES].ItemID = value; } - } - - public virtual UUID ShoesAsset { - get { return m_wearables[SHOES].AssetID; } - set { m_wearables[SHOES].AssetID = value; } - } - - public virtual UUID SocksItem { - get { return m_wearables[SOCKS].ItemID; } - set { m_wearables[SOCKS].ItemID = value; } - } - - public virtual UUID SocksAsset { - get { return m_wearables[SOCKS].AssetID; } - set { m_wearables[SOCKS].AssetID = value; } - } - - public virtual UUID JacketItem { - get { return m_wearables[JACKET].ItemID; } - set { m_wearables[JACKET].ItemID = value; } - } - - public virtual UUID JacketAsset { - get { return m_wearables[JACKET].AssetID; } - set { m_wearables[JACKET].AssetID = value; } - } - - public virtual UUID GlovesItem { - get { return m_wearables[GLOVES].ItemID; } - set { m_wearables[GLOVES].ItemID = value; } - } - - public virtual UUID GlovesAsset { - get { return m_wearables[GLOVES].AssetID; } - set { m_wearables[GLOVES].AssetID = value; } - } - - public virtual UUID UnderShirtItem { - get { return m_wearables[UNDERSHIRT].ItemID; } - set { m_wearables[UNDERSHIRT].ItemID = value; } - } - - public virtual UUID UnderShirtAsset { - get { return m_wearables[UNDERSHIRT].AssetID; } - set { m_wearables[UNDERSHIRT].AssetID = value; } - } - - public virtual UUID UnderPantsItem { - get { return m_wearables[UNDERPANTS].ItemID; } - set { m_wearables[UNDERPANTS].ItemID = value; } - } - - public virtual UUID UnderPantsAsset { - get { return m_wearables[UNDERPANTS].AssetID; } - set { m_wearables[UNDERPANTS].AssetID = value; } - } - - public virtual UUID SkirtItem { - get { return m_wearables[SKIRT].ItemID; } - set { m_wearables[SKIRT].ItemID = value; } - } - - public virtual UUID SkirtAsset { - get { return m_wearables[SKIRT].AssetID; } - set { m_wearables[SKIRT].AssetID = value; } - } - - public virtual void SetDefaultWearables() - { - m_wearables[BODY].AssetID = BODY_ASSET; - m_wearables[BODY].ItemID = BODY_ITEM; - m_wearables[SKIN].AssetID = SKIN_ASSET; - m_wearables[SKIN].ItemID = SKIN_ITEM; - m_wearables[HAIR].AssetID = HAIR_ASSET; - m_wearables[HAIR].ItemID = HAIR_ITEM; - m_wearables[SHIRT].AssetID = SHIRT_ASSET; - m_wearables[SHIRT].ItemID = SHIRT_ITEM; - m_wearables[PANTS].AssetID = PANTS_ASSET; - m_wearables[PANTS].ItemID = PANTS_ITEM; - } - - public virtual void ClearWearables() - { - for (int i = 0; i < 13; i++) - { - m_wearables[i].AssetID = UUID.Zero; - m_wearables[i].ItemID = UUID.Zero; - } - } - - public virtual void SetDefaultParams(byte[] vparams) - { - // TODO: Figure out better values then 'fat scientist 150' or 'alien 0' - for (int i = 0; i < VISUALPARAM_COUNT; i++) - { - vparams[i] = 150; - } - } - - protected Primitive.TextureEntry m_texture; - public virtual Primitive.TextureEntry Texture { get { return m_texture; } set { m_texture = value; } } - protected float m_avatarHeight = 0; - protected float m_hipOffset = 0; + public virtual AvatarWearable[] Wearables + { + get { return m_wearables; } + set { m_wearables = value; } + } + + public virtual Dictionary Attachments + { + get { return m_attachments; } + } + + public virtual UUID BodyItem { + get { return m_wearables[AvatarWearable.BODY].ItemID; } + set { m_wearables[AvatarWearable.BODY].ItemID = value; } + } + + public virtual UUID BodyAsset { + get { return m_wearables[AvatarWearable.BODY].AssetID; } + set { m_wearables[AvatarWearable.BODY].AssetID = value; } + } + + public virtual UUID SkinItem { + get { return m_wearables[AvatarWearable.SKIN].ItemID; } + set { m_wearables[AvatarWearable.SKIN].ItemID = value; } + } + + public virtual UUID SkinAsset { + get { return m_wearables[AvatarWearable.SKIN].AssetID; } + set { m_wearables[AvatarWearable.SKIN].AssetID = value; } + } + + public virtual UUID HairItem { + get { return m_wearables[AvatarWearable.HAIR].ItemID; } + set { m_wearables[AvatarWearable.HAIR].ItemID = value; } + } + + public virtual UUID HairAsset { + get { return m_wearables[AvatarWearable.HAIR].AssetID; } + set { m_wearables[AvatarWearable.HAIR].AssetID = value; } + } + + public virtual UUID EyesItem { + get { return m_wearables[AvatarWearable.EYES].ItemID; } + set { m_wearables[AvatarWearable.EYES].ItemID = value; } + } + + public virtual UUID EyesAsset { + get { return m_wearables[AvatarWearable.EYES].AssetID; } + set { m_wearables[AvatarWearable.EYES].AssetID = value; } + } + + public virtual UUID ShirtItem { + get { return m_wearables[AvatarWearable.SHIRT].ItemID; } + set { m_wearables[AvatarWearable.SHIRT].ItemID = value; } + } + + public virtual UUID ShirtAsset { + get { return m_wearables[AvatarWearable.SHIRT].AssetID; } + set { m_wearables[AvatarWearable.SHIRT].AssetID = value; } + } + + public virtual UUID PantsItem { + get { return m_wearables[AvatarWearable.PANTS].ItemID; } + set { m_wearables[AvatarWearable.PANTS].ItemID = value; } + } + + public virtual UUID PantsAsset { + get { return m_wearables[AvatarWearable.PANTS].AssetID; } + set { m_wearables[AvatarWearable.PANTS].AssetID = value; } + } + + public virtual UUID ShoesItem { + get { return m_wearables[AvatarWearable.SHOES].ItemID; } + set { m_wearables[AvatarWearable.SHOES].ItemID = value; } + } + + public virtual UUID ShoesAsset { + get { return m_wearables[AvatarWearable.SHOES].AssetID; } + set { m_wearables[AvatarWearable.SHOES].AssetID = value; } + } + + public virtual UUID SocksItem { + get { return m_wearables[AvatarWearable.SOCKS].ItemID; } + set { m_wearables[AvatarWearable.SOCKS].ItemID = value; } + } + + public virtual UUID SocksAsset { + get { return m_wearables[AvatarWearable.SOCKS].AssetID; } + set { m_wearables[AvatarWearable.SOCKS].AssetID = value; } + } + + public virtual UUID JacketItem { + get { return m_wearables[AvatarWearable.JACKET].ItemID; } + set { m_wearables[AvatarWearable.JACKET].ItemID = value; } + } + + public virtual UUID JacketAsset { + get { return m_wearables[AvatarWearable.JACKET].AssetID; } + set { m_wearables[AvatarWearable.JACKET].AssetID = value; } + } + + public virtual UUID GlovesItem { + get { return m_wearables[AvatarWearable.GLOVES].ItemID; } + set { m_wearables[AvatarWearable.GLOVES].ItemID = value; } + } + + public virtual UUID GlovesAsset { + get { return m_wearables[AvatarWearable.GLOVES].AssetID; } + set { m_wearables[AvatarWearable.GLOVES].AssetID = value; } + } + + public virtual UUID UnderShirtItem { + get { return m_wearables[AvatarWearable.UNDERSHIRT].ItemID; } + set { m_wearables[AvatarWearable.UNDERSHIRT].ItemID = value; } + } + + public virtual UUID UnderShirtAsset { + get { return m_wearables[AvatarWearable.UNDERSHIRT].AssetID; } + set { m_wearables[AvatarWearable.UNDERSHIRT].AssetID = value; } + } + + public virtual UUID UnderPantsItem { + get { return m_wearables[AvatarWearable.UNDERPANTS].ItemID; } + set { m_wearables[AvatarWearable.UNDERPANTS].ItemID = value; } + } + + public virtual UUID UnderPantsAsset { + get { return m_wearables[AvatarWearable.UNDERPANTS].AssetID; } + set { m_wearables[AvatarWearable.UNDERPANTS].AssetID = value; } + } + + public virtual UUID SkirtItem { + get { return m_wearables[AvatarWearable.SKIRT].ItemID; } + set { m_wearables[AvatarWearable.SKIRT].ItemID = value; } + } + + public virtual UUID SkirtAsset { + get { return m_wearables[AvatarWearable.SKIRT].AssetID; } + set { m_wearables[AvatarWearable.SKIRT].AssetID = value; } + } public virtual float AvatarHeight { @@ -286,103 +231,217 @@ namespace OpenSim.Framework get { return m_hipOffset; } } - //Builds the VisualParam Enum using LIBOMV's Visual Param NameValues - /* - public void BuildVisualParamEnum() - { - Dictionary IndexedParams = new Dictionary(); - int vpIndex = 0; - IndexedParams = new Dictionary(); - - System.Text.StringBuilder sb = new System.Text.StringBuilder(); - - sb.Append("public enum VPElement: int\n"); - sb.Append("{\n"); - foreach (KeyValuePair kvp in OpenMetaverse.VisualParams.Params) - { - VisualParam vp = kvp.Value; - - // Only Group-0 parameters are sent in AgentSetAppearance packets - if (kvp.Value.Group == 0) - { - - if (!IndexedParams.ContainsKey(vp.Name)) - { - - if (vp.Label.Length > 0 || vp.LabelMin.Length > 0 || vp.LabelMax.Length > 0) - { - - sb.Append("/// \n"); - if (vp.LabelMin.Length > 0 && vp.LabelMax.Length > 0) - sb.Append(string.Format("/// {0} - {1} 0--+255 {2}\n", vp.Label, vp.LabelMin, - vp.LabelMax)); - - else - sb.Append(string.Format("/// {0}\n", vp.Label)); - - sb.Append("/// \n"); - } - sb.Append(string.Format(" {0}_{1} = {2}", vp.Wearable.ToUpper(), vp.Name.ToUpper().Replace(" ", "_"),vpIndex)); - - IndexedParams.Add(vp.Name, vpIndex++); - } - else - { - sb.Append(string.Format(" {0}_{1}_{2} = {2}", vp.Wearable.ToUpper(), vp.Name.ToUpper().Replace(" ", "_"), vpIndex)); - vpIndex++; - //int i = 0; - } - } - if (vpIndex < 217) - sb.Append(",\n"); - else - sb.Append("\n"); - - } - sb.Append("}\n"); - - } - */ - public AvatarAppearance() : this(UUID.Zero) {} public AvatarAppearance(UUID owner) { - m_wearables = new AvatarWearable[MAX_WEARABLES]; - for (int i = 0; i < MAX_WEARABLES; i++) - { - // this makes them all null - m_wearables[i] = new AvatarWearable(); - } +// DEBUG ON + m_log.WarnFormat("[AVATAR APPEARANCE] create empty appearance for {0}",owner); +// DEBUG OFF m_serial = 0; m_owner = owner; - //BuildVisualParamEnum() - m_visualparams = new byte[VISUALPARAM_COUNT]; - // This sets Visual Params with *less* weirder values then default. Instead of a ugly alien, it looks like a fat scientist - SetDefaultParams(m_visualparams); + SetDefaultWearables(); - m_texture = GetDefaultTexture(); + SetDefaultTexture(); + SetDefaultParams(); + SetHeight(); + + m_attachments = new Dictionary(); } - public AvatarAppearance(UUID avatarID, AvatarWearable[] wearables, byte[] visualParams) + public AvatarAppearance(UUID avatarID, OSDMap map) { +// DEBUG ON + m_log.WarnFormat("[AVATAR APPEARANCE] create appearance for {0} from OSDMap",avatarID); +// DEBUG OFF m_owner = avatarID; + Unpack(map); + SetHeight(); + } + + public AvatarAppearance(UUID avatarID, AvatarWearable[] wearables, Primitive.TextureEntry textureEntry, byte[] visualParams) + { +// DEBUG ON + m_log.WarnFormat("[AVATAR APPEARANCE] create initialized appearance for {0}",avatarID); +// DEBUG OFF m_serial = 1; - m_wearables = wearables; - m_visualparams = visualParams; - m_texture = GetDefaultTexture(); + m_owner = avatarID; + + if (wearables != null) + m_wearables = wearables; + else + SetDefaultWearables(); + + if (textureEntry != null) + m_texture = textureEntry; + else + SetDefaultTexture(); + + if (visualParams != null) + m_visualparams = visualParams; + else + SetDefaultParams(); + + SetHeight(); + + m_attachments = new Dictionary(); + } + + public AvatarAppearance(AvatarAppearance appearance) + { +// DEBUG ON + m_log.WarnFormat("[AVATAR APPEARANCE] create from an existing appearance"); +// DEBUG OFF + if (appearance == null) + { + m_serial = 0; + m_owner = UUID.Zero; + + SetDefaultWearables(); + SetDefaultTexture(); + SetDefaultParams(); + SetHeight(); + + m_attachments = new Dictionary(); + + return; + } + + m_serial = appearance.Serial; + m_owner = appearance.Owner; + + m_wearables = null; + if (appearance.Wearables != null) + { + m_wearables = new AvatarWearable[AvatarWearable.MAX_WEARABLES]; //should be 13 of these + for (int i = 0; i < AvatarWearable.MAX_WEARABLES; i++) + SetWearable(i,appearance.Wearables[i]); + } + + m_texture = null; + if (appearance.Texture != null) + { + byte[] tbytes = appearance.Texture.GetBytes(); + m_texture = new Primitive.TextureEntry(tbytes,0,tbytes.Length); + } + + m_visualparams = null; + if (appearance.VisualParams != null) + m_visualparams = (byte[])appearance.VisualParams.Clone(); + + m_attachments = new Dictionary(); + foreach (KeyValuePair kvp in appearance.Attachments) + m_attachments[kvp.Key] = new AvatarAttachment(kvp.Value); + } + + protected virtual void SetDefaultWearables() + { + m_wearables = AvatarWearable.DefaultWearables; + } + + protected virtual void SetDefaultParams() + { + m_visualparams = new byte[VISUALPARAM_COUNT]; + for (int i = 0; i < VISUALPARAM_COUNT; i++) + { + m_visualparams[i] = 150; + } + } + + protected virtual void SetDefaultTexture() + { + m_texture = new Primitive.TextureEntry(new UUID("C228D1CF-4B5D-4BA8-84F4-899A0796AA97")); + // The initialization of these seems to force a rebake regardless of whether it is needed + // m_textures.CreateFace(0).TextureID = new UUID("00000000-0000-1111-9999-000000000012"); + // m_textures.CreateFace(1).TextureID = Util.BLANK_TEXTURE_UUID; + // m_textures.CreateFace(2).TextureID = Util.BLANK_TEXTURE_UUID; + // m_textures.CreateFace(3).TextureID = new UUID("6522E74D-1660-4E7F-B601-6F48C1659A77"); + // m_textures.CreateFace(4).TextureID = new UUID("7CA39B4C-BD19-4699-AFF7-F93FD03D3E7B"); + // m_textures.CreateFace(5).TextureID = new UUID("00000000-0000-1111-9999-000000000010"); + // m_textures.CreateFace(6).TextureID = new UUID("00000000-0000-1111-9999-000000000011"); } /// - /// Set up appearance textures and avatar parameters, including a height calculation + /// Set up appearance textures. + /// Returns boolean that indicates whether the new entries actually change the + /// existing values. /// + public virtual bool SetTextureEntries(Primitive.TextureEntry textureEntry) + { + if (textureEntry == null) + return false; + + // There are much simpler versions of this copy that could be + // made. We determine if any of the textures actually + // changed to know if the appearance should be saved later + bool changed = false; + for (int i = 0; i < AvatarAppearance.TEXTURE_COUNT; i++) + { + Primitive.TextureEntryFace newface = textureEntry.FaceTextures[i]; + Primitive.TextureEntryFace oldface = m_texture.FaceTextures[i]; + + if (newface == null) + { + if (oldface == null) continue; + } + else + { + if (oldface != null && oldface.TextureID == newface.TextureID) continue; + } + + m_texture.FaceTextures[i] = (newface != null) ? new Primitive.TextureEntryFace(newface) : null; + changed = true; +// DEBUG ON + if (newface != null) + m_log.WarnFormat("[SCENEPRESENCE] index {0}, new texture id {1}",i,newface.TextureID); +// DEBUG OFF + } + + return changed; + } + + /// + /// Set up visual parameters for the avatar and refresh the avatar height + /// Returns boolean that indicates whether the new entries actually change the + /// existing values. + /// + public virtual bool SetVisualParams(byte[] visualParams) + { + if (visualParams == null) + return false; + + // There are much simpler versions of this copy that could be + // made. We determine if any of the visual parameters actually + // changed to know if the appearance should be saved later + bool changed = false; + for (int i = 0; i < AvatarAppearance.VISUALPARAM_COUNT; i++) + { + if (visualParams[i] != m_visualparams[i]) + { +// DEBUG ON + m_log.WarnFormat("[AVATARAPPEARANCE] vparams changed [{0}] {1} ==> {2}", + i,m_visualparams[i],visualParams[i]); +// DEBUG OFF + m_visualparams[i] = visualParams[i]; + changed = true; + } + } + + // Reset the height if the visual parameters actually changed + if (changed) + SetHeight(); + + return changed; + } + public virtual void SetAppearance(Primitive.TextureEntry textureEntry, byte[] visualParams) { - if (textureEntry != null) - m_texture = textureEntry; - if (visualParams != null) - m_visualparams = visualParams; - + SetTextureEntries(textureEntry); + SetVisualParams(visualParams); + } + + public virtual void SetHeight() + { m_avatarHeight = 1.23077f // Shortest possible avatar height + 0.516945f * (float)m_visualparams[(int)VPElement.SHAPE_HEIGHT] / 255.0f // Body height + 0.072514f * (float)m_visualparams[(int)VPElement.SHAPE_HEAD_SIZE] / 255.0f // Head size @@ -390,217 +449,63 @@ namespace OpenSim.Framework + 0.08f * (float)m_visualparams[(int)VPElement.SHOES_PLATFORM_HEIGHT] / 255.0f // Shoe platform height + 0.07f * (float)m_visualparams[(int)VPElement.SHOES_HEEL_HEIGHT] / 255.0f // Shoe heel height + 0.076f * (float)m_visualparams[(int)VPElement.SHAPE_NECK_LENGTH] / 255.0f; // Neck length + m_hipOffset = (((1.23077f // Half of avatar + 0.516945f * (float)m_visualparams[(int)VPElement.SHAPE_HEIGHT] / 255.0f // Body height + 0.3836f * (float)m_visualparams[(int)VPElement.SHAPE_LEG_LENGTH] / 255.0f // Leg length + 0.08f * (float)m_visualparams[(int)VPElement.SHOES_PLATFORM_HEIGHT] / 255.0f // Shoe platform height + 0.07f * (float)m_visualparams[(int)VPElement.SHOES_HEEL_HEIGHT] / 255.0f // Shoe heel height ) / 2) - m_avatarHeight / 2) * 0.31f - 0.0425f; - - - - //System.Console.WriteLine(">>>>>>> [APPEARANCE]: Height {0} Hip offset {1}" + m_avatarHeight + " " + m_hipOffset); - //m_log.Debug("------------- Set Appearance Texture ---------------"); - //Primitive.TextureEntryFace[] faces = Texture.FaceTextures; - //foreach (Primitive.TextureEntryFace face in faces) - //{ - // if (face != null) - // m_log.Debug(" ++ " + face.TextureID); - // else - // m_log.Debug(" ++ NULL "); - //} - //m_log.Debug("----------------------------"); - } public virtual void SetWearable(int wearableId, AvatarWearable wearable) { - m_wearables[wearableId] = wearable; +// DEBUG ON +// m_log.WarnFormat("[AVATARAPPEARANCE] set wearable {0} --> {1}:{2}",wearableId,wearable.ItemID,wearable.AssetID); +// DEBUG OFF + m_wearables[wearableId] = new AvatarWearable(wearable.ItemID,wearable.AssetID); } - public static Primitive.TextureEntry GetDefaultTexture() - { - Primitive.TextureEntry textu = new Primitive.TextureEntry(new UUID("C228D1CF-4B5D-4BA8-84F4-899A0796AA97")); - textu.CreateFace(0).TextureID = new UUID("00000000-0000-1111-9999-000000000012"); - textu.CreateFace(1).TextureID = Util.BLANK_TEXTURE_UUID; - textu.CreateFace(2).TextureID = Util.BLANK_TEXTURE_UUID; - textu.CreateFace(3).TextureID = new UUID("6522E74D-1660-4E7F-B601-6F48C1659A77"); - textu.CreateFace(4).TextureID = new UUID("7CA39B4C-BD19-4699-AFF7-F93FD03D3E7B"); - textu.CreateFace(5).TextureID = new UUID("00000000-0000-1111-9999-000000000010"); - textu.CreateFace(6).TextureID = new UUID("00000000-0000-1111-9999-000000000011"); - return textu; - } - - public static byte[] GetDefaultVisualParams() - { - byte[] visualParams; - visualParams = new byte[VISUALPARAM_COUNT]; - for (int i = 0; i < VISUALPARAM_COUNT; i++) - { - visualParams[i] = 100; - } - return visualParams; - } +// DEBUG ON public override String ToString() { - String s = "[Wearables] =>"; - s += " Body Item: " + BodyItem.ToString() + ";"; - s += " Skin Item: " + SkinItem.ToString() + ";"; - s += " Shirt Item: " + ShirtItem.ToString() + ";"; - s += " Pants Item: " + PantsItem.ToString() + ";"; + String s = ""; + for (uint i = 0; i < AvatarAppearance.TEXTURE_COUNT; i++) + if (m_texture.FaceTextures[i] != null) + s += String.Format("Texture: {0} --> {1}\n",i,m_texture.FaceTextures[i].TextureID); + + foreach (AvatarWearable awear in m_wearables) + s += String.Format("Wearable: item={0}, asset={1}\n",awear.ItemID,awear.AssetID); + + s += "Visual Params: "; + for (uint j = 0; j < AvatarAppearance.VISUALPARAM_COUNT; j++) + s += String.Format("{0},",m_visualparams[j]); + s += "\n"; + return s; } +// DEBUG OFF - // this is used for OGS1 - public virtual Hashtable ToHashTable() + public void SetAttachments(AvatarAttachment[] data) { - Hashtable h = new Hashtable(); - h["owner"] = Owner.ToString(); - h["serial"] = Serial.ToString(); - h["visual_params"] = VisualParams; - h["texture"] = Texture.GetBytes(); - h["avatar_height"] = AvatarHeight.ToString(); - h["body_item"] = BodyItem.ToString(); - h["body_asset"] = BodyAsset.ToString(); - h["skin_item"] = SkinItem.ToString(); - h["skin_asset"] = SkinAsset.ToString(); - h["hair_item"] = HairItem.ToString(); - h["hair_asset"] = HairAsset.ToString(); - h["eyes_item"] = EyesItem.ToString(); - h["eyes_asset"] = EyesAsset.ToString(); - h["shirt_item"] = ShirtItem.ToString(); - h["shirt_asset"] = ShirtAsset.ToString(); - h["pants_item"] = PantsItem.ToString(); - h["pants_asset"] = PantsAsset.ToString(); - h["shoes_item"] = ShoesItem.ToString(); - h["shoes_asset"] = ShoesAsset.ToString(); - h["socks_item"] = SocksItem.ToString(); - h["socks_asset"] = SocksAsset.ToString(); - h["jacket_item"] = JacketItem.ToString(); - h["jacket_asset"] = JacketAsset.ToString(); - h["gloves_item"] = GlovesItem.ToString(); - h["gloves_asset"] = GlovesAsset.ToString(); - h["undershirt_item"] = UnderShirtItem.ToString(); - h["undershirt_asset"] = UnderShirtAsset.ToString(); - h["underpants_item"] = UnderPantsItem.ToString(); - h["underpants_asset"] = UnderPantsAsset.ToString(); - h["skirt_item"] = SkirtItem.ToString(); - h["skirt_asset"] = SkirtAsset.ToString(); - - string attachments = GetAttachmentsString(); - if (attachments != String.Empty) - h["attachments"] = attachments; - - return h; + foreach (AvatarAttachment attach in data) + m_attachments[attach.AttachPoint] = new AvatarAttachment(attach); } - public AvatarAppearance(Hashtable h) + public void SetAttachment(int attachpoint, UUID item, UUID asset) { - Owner = new UUID((string)h["owner"]); - Serial = Convert.ToInt32((string)h["serial"]); - VisualParams = (byte[])h["visual_params"]; - - if (h.Contains("texture")) - { - byte[] te = h["texture"] as byte[]; - if (te != null && te.Length > 0) - Texture = new Primitive.TextureEntry(te, 0, te.Length); - } - else - { - // We shouldn't be receiving appearance hashtables without a TextureEntry, - // but in case we do this will prevent a failure when saving to the database - Texture = GetDefaultTexture(); - } - - - AvatarHeight = (float)Convert.ToDouble((string)h["avatar_height"]); - - m_wearables = new AvatarWearable[MAX_WEARABLES]; - for (int i = 0; i < MAX_WEARABLES; i++) - { - // this makes them all null - m_wearables[i] = new AvatarWearable(); - } - - BodyItem = new UUID((string)h["body_item"]); - BodyAsset = new UUID((string)h["body_asset"]); - SkinItem = new UUID((string)h["skin_item"]); - SkinAsset = new UUID((string)h["skin_asset"]); - HairItem = new UUID((string)h["hair_item"]); - HairAsset = new UUID((string)h["hair_asset"]); - EyesItem = new UUID((string)h["eyes_item"]); - EyesAsset = new UUID((string)h["eyes_asset"]); - ShirtItem = new UUID((string)h["shirt_item"]); - ShirtAsset = new UUID((string)h["shirt_asset"]); - PantsItem = new UUID((string)h["pants_item"]); - PantsAsset = new UUID((string)h["pants_asset"]); - ShoesItem = new UUID((string)h["shoes_item"]); - ShoesAsset = new UUID((string)h["shoes_asset"]); - SocksItem = new UUID((string)h["socks_item"]); - SocksAsset = new UUID((string)h["socks_asset"]); - JacketItem = new UUID((string)h["jacket_item"]); - JacketAsset = new UUID((string)h["jacket_asset"]); - GlovesItem = new UUID((string)h["gloves_item"]); - GlovesAsset = new UUID((string)h["gloves_asset"]); - UnderShirtItem = new UUID((string)h["undershirt_item"]); - UnderShirtAsset = new UUID((string)h["undershirt_asset"]); - UnderPantsItem = new UUID((string)h["underpants_item"]); - UnderPantsAsset = new UUID((string)h["underpants_asset"]); - SkirtItem = new UUID((string)h["skirt_item"]); - SkirtAsset = new UUID((string)h["skirt_asset"]); - - if (h.ContainsKey("attachments")) - { - SetAttachmentsString(h["attachments"].ToString()); - } - } - - private Dictionary m_attachments = new Dictionary(); - - public void SetAttachments(AttachmentData[] data) - { - foreach (AttachmentData a in data) - { - m_attachments[a.AttachPoint] = new UUID[2]; - m_attachments[a.AttachPoint][0] = a.ItemID; - m_attachments[a.AttachPoint][1] = a.AssetID; - } - } - - public void SetAttachments(Hashtable data) - { - m_attachments.Clear(); - - if (data == null) + if (attachpoint == 0) return; - foreach (DictionaryEntry e in data) + if (item == UUID.Zero) { - int attachpoint = Convert.ToInt32(e.Key); - if (m_attachments.ContainsKey(attachpoint)) - continue; - - UUID item; - UUID asset; - - Hashtable uuids = (Hashtable) e.Value; - UUID.TryParse(uuids["item"].ToString(), out item); - UUID.TryParse(uuids["asset"].ToString(), out asset); - - UUID[] attachment = new UUID[2]; - attachment[0] = item; - attachment[1] = asset; - - m_attachments[attachpoint] = attachment; + m_attachments.Remove(attachpoint); + return; } - } - public Dictionary GetAttachmentDictionary() - { - return m_attachments; + m_attachments[attachpoint] = new AvatarAttachment(attachpoint,item,asset); } public Hashtable GetAttachments() @@ -610,16 +515,13 @@ namespace OpenSim.Framework Hashtable ret = new Hashtable(); - foreach (KeyValuePair kvp in m_attachments) + foreach (KeyValuePair kvp in m_attachments) { - int attachpoint = kvp.Key; - UUID[] uuids = kvp.Value; - Hashtable data = new Hashtable(); - data["item"] = uuids[0].ToString(); - data["asset"] = uuids[1].ToString(); + data["item"] = kvp.Value.ItemID.ToString(); + data["asset"] = kvp.Value.AssetID.ToString(); - ret[attachpoint] = data; + ret[kvp.Key] = data; } return ret; @@ -635,7 +537,7 @@ namespace OpenSim.Framework if (!m_attachments.ContainsKey(attachpoint)) return UUID.Zero; - return m_attachments[attachpoint][0]; + return m_attachments[attachpoint].ItemID; } public UUID GetAttachedAsset(int attachpoint) @@ -643,33 +545,14 @@ namespace OpenSim.Framework if (!m_attachments.ContainsKey(attachpoint)) return UUID.Zero; - return m_attachments[attachpoint][1]; - } - - public void SetAttachment(int attachpoint, UUID item, UUID asset) - { - if (attachpoint == 0) - return; - - if (item == UUID.Zero) - { - if (m_attachments.ContainsKey(attachpoint)) - m_attachments.Remove(attachpoint); - return; - } - - if (!m_attachments.ContainsKey(attachpoint)) - m_attachments[attachpoint] = new UUID[2]; - - m_attachments[attachpoint][0] = item; - m_attachments[attachpoint][1] = asset; + return m_attachments[attachpoint].AssetID; } public int GetAttachpoint(UUID itemID) { - foreach (KeyValuePair kvp in m_attachments) + foreach (KeyValuePair kvp in m_attachments) { - if (kvp.Value[0] == itemID) + if (kvp.Value.ItemID == itemID) { return kvp.Key; } @@ -690,42 +573,126 @@ namespace OpenSim.Framework m_attachments.Clear(); } - string GetAttachmentsString() + /// + /// Create an OSDMap from the appearance data + /// + public OSDMap Pack() { - List strings = new List(); + OSDMap data = new OSDMap(); - foreach (KeyValuePair e in m_attachments) + data["serial"] = OSD.FromInteger(m_serial); + data["height"] = OSD.FromReal(m_avatarHeight); + data["hipoffset"] = OSD.FromReal(m_hipOffset); + + // Wearables + OSDArray wears = new OSDArray(AvatarWearable.MAX_WEARABLES); + for (int i = 0; i < AvatarWearable.MAX_WEARABLES; i++) + wears.Add(m_wearables[i].Pack()); + data["wearables"] = wears; + + // Avatar Textures + OSDArray textures = new OSDArray(AvatarAppearance.TEXTURE_COUNT); + for (uint i = 0; i < AvatarAppearance.TEXTURE_COUNT; i++) { - strings.Add(e.Key.ToString()); - strings.Add(e.Value[0].ToString()); - strings.Add(e.Value[1].ToString()); + if (m_texture.FaceTextures[i] != null) + textures.Add(OSD.FromUUID(m_texture.FaceTextures[i].TextureID)); + else + textures.Add(OSD.FromUUID(UUID.Zero)); } + data["textures"] = textures; - return String.Join(",", strings.ToArray()); + // Visual Parameters + OSDBinary visualparams = new OSDBinary(m_visualparams); + data["visualparams"] = visualparams; + + // Attachments + OSDArray attachs = new OSDArray(m_attachments.Count); + foreach (KeyValuePair kvp in m_attachments) + attachs.Add(kvp.Value.Pack()); + data["attachments"] = attachs; + + return data; } - void SetAttachmentsString(string data) + /// + /// Unpack and OSDMap and initialize the appearance + /// from it + /// + public void Unpack(OSDMap data) { - string[] strings = data.Split(new char[] {','}); - int i = 0; + if ((data != null) && (data["appearance_serial"] != null)) + m_serial = data["appearance_serial"].AsInteger(); + if ((data != null) && (data["height"] != null)) + m_avatarHeight = (float)data["height"].AsReal(); + if ((data != null) && (data["hipoffset"] != null)) + m_hipOffset = (float)data["hipoffset"].AsReal(); - m_attachments.Clear(); - - while (strings.Length - i > 2) + try { - int attachpoint = Int32.Parse(strings[i]); - UUID item = new UUID(strings[i+1]); - UUID asset = new UUID(strings[i+2]); - i += 3; - - if (!m_attachments.ContainsKey(attachpoint)) + // Wearables + SetDefaultWearables(); + if ((data != null) && (data["wearables"] != null) && (data["wearables"]).Type == OSDType.Array) { - m_attachments[attachpoint] = new UUID[2]; - m_attachments[attachpoint][0] = item; - m_attachments[attachpoint][1] = asset; + OSDArray wears = (OSDArray)(data["wearables"]); + for (int i = 0; i < wears.Count; i++) + m_wearables[i] = new AvatarWearable((OSDMap)wears[i]); + } + else + { + m_log.Warn("[AVATARAPPEARANCE] failed to unpack wearables"); + } + + // Avatar Textures + SetDefaultTexture(); + if ((data != null) && (data["textures"] != null) && (data["textures"]).Type == OSDType.Array) + { + OSDArray textures = (OSDArray)(data["textures"]); + for (int i = 0; i < AvatarAppearance.TEXTURE_COUNT && i < textures.Count; i++) + { + if (textures[i] != null) + { + UUID textureID = textures[i].AsUUID(); + if (textureID != UUID.Zero) + m_texture.CreateFace((uint)i).TextureID = textureID; + } + } + } + else + { + m_log.Warn("[AVATARAPPEARANCE] failed to unpack textures"); + } + + // Visual Parameters + SetDefaultParams(); + if ((data != null) && (data["visualparams"] != null)) + { + if ((data["visualparams"].Type == OSDType.Binary) || (data["visualparams"].Type == OSDType.Array)) + m_visualparams = data["visualparams"].AsBinary(); + } + else + { + m_log.Warn("[AVATARAPPEARANCE] failed to unpack visual parameters"); + } + + // Attachments + m_attachments = new Dictionary(); + if ((data != null) && (data["attachments"] != null) && (data["attachments"]).Type == OSDType.Array) + { + OSDArray attachs = (OSDArray)(data["attachments"]); + for (int i = 0; i < attachs.Count; i++) + { + AvatarAttachment attach = new AvatarAttachment((OSDMap)attachs[i]); + m_attachments[attach.AttachPoint] = attach; + } } } + catch (Exception e) + { + m_log.ErrorFormat("[AVATARAPPEARANCE] unpack failed badly: {0}",e.Message); + } } + + /// /// Viewer Params Array Element for AgentSetAppearance /// Generated from LibOMV's Visual Params list diff --git a/OpenSim/Region/Framework/Interfaces/IAvatarFactory.cs b/OpenSim/Framework/AvatarAttachment.cs similarity index 56% rename from OpenSim/Region/Framework/Interfaces/IAvatarFactory.cs rename to OpenSim/Framework/AvatarAttachment.cs index c967f30d9d..c68d78d74e 100644 --- a/OpenSim/Region/Framework/Interfaces/IAvatarFactory.cs +++ b/OpenSim/Framework/AvatarAttachment.cs @@ -25,14 +25,54 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +using System; using OpenMetaverse; -using OpenSim.Framework; +using OpenMetaverse.StructuredData; -namespace OpenSim.Region.Framework.Interfaces +namespace OpenSim.Framework { - public interface IAvatarFactory + public class AvatarAttachment { - bool TryGetAvatarAppearance(UUID avatarId, out AvatarAppearance appearance); - void UpdateDatabase(UUID userID, AvatarAppearance avatAppearance); + public int AttachPoint; + public UUID ItemID; + public UUID AssetID; + + public AvatarAttachment(AvatarAttachment attach) + { + AttachPoint = attach.AttachPoint; + ItemID = attach.ItemID; + AssetID = attach.AssetID; + } + + public AvatarAttachment(int point, UUID item, UUID asset) + { + AttachPoint = point; + ItemID = item; + AssetID = asset; + } + + public AvatarAttachment(OSDMap args) + { + Unpack(args); + } + + public OSDMap Pack() + { + OSDMap attachdata = new OSDMap(); + attachdata["point"] = OSD.FromInteger(AttachPoint); + attachdata["item"] = OSD.FromUUID(ItemID); + attachdata["asset"] = OSD.FromUUID(AssetID); + + return attachdata; + } + + + public void Unpack(OSDMap args) + { + if (args["point"] != null) + AttachPoint = args["point"].AsInteger(); + ItemID = (args["item"] != null) ? args["item"].AsUUID() : UUID.Zero; + AssetID = (args["asset"] != null) ? args["asset"].AsUUID() : UUID.Zero; + } } } diff --git a/OpenSim/Framework/AvatarWearable.cs b/OpenSim/Framework/AvatarWearable.cs index 30c5172ad4..87098bf6d0 100644 --- a/OpenSim/Framework/AvatarWearable.cs +++ b/OpenSim/Framework/AvatarWearable.cs @@ -26,14 +26,32 @@ */ using System; -using System.Runtime.Serialization; -using System.Security.Permissions; using OpenMetaverse; +using OpenMetaverse.StructuredData; namespace OpenSim.Framework { public class AvatarWearable { + // these are guessed at by the list here - + // http://wiki.secondlife.com/wiki/Avatar_Appearance. We'll + // correct them over time for when were are wrong. + public static readonly int BODY = 0; + public static readonly int SKIN = 1; + public static readonly int HAIR = 2; + public static readonly int EYES = 3; + public static readonly int SHIRT = 4; + public static readonly int PANTS = 5; + public static readonly int SHOES = 6; + public static readonly int SOCKS = 7; + public static readonly int JACKET = 8; + public static readonly int GLOVES = 9; + public static readonly int UNDERSHIRT = 10; + public static readonly int UNDERPANTS = 11; + public static readonly int SKIRT = 12; + + public static readonly int MAX_WEARABLES = 13; + public static readonly UUID DEFAULT_BODY_ITEM = new UUID("66c41e39-38f9-f75a-024e-585989bfaba9"); public static readonly UUID DEFAULT_BODY_ASSET = new UUID("66c41e39-38f9-f75a-024e-585989bfab73"); @@ -62,12 +80,32 @@ namespace OpenSim.Framework ItemID = itemId; } + public AvatarWearable(OSDMap args) + { + Unpack(args); + } + + public OSDMap Pack() + { + OSDMap weardata = new OSDMap(); + weardata["item"] = OSD.FromUUID(ItemID); + weardata["asset"] = OSD.FromUUID(AssetID); + + return weardata; + } + + public void Unpack(OSDMap args) + { + ItemID = (args["item"] != null) ? args["item"].AsUUID() : UUID.Zero; + AssetID = (args["asset"] != null) ? args["asset"].AsUUID() : UUID.Zero; + } + public static AvatarWearable[] DefaultWearables { get { - AvatarWearable[] defaultWearables = new AvatarWearable[13]; //should be 13 of these - for (int i = 0; i < 13; i++) + AvatarWearable[] defaultWearables = new AvatarWearable[MAX_WEARABLES]; //should be 13 of these + for (int i = 0; i < MAX_WEARABLES; i++) { defaultWearables[i] = new AvatarWearable(); } diff --git a/OpenSim/Framework/Capabilities/Caps.cs b/OpenSim/Framework/Capabilities/Caps.cs index 72283de7bb..6b64e120db 100644 --- a/OpenSim/Framework/Capabilities/Caps.cs +++ b/OpenSim/Framework/Capabilities/Caps.cs @@ -976,7 +976,9 @@ namespace OpenSim.Framework.Capabilities public void BakedTextureUploaded(UUID assetID, byte[] data) { - m_log.DebugFormat("[CAPS]: Received baked texture {0}", assetID.ToString()); +// DEBUG ON + m_log.WarnFormat("[CAPS]: Received baked texture {0}", assetID.ToString()); +// DEBUG OFF AssetBase asset; asset = new AssetBase(assetID, "Baked Texture", (sbyte)AssetType.Texture, m_agentID.ToString()); asset.Data = data; diff --git a/OpenSim/Framework/ChildAgentDataUpdate.cs b/OpenSim/Framework/ChildAgentDataUpdate.cs index 0dc5dbc292..fdebba3d2e 100644 --- a/OpenSim/Framework/ChildAgentDataUpdate.cs +++ b/OpenSim/Framework/ChildAgentDataUpdate.cs @@ -225,46 +225,6 @@ namespace OpenSim.Framework } } - public class AttachmentData - { - public int AttachPoint; - public UUID ItemID; - public UUID AssetID; - - public AttachmentData(int point, UUID item, UUID asset) - { - AttachPoint = point; - ItemID = item; - AssetID = asset; - } - - public AttachmentData(OSDMap args) - { - UnpackUpdateMessage(args); - } - - public OSDMap PackUpdateMessage() - { - OSDMap attachdata = new OSDMap(); - attachdata["point"] = OSD.FromInteger(AttachPoint); - attachdata["item"] = OSD.FromUUID(ItemID); - attachdata["asset"] = OSD.FromUUID(AssetID); - - return attachdata; - } - - - public void UnpackUpdateMessage(OSDMap args) - { - if (args["point"] != null) - AttachPoint = args["point"].AsInteger(); - if (args["item"] != null) - ItemID = args["item"].AsUUID(); - if (args["asset"] != null) - AssetID = args["asset"].AsUUID(); - } - } - public class ControllerData { public UUID ItemID; @@ -348,11 +308,14 @@ namespace OpenSim.Framework public UUID GranterID; // Appearance + public AvatarAppearance Appearance; + +/* public byte[] AgentTextures; public byte[] VisualParams; public UUID[] Wearables; - public AttachmentData[] Attachments; - + public AvatarAttachment[] Attachments; +*/ // Scripted public ControllerData[] Controllers; @@ -413,6 +376,9 @@ namespace OpenSim.Framework args["animations"] = anims; } + if (Appearance != null) + args["packed_appearance"] = Appearance.Pack(); + //if ((AgentTextures != null) && (AgentTextures.Length > 0)) //{ // OSDArray textures = new OSDArray(AgentTextures.Length); @@ -421,7 +387,7 @@ namespace OpenSim.Framework // args["agent_textures"] = textures; //} - +/* if ((AgentTextures != null) && (AgentTextures.Length > 0)) args["texture_entry"] = OSD.FromBinary(AgentTextures); @@ -441,11 +407,11 @@ namespace OpenSim.Framework if ((Attachments != null) && (Attachments.Length > 0)) { OSDArray attachs = new OSDArray(Attachments.Length); - foreach (AttachmentData att in Attachments) - attachs.Add(att.PackUpdateMessage()); + foreach (AvatarAttachment att in Attachments) + attachs.Add(att.Pack()); args["attachments"] = attachs; } - +*/ if ((Controllers != null) && (Controllers.Length > 0)) { OSDArray controls = new OSDArray(Controllers.Length); @@ -581,6 +547,12 @@ namespace OpenSim.Framework // AgentTextures[i++] = o.AsUUID(); //} + if (args["packed_appearance"] != null) + Appearance = new AvatarAppearance(AgentID,(OSDMap)args["packed_appearance"]); + else + Appearance = new AvatarAppearance(AgentID); + +/* if (args["texture_entry"] != null) AgentTextures = args["texture_entry"].AsBinary(); @@ -599,17 +571,17 @@ namespace OpenSim.Framework if ((args["attachments"] != null) && (args["attachments"]).Type == OSDType.Array) { OSDArray attachs = (OSDArray)(args["attachments"]); - Attachments = new AttachmentData[attachs.Count]; + Attachments = new AvatarAttachment[attachs.Count]; int i = 0; foreach (OSD o in attachs) { if (o.Type == OSDType.Map) { - Attachments[i++] = new AttachmentData((OSDMap)o); + Attachments[i++] = new AvatarAttachment((OSDMap)o); } } } - +*/ if ((args["controllers"] != null) && (args["controllers"]).Type == OSDType.Array) { OSDArray controls = (OSDArray)(args["controllers"]); diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index 94815cd238..027f9c54b1 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs @@ -43,7 +43,7 @@ namespace OpenSim.Framework public delegate void TextureRequest(Object sender, TextureRequestArgs e); - public delegate void AvatarNowWearing(Object sender, AvatarWearingArgs e); + public delegate void AvatarNowWearing(IClientAPI sender, AvatarWearingArgs e); public delegate void ImprovedInstantMessage(IClientAPI remoteclient, GridInstantMessage im); @@ -65,7 +65,7 @@ namespace OpenSim.Framework public delegate void NetworkStats(int inPackets, int outPackets, int unAckedBytes); - public delegate void SetAppearance(Primitive.TextureEntry textureEntry, byte[] visualParams); + public delegate void SetAppearance(IClientAPI remoteClient, Primitive.TextureEntry textureEntry, byte[] visualParams); public delegate void StartAnim(IClientAPI remoteClient, UUID animID); @@ -711,7 +711,7 @@ namespace OpenSim.Framework event TeleportLandmarkRequest OnTeleportLandmarkRequest; event DeRezObject OnDeRezObject; event Action OnRegionHandShakeReply; - event GenericCall2 OnRequestWearables; + event GenericCall1 OnRequestWearables; event GenericCall1 OnCompleteMovementToRegion; event UpdateAgent OnPreAgentUpdate; event UpdateAgent OnAgentUpdate; diff --git a/OpenSim/Framework/Tests/AgentCircuitDataTest.cs b/OpenSim/Framework/Tests/AgentCircuitDataTest.cs index 2fda6f31cc..05d8469728 100644 --- a/OpenSim/Framework/Tests/AgentCircuitDataTest.cs +++ b/OpenSim/Framework/Tests/AgentCircuitDataTest.cs @@ -65,9 +65,7 @@ namespace OpenSim.Framework.Tests SessionId = UUID.Random(); AvAppearance = new AvatarAppearance(AgentId); - AvAppearance.SetDefaultWearables(); VisualParams = new byte[218]; - AvAppearance.SetDefaultParams(VisualParams); //body VisualParams[(int)AvatarAppearance.VPElement.SHAPE_HEIGHT] = 155; diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 48d5a12204..426e1df695 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -79,7 +79,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP public event DeRezObject OnDeRezObject; public event ModifyTerrain OnModifyTerrain; public event Action OnRegionHandShakeReply; - public event GenericCall2 OnRequestWearables; + public event GenericCall1 OnRequestWearables; public event SetAppearance OnSetAppearance; public event AvatarNowWearing OnAvatarNowWearing; public event RezSingleAttachmentFromInv OnRezSingleAttachmentFromInv; @@ -5647,11 +5647,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP private bool HandlerAgentWearablesRequest(IClientAPI sender, Packet Pack) { - GenericCall2 handlerRequestWearables = OnRequestWearables; + GenericCall1 handlerRequestWearables = OnRequestWearables; if (handlerRequestWearables != null) { - handlerRequestWearables(); + handlerRequestWearables(sender); } Action handlerRequestAvatarsData = OnRequestAvatarsData; @@ -5694,7 +5694,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP if (appear.ObjectData.TextureEntry.Length > 1) te = new Primitive.TextureEntry(appear.ObjectData.TextureEntry, 0, appear.ObjectData.TextureEntry.Length); - handlerSetAppearance(te, visualparams); + handlerSetAppearance(sender, te, visualparams); } catch (Exception e) { diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs index 2a0c0b11e6..ad6b1deba4 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs @@ -124,13 +124,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments // Save avatar attachment information ScenePresence presence; - if (m_scene.AvatarFactory != null && m_scene.TryGetScenePresence(remoteClient.AgentId, out presence)) + if (m_scene.AvatarService != null && m_scene.TryGetScenePresence(remoteClient.AgentId, out presence)) { m_log.Info( "[ATTACHMENTS MODULE]: Saving avatar attachment. AgentID: " + remoteClient.AgentId + ", AttachmentPoint: " + AttachmentPt); - m_scene.AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance); + m_scene.AvatarService.SetAppearance(remoteClient.AgentId, presence.Appearance); } } } @@ -382,8 +382,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments item = m_scene.InventoryService.GetItem(item); presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /* att.UUID */); - if (m_scene.AvatarFactory != null) - m_scene.AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance); + if (m_scene.AvatarService != null) + m_scene.AvatarService.SetAppearance(remoteClient.AgentId, presence.Appearance); } } @@ -405,10 +405,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments presence.Appearance.DetachAttachment(itemID); // Save avatar attachment information - if (m_scene.AvatarFactory != null) + if (m_scene.AvatarService != null) { m_log.Debug("[ATTACHMENTS MODULE]: Detaching from UserID: " + remoteClient.AgentId + ", ItemID: " + itemID); - m_scene.AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance); + m_scene.AvatarService.SetAppearance(remoteClient.AgentId, presence.Appearance); } } @@ -435,9 +435,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments presence.Appearance.DetachAttachment(itemID); - if (m_scene.AvatarFactory != null) + if (m_scene.AvatarService != null) { - m_scene.AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance); + m_scene.AvatarService.SetAppearance(remoteClient.AgentId, presence.Appearance); } part.ParentGroup.DetachToGround(); diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index 22c89370a7..9f7ff7f5a0 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs @@ -38,48 +38,20 @@ using OpenSim.Services.Interfaces; namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory { - public class AvatarFactoryModule : IAvatarFactory, IRegionModule + public class AvatarFactoryModule : IRegionModule { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + private static readonly byte[] BAKE_INDICES = new byte[] { 8, 9, 10, 11, 19, 20 }; private Scene m_scene = null; - private static readonly AvatarAppearance def = new AvatarAppearance(); - public bool TryGetAvatarAppearance(UUID avatarId, out AvatarAppearance appearance) - { - AvatarData avatar = m_scene.AvatarService.GetAvatar(avatarId); - //if ((profile != null) && (profile.RootFolder != null)) - if (avatar != null) - { - appearance = avatar.ToAvatarAppearance(avatarId); - return true; - } - - m_log.ErrorFormat("[APPEARANCE]: Appearance not found for {0}, creating default", avatarId); - appearance = CreateDefault(avatarId); - return false; - } - - private AvatarAppearance CreateDefault(UUID avatarId) - { - AvatarAppearance appearance = null; - AvatarWearable[] wearables; - byte[] visualParams; - GetDefaultAvatarAppearance(out wearables, out visualParams); - appearance = new AvatarAppearance(avatarId, wearables, visualParams); - - return appearance; - } + private bool m_startAnimationSet = false; public void Initialise(Scene scene, IConfigSource source) { - scene.RegisterModuleInterface(this); scene.EventManager.OnNewClient += NewClient; if (m_scene == null) - { m_scene = scene; - } - } public void PostInitialise() @@ -102,6 +74,8 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory public void NewClient(IClientAPI client) { + client.OnRequestWearables += SendWearables; + client.OnSetAppearance += SetAppearance; client.OnAvatarNowWearing += AvatarIsWearing; } @@ -110,13 +84,167 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory // client.OnAvatarNowWearing -= AvatarIsWearing; } - public void SetAppearanceAssets(UUID userID, ref AvatarAppearance appearance) + /// + /// Set appearance data (textureentry and slider settings) received from the client + /// + /// + /// + public void SetAppearance(IClientAPI client, Primitive.TextureEntry textureEntry, byte[] visualParams) + { + ScenePresence sp = m_scene.GetScenePresence(client.AgentId); + if (sp == null) + { + m_log.WarnFormat("[AVFACTORY] SetAppearance unable to find presence for {0}",client.AgentId); + return; + } + +// DEBUG ON + m_log.WarnFormat("[AVFACTORY] SetAppearance for {0}",client.AgentId); +// DEBUG OFF + +/* + if (m_physicsActor != null) + { + if (!IsChildAgent) + { + // This may seem like it's redundant, remove the avatar from the physics scene + // just to add it back again, but it saves us from having to update + // 3 variables 10 times a second. + bool flyingTemp = m_physicsActor.Flying; + RemoveFromPhysicalScene(); + //m_scene.PhysicsScene.RemoveAvatar(m_physicsActor); + + //PhysicsActor = null; + + AddToPhysicalScene(flyingTemp); + } + } +*/ + #region Bake Cache Check + + bool changed = false; + + // Process the texture entry + if (textureEntry != null) + { + for (int i = 0; i < BAKE_INDICES.Length; i++) + { + int j = BAKE_INDICES[i]; + Primitive.TextureEntryFace face = textureEntry.FaceTextures[j]; + + if (face != null && face.TextureID != AppearanceManager.DEFAULT_AVATAR_TEXTURE) + { + if (m_scene.AssetService.Get(face.TextureID.ToString()) == null) + { + m_log.WarnFormat("[AVFACTORY]: Missing baked texture {0} ({1}) for avatar {2}",face.TextureID,j,this.Name); + client.SendRebakeAvatarTextures(face.TextureID); + } + } + } + changed = sp.Appearance.SetTextureEntries(textureEntry); + + } + + #endregion Bake Cache Check + + changed = sp.Appearance.SetVisualParams(visualParams) || changed; + + // If nothing changed (this happens frequently) just return + if (changed) + { +// DEBUG ON + m_log.Warn("[AVFACTORY] Appearance changed"); +// DEBUG OFF + sp.Appearance.SetAppearance(textureEntry, visualParams); + if (sp.Appearance.AvatarHeight > 0) + sp.SetHeight(sp.Appearance.AvatarHeight); + + m_scene.AvatarService.SetAppearance(client.AgentId, sp.Appearance); + } +// DEBUG ON + else + m_log.Warn("[AVFACTORY] Appearance did not change"); +// DEBUG OFF + + sp.SendAppearanceToAllOtherAgents(); + if (!m_startAnimationSet) + { + sp.Animator.UpdateMovementAnimations(); + m_startAnimationSet = true; + } + + client.SendAvatarDataImmediate(sp); + client.SendAppearance(sp.Appearance.Owner,sp.Appearance.VisualParams,sp.Appearance.Texture.GetBytes()); + } + + /// + /// Tell the client for this scene presence what items it should be wearing now + /// + public void SendWearables(IClientAPI client) + { + ScenePresence sp = m_scene.GetScenePresence(client.AgentId); + if (sp == null) + { + m_log.WarnFormat("[AVFACTORY] SendWearables unable to find presence for {0}",client.AgentId); + return; + } + +// DEBUG ON + m_log.WarnFormat("[AVFACTORY]: Received request for wearables of {0}", client.AgentId); +// DEBUG OFF + client.SendWearables(sp.Appearance.Wearables,sp.Appearance.Serial++); + } + + /// + /// Update what the avatar is wearing using an item from their inventory. + /// + /// + /// + public void AvatarIsWearing(IClientAPI client, AvatarWearingArgs e) + { + ScenePresence sp = m_scene.GetScenePresence(client.AgentId); + if (sp == null) + { + m_log.WarnFormat("[AVFACTORY] AvatarIsWearing unable to find presence for {0}",client.AgentId); + return; + } + +// DEBUG ON + m_log.WarnFormat("[AVFACTORY]: AvatarIsWearing called for {0}",client.AgentId); +// DEBUG OFF + + AvatarAppearance avatAppearance = new AvatarAppearance(sp.Appearance); + + //if (!TryGetAvatarAppearance(client.AgentId, out avatAppearance)) + //{ + // m_log.Warn("[AVFACTORY]: We didn't seem to find the appearance, falling back to ScenePresence"); + // avatAppearance = sp.Appearance; + //} + + //m_log.DebugFormat("[AVFACTORY]: Received wearables for {0}", client.Name); + + foreach (AvatarWearingArgs.Wearable wear in e.NowWearing) + { + if (wear.Type < AvatarWearable.MAX_WEARABLES) + { + AvatarWearable newWearable = new AvatarWearable(wear.ItemID,UUID.Zero); + avatAppearance.SetWearable(wear.Type, newWearable); + } + } + + SetAppearanceAssets(sp.UUID, ref avatAppearance); + + m_scene.AvatarService.SetAppearance(client.AgentId, avatAppearance); + sp.Appearance = avatAppearance; + } + + private void SetAppearanceAssets(UUID userID, ref AvatarAppearance appearance) { IInventoryService invService = m_scene.InventoryService; if (invService.GetRootFolder(userID) != null) { - for (int i = 0; i < 13; i++) + for (int i = 0; i < AvatarWearable.MAX_WEARABLES; i++) { if (appearance.Wearables[i].ItemID == UUID.Zero) { @@ -134,84 +262,19 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory else { m_log.ErrorFormat( - "[APPEARANCE]: Can't find inventory item {0} for {1}, setting to default", + "[AVFACTORY]: Can't find inventory item {0} for {1}, setting to default", appearance.Wearables[i].ItemID, (WearableType)i); - appearance.Wearables[i].AssetID = def.Wearables[i].AssetID; + appearance.Wearables[i].ItemID = UUID.Zero; + appearance.Wearables[i].AssetID = UUID.Zero; } } } } else { - m_log.WarnFormat("[APPEARANCE]: user {0} has no inventory, appearance isn't going to work", userID); + m_log.WarnFormat("[AVFACTORY]: user {0} has no inventory, appearance isn't going to work", userID); } } - - /// - /// Update what the avatar is wearing using an item from their inventory. - /// - /// - /// - public void AvatarIsWearing(Object sender, AvatarWearingArgs e) - { - m_log.DebugFormat("[APPEARANCE]: AvatarIsWearing"); - - IClientAPI clientView = (IClientAPI)sender; - ScenePresence sp = m_scene.GetScenePresence(clientView.AgentId); - - if (sp == null) - { - m_log.Error("[APPEARANCE]: Avatar is child agent, ignoring AvatarIsWearing event"); - return; - } - - AvatarAppearance avatAppearance = sp.Appearance; - //if (!TryGetAvatarAppearance(clientView.AgentId, out avatAppearance)) - //{ - // m_log.Warn("[APPEARANCE]: We didn't seem to find the appearance, falling back to ScenePresence"); - // avatAppearance = sp.Appearance; - //} - - //m_log.DebugFormat("[APPEARANCE]: Received wearables for {0}", clientView.Name); - - foreach (AvatarWearingArgs.Wearable wear in e.NowWearing) - { - if (wear.Type < 13) - { - avatAppearance.Wearables[wear.Type].ItemID = wear.ItemID; - } - } - - SetAppearanceAssets(sp.UUID, ref avatAppearance); - AvatarData adata = new AvatarData(avatAppearance); - m_scene.AvatarService.SetAvatar(clientView.AgentId, adata); - - sp.Appearance = avatAppearance; - } - - public static void GetDefaultAvatarAppearance(out AvatarWearable[] wearables, out byte[] visualParams) - { - visualParams = GetDefaultVisualParams(); - wearables = AvatarWearable.DefaultWearables; - } - - public void UpdateDatabase(UUID user, AvatarAppearance appearance) - { - //m_log.DebugFormat("[APPEARANCE]: UpdateDatabase"); - AvatarData adata = new AvatarData(appearance); - m_scene.AvatarService.SetAvatar(user, adata); - } - - private static byte[] GetDefaultVisualParams() - { - byte[] visualParams; - visualParams = new byte[218]; - for (int i = 0; i < 218; i++) - { - visualParams[i] = 100; - } - return visualParams; - } } } diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Avatar/LocalAvatarServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Avatar/LocalAvatarServiceConnector.cs index 47f19a3038..9ee19f8f25 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Avatar/LocalAvatarServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Avatar/LocalAvatarServiceConnector.cs @@ -30,6 +30,7 @@ using System.Collections.Generic; using System.Reflection; using log4net; using Nini.Config; +using OpenSim.Framework; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; using OpenSim.Server.Base; @@ -137,6 +138,16 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Avatar #region IAvatarService + public AvatarAppearance GetAppearance(UUID userID) + { + return m_AvatarService.GetAppearance(userID); + } + + public bool SetAppearance(UUID userID, AvatarAppearance appearance) + { + return m_AvatarService.SetAppearance(userID,appearance); + } + public AvatarData GetAvatar(UUID userID) { return m_AvatarService.GetAvatar(userID); diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs index 268612efda..f128aa2da4 100644 --- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs @@ -82,7 +82,7 @@ namespace OpenSim.Region.Examples.SimpleModule public event DeRezObject OnDeRezObject; public event Action OnRegionHandShakeReply; - public event GenericCall2 OnRequestWearables; + public event GenericCall1 OnRequestWearables; public event GenericCall1 OnCompleteMovementToRegion; public event UpdateAgent OnPreAgentUpdate; public event UpdateAgent OnAgentUpdate; diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 0cfc235be2..c69c9b1202 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -119,7 +119,6 @@ namespace OpenSim.Region.Framework.Scenes protected IXMLRPC m_xmlrpcModule; protected IWorldComm m_worldCommModule; - protected IAvatarFactory m_AvatarFactory; protected IConfigSource m_config; protected IRegionSerialiserModule m_serialiser; protected IDialogModule m_dialogModule; @@ -399,11 +398,6 @@ namespace OpenSim.Region.Framework.Scenes public IAttachmentsModule AttachmentsModule { get; set; } - public IAvatarFactory AvatarFactory - { - get { return m_AvatarFactory; } - } - public ICapabilitiesModule CapsModule { get { return m_capsModule; } @@ -1161,7 +1155,6 @@ namespace OpenSim.Region.Framework.Scenes m_xmlrpcModule = RequestModuleInterface(); m_worldCommModule = RequestModuleInterface(); XferManager = RequestModuleInterface(); - m_AvatarFactory = RequestModuleInterface(); AttachmentsModule = RequestModuleInterface(); m_serialiser = RequestModuleInterface(); m_dialogModule = RequestModuleInterface(); diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 13d99643bf..5dc48d7402 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -75,7 +75,6 @@ namespace OpenSim.Region.Framework.Scenes private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - private static readonly byte[] BAKE_INDICES = new byte[] { 8, 9, 10, 11, 19, 20 }; // private static readonly byte[] DEFAULT_TEXTURE = AvatarAppearance.GetDefaultTexture().GetBytes(); private static readonly Array DIR_CONTROL_FLAGS = Enum.GetValues(typeof(Dir_ControlFlags)); private static readonly Vector3 HEAD_ADJUSTMENT = new Vector3(0f, 0f, 0.3f); @@ -137,8 +136,6 @@ namespace OpenSim.Region.Framework.Scenes private SendCourseLocationsMethod m_sendCourseLocationsMethod; - private bool m_startAnimationSet; - //private Vector3 m_requestedSitOffset = new Vector3(); private Vector3 m_LastFinitePos; @@ -713,13 +710,14 @@ namespace OpenSim.Region.Framework.Scenes SetDirectionVectors(); } +/* public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo, byte[] visualParams, AvatarWearable[] wearables) : this(client, world, reginfo) { m_appearance = new AvatarAppearance(m_uuid, wearables, visualParams); } - +*/ public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo, AvatarAppearance appearance) : this(client, world, reginfo) { @@ -733,8 +731,6 @@ namespace OpenSim.Region.Framework.Scenes public void RegisterToEvents() { - m_controllingClient.OnRequestWearables += SendWearables; - m_controllingClient.OnSetAppearance += SetAppearance; m_controllingClient.OnCompleteMovementToRegion += CompleteMovement; //m_controllingClient.OnCompleteMovementToRegion += SendInitialData; m_controllingClient.OnAgentUpdate += HandleAgentUpdate; @@ -1068,7 +1064,7 @@ namespace OpenSim.Region.Framework.Scenes /// /// Sets avatar height in the phyiscs plugin /// - internal void SetHeight(float height) + public void SetHeight(float height) { m_avHeight = height; if (PhysicsActor != null && !IsChildAgent) @@ -1133,7 +1129,6 @@ namespace OpenSim.Region.Framework.Scenes if (friendsModule != null) friendsModule.SendFriendsOnlineIfNeeded(ControllingClient); } - } /// @@ -2392,9 +2387,12 @@ namespace OpenSim.Region.Framework.Scenes if (m_appearance.Texture == null) return; - Vector3 pos = m_pos; - pos.Z += m_appearance.HipOffset; - + if (IsChildAgent) + { + m_log.WarnFormat("[SCENEPRESENCE] A child agent is attempting to send out avatar data"); + return; + } + remoteAvatar.m_controllingClient.SendAvatarDataImmediate(this); m_scene.StatsReporter.AddAgentUpdates(1); } @@ -2437,6 +2435,12 @@ namespace OpenSim.Region.Framework.Scenes m_perfMonMS = Util.EnvironmentTickCount(); // only send update from root agents to other clients; children are only "listening posts" + if (IsChildAgent) + { + m_log.Warn("[SCENEPRESENCE] attempt to send update from a childagent"); + return; + } + int count = 0; m_scene.ForEachScenePresence(delegate(ScenePresence sp) { @@ -2460,29 +2464,20 @@ namespace OpenSim.Region.Framework.Scenes // the inventory arrives // m_scene.GetAvatarAppearance(m_controllingClient, out m_appearance); - Vector3 pos = m_pos; - pos.Z += m_appearance.HipOffset; - m_controllingClient.SendAvatarDataImmediate(this); + m_controllingClient.SendAppearance(m_appearance.Owner,m_appearance.VisualParams,m_appearance.Texture.GetBytes()); SendInitialFullUpdateToAllClients(); } - /// - /// Tell the client for this scene presence what items it should be wearing now - /// - public void SendWearables() - { - m_log.DebugFormat("[SCENE]: Received request for wearables of {0}", Name); - - ControllingClient.SendWearables(m_appearance.Wearables, m_appearance.Serial++); - } - /// /// /// public void SendAppearanceToAllOtherAgents() { +// DEBUG ON + m_log.WarnFormat("[SP] Send appearance from {0} to all other agents",m_uuid); +// DEBUG OFF m_perfMonMS = Util.EnvironmentTickCount(); m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence) @@ -2502,87 +2497,13 @@ namespace OpenSim.Region.Framework.Scenes /// public void SendAppearanceToOtherAgent(ScenePresence avatar) { +// DEBUG ON + m_log.WarnFormat("[SP] Send appearance from {0} to {1}",m_uuid,avatar.ControllingClient.AgentId); +// DEBUG OFF avatar.ControllingClient.SendAppearance( m_appearance.Owner, m_appearance.VisualParams, m_appearance.Texture.GetBytes()); } - /// - /// Set appearance data (textureentry and slider settings) received from the client - /// - /// - /// - public void SetAppearance(Primitive.TextureEntry textureEntry, byte[] visualParams) - { - if (m_physicsActor != null) - { - if (!IsChildAgent) - { - // This may seem like it's redundant, remove the avatar from the physics scene - // just to add it back again, but it saves us from having to update - // 3 variables 10 times a second. - bool flyingTemp = m_physicsActor.Flying; - RemoveFromPhysicalScene(); - //m_scene.PhysicsScene.RemoveAvatar(m_physicsActor); - - //PhysicsActor = null; - - AddToPhysicalScene(flyingTemp); - } - } - - #region Bake Cache Check - - if (textureEntry != null) - { - for (int i = 0; i < BAKE_INDICES.Length; i++) - { - int j = BAKE_INDICES[i]; - Primitive.TextureEntryFace face = textureEntry.FaceTextures[j]; - - if (face != null && face.TextureID != AppearanceManager.DEFAULT_AVATAR_TEXTURE) - { - if (m_scene.AssetService.Get(face.TextureID.ToString()) == null) - { - m_log.Warn("[APPEARANCE]: Missing baked texture " + face.TextureID + " (" + j + ") for avatar " + this.Name); - this.ControllingClient.SendRebakeAvatarTextures(face.TextureID); - } - } - } - - } - - - #endregion Bake Cache Check - - m_appearance.SetAppearance(textureEntry, visualParams); - if (m_appearance.AvatarHeight > 0) - SetHeight(m_appearance.AvatarHeight); - - // This is not needed, because only the transient data changed - //AvatarData adata = new AvatarData(m_appearance); - //m_scene.AvatarService.SetAvatar(m_controllingClient.AgentId, adata); - - SendAppearanceToAllOtherAgents(); - if (!m_startAnimationSet) - { - Animator.UpdateMovementAnimations(); - m_startAnimationSet = true; - } - - Vector3 pos = m_pos; - pos.Z += m_appearance.HipOffset; - - m_controllingClient.SendAvatarDataImmediate(this); - } - - public void SetWearable(int wearableId, AvatarWearable wearable) - { - m_appearance.SetWearable(wearableId, wearable); - AvatarData adata = new AvatarData(m_appearance); - m_scene.AvatarService.SetAvatar(m_controllingClient.AgentId, adata); - m_controllingClient.SendWearables(m_appearance.Wearables, m_appearance.Serial++); - } - // Because appearance setting is in a module, we actually need // to give it access to our appearance directly, otherwise we // get a synchronization issue. @@ -2976,6 +2897,9 @@ namespace OpenSim.Region.Framework.Scenes public void CopyTo(AgentData cAgent) { +// DEBUG ON + m_log.ErrorFormat("[SCENEPRESENCE] CALLING COPYTO"); +// DEBUG OFF cAgent.AgentID = UUID; cAgent.RegionID = Scene.RegionInfo.RegionID; @@ -3015,6 +2939,9 @@ namespace OpenSim.Region.Framework.Scenes cAgent.AlwaysRun = m_setAlwaysRun; + cAgent.Appearance = new AvatarAppearance(m_appearance); + +/* try { // We might not pass the Wearables in all cases... @@ -3054,14 +2981,14 @@ namespace OpenSim.Region.Framework.Scenes { //m_log.DebugFormat("[SCENE PRESENCE]: attachments {0}", attPoints.Count); int i = 0; - AttachmentData[] attachs = new AttachmentData[attPoints.Count]; + AvatarAttachment[] attachs = new AvatarAttachment[attPoints.Count]; foreach (int point in attPoints) { - attachs[i++] = new AttachmentData(point, m_appearance.GetAttachedItem(point), m_appearance.GetAttachedAsset(point)); + attachs[i++] = new AvatarAttachment(point, m_appearance.GetAttachedItem(point), m_appearance.GetAttachedAsset(point)); } cAgent.Attachments = attachs; } - +*/ lock (scriptedcontrols) { ControllerData[] controls = new ControllerData[scriptedcontrols.Count]; @@ -3088,6 +3015,9 @@ namespace OpenSim.Region.Framework.Scenes public void CopyFrom(AgentData cAgent) { +// DEBUG ON + m_log.ErrorFormat("[SCENEPRESENCE] CALLING COPYFROM"); +// DEBUG OFF m_originRegionID = cAgent.RegionID; m_callbackURI = cAgent.CallbackURI; @@ -3113,6 +3043,9 @@ namespace OpenSim.Region.Framework.Scenes m_godLevel = cAgent.GodLevel; m_setAlwaysRun = cAgent.AlwaysRun; + m_appearance = new AvatarAppearance(cAgent.Appearance); + +/* uint i = 0; try { @@ -3125,15 +3058,17 @@ namespace OpenSim.Region.Framework.Scenes UUID assetId = cAgent.Wearables[n + 1]; wears[i++] = new AvatarWearable(itemId, assetId); } - m_appearance.Wearables = wears; - Primitive.TextureEntry te; + // m_appearance.Wearables = wears; + Primitive.TextureEntry textures = null; if (cAgent.AgentTextures != null && cAgent.AgentTextures.Length > 1) - te = new Primitive.TextureEntry(cAgent.AgentTextures, 0, cAgent.AgentTextures.Length); - else - te = AvatarAppearance.GetDefaultTexture(); - if ((cAgent.VisualParams == null) || (cAgent.VisualParams.Length < AvatarAppearance.VISUALPARAM_COUNT)) - cAgent.VisualParams = AvatarAppearance.GetDefaultVisualParams(); - m_appearance.SetAppearance(te, (byte[])cAgent.VisualParams.Clone()); + textures = new Primitive.TextureEntry(cAgent.AgentTextures, 0, cAgent.AgentTextures.Length); + + byte[] visuals = null; + + if ((cAgent.VisualParams != null) && (cAgent.VisualParams.Length < AvatarAppearance.VISUALPARAM_COUNT)) + visuals = (byte[])cAgent.VisualParams.Clone(); + + m_appearance = new AvatarAppearance(cAgent.AgentID,wears,textures,visuals); } catch (Exception e) { @@ -3146,14 +3081,14 @@ namespace OpenSim.Region.Framework.Scenes if (cAgent.Attachments != null) { m_appearance.ClearAttachments(); - foreach (AttachmentData att in cAgent.Attachments) + foreach (AvatarAttachment att in cAgent.Attachments) { m_appearance.SetAttachment(att.AttachPoint, att.ItemID, att.AssetID); } } } catch { } - +*/ try { lock (scriptedcontrols) diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs index 159af79ace..fc17192b50 100644 --- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs +++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs @@ -676,7 +676,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public event TeleportLandmarkRequest OnTeleportLandmarkRequest; public event DeRezObject OnDeRezObject; public event Action OnRegionHandShakeReply; - public event GenericCall2 OnRequestWearables; + public event GenericCall1 OnRequestWearables; public event GenericCall1 OnCompleteMovementToRegion; public event UpdateAgent OnPreAgentUpdate; public event UpdateAgent OnAgentUpdate; @@ -899,7 +899,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server Scene scene = (Scene)Scene; AvatarAppearance appearance; scene.GetAvatarAppearance(this, out appearance); - OnSetAppearance(appearance.Texture, (byte[])appearance.VisualParams.Clone()); + OnSetAppearance(this, appearance.Texture, (byte[])appearance.VisualParams.Clone()); } public void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args) diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs index fae12b6fc0..6928c4efbc 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs @@ -188,7 +188,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC public event DeRezObject OnDeRezObject; public event Action OnRegionHandShakeReply; - public event GenericCall2 OnRequestWearables; + public event GenericCall1 OnRequestWearables; public event GenericCall1 OnCompleteMovementToRegion; public event UpdateAgent OnPreAgentUpdate; public event UpdateAgent OnAgentUpdate; diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs index ab0be77715..c471636743 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs @@ -64,15 +64,13 @@ namespace OpenSim.Region.OptionalModules.World.NPC if (m_appearanceCache.ContainsKey(target)) return m_appearanceCache[target]; - AvatarData adata = scene.AvatarService.GetAvatar(target); - if (adata != null) + AvatarAppearance appearance = scene.AvatarService.GetAppearance(target); + if (appearance != null) { - AvatarAppearance x = adata.ToAvatarAppearance(target); - - m_appearanceCache.Add(target, x); - - return x; + m_appearanceCache.Add(target, appearance); + return appearance; } + return new AvatarAppearance(); } @@ -169,7 +167,9 @@ namespace OpenSim.Region.OptionalModules.World.NPC { AvatarAppearance x = GetAppearance(p_cloneAppearanceFrom, p_scene); - sp.SetAppearance(x.Texture, (byte[])x.VisualParams.Clone()); + sp.Appearance.SetTextureEntries(x.Texture); + sp.Appearance.SetVisualParams((byte[])x.VisualParams.Clone()); + sp.SendAppearanceToAllOtherAgents(); } m_avatars.Add(npcAvatar.AgentId, npcAvatar); diff --git a/OpenSim/Services/AvatarService/AvatarService.cs b/OpenSim/Services/AvatarService/AvatarService.cs index 19e662ca19..a8ad4130e5 100644 --- a/OpenSim/Services/AvatarService/AvatarService.cs +++ b/OpenSim/Services/AvatarService/AvatarService.cs @@ -51,6 +51,20 @@ namespace OpenSim.Services.AvatarService m_log.Debug("[AVATAR SERVICE]: Starting avatar service"); } + // Get|SetAppearance should preserve existing semantics + // until AvatarData can be removed completely + public AvatarAppearance GetAppearance(UUID principalID) + { + AvatarData avatar = GetAvatar(principalID); + return avatar.ToAvatarAppearance(principalID); + } + + public bool SetAppearance(UUID principalID, AvatarAppearance appearance) + { + AvatarData avatar = new AvatarData(appearance); + return SetAvatar(principalID,avatar); + } + public AvatarData GetAvatar(UUID principalID) { AvatarBaseData[] av = m_Database.Get("PrincipalID", principalID.ToString()); diff --git a/OpenSim/Services/Connectors/Avatar/AvatarServiceConnector.cs b/OpenSim/Services/Connectors/Avatar/AvatarServiceConnector.cs index 96c05a99f5..1cd6bf8e1a 100644 --- a/OpenSim/Services/Connectors/Avatar/AvatarServiceConnector.cs +++ b/OpenSim/Services/Connectors/Avatar/AvatarServiceConnector.cs @@ -87,6 +87,18 @@ namespace OpenSim.Services.Connectors #region IAvatarService + public AvatarAppearance GetAppearance(UUID userID) + { + AvatarData avatar = GetAvatar(userID); + return avatar.ToAvatarAppearance(userID); + } + + public bool SetAppearance(UUID userID, AvatarAppearance appearance) + { + AvatarData avatar = new AvatarData(appearance); + return SetAvatar(userID,avatar); + } + public AvatarData GetAvatar(UUID userID) { Dictionary sendData = new Dictionary(); diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs index 4d0d53ec0b..ea9b4b430d 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs @@ -28,6 +28,9 @@ using System; using System.Collections.Generic; using System.Collections.Specialized; +// DEBUG ON +using System.Diagnostics; +// DEBUG OFF using System.Reflection; using log4net; using Mono.Addins; @@ -106,6 +109,80 @@ namespace OpenSim.Services.Connectors.SimianGrid #region IAvatarService + // + // Retrieves the LLPackedAppearance field from user data and unpacks + // it into an AvatarAppearance structure + // + // + public AvatarAppearance GetAppearance(UUID userID) + { + NameValueCollection requestArgs = new NameValueCollection + { + { "RequestMethod", "GetUser" }, + { "UserID", userID.ToString() } + }; + + OSDMap response = WebUtil.PostToService(m_serverUrl, requestArgs); + if (response["Success"].AsBoolean()) + { + OSDMap map = null; + try { map = OSDParser.DeserializeJson(response["LLPackedAppearance"].AsString()) as OSDMap; } + catch { } + + if (map != null) + { + AvatarAppearance appearance = new AvatarAppearance(map); +// DEBUG ON + m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR] retrieved appearance for {0}:\n{1}",userID,appearance.ToString()); +// DEBUG OFF + return appearance; + } + + m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to decode appearance for {0}",userID); + return null; + } + + m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to get appearance for {0}: {1}", + userID,response["Message"].AsString()); + return null; + } + + // + // + // + public bool SetAppearance(UUID userID, AvatarAppearance appearance) + { + OSDMap map = appearance.Pack(); + if (map == null) + { + m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to encode appearance for {0}",userID); + return false; + } + +// DEBUG ON + m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR] save appearance for {0}",userID); +// DEBUG OFF + + NameValueCollection requestArgs = new NameValueCollection + { + { "RequestMethod", "AddUserData" }, + { "UserID", userID.ToString() }, + { "LLPackedAppearance", OSDParser.SerializeJsonString(map) } + }; + + OSDMap response = WebUtil.PostToService(m_serverUrl, requestArgs); + bool success = response["Success"].AsBoolean(); + + if (! success) + m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to save appearance for {0}: {1}", + userID,response["Message"].AsString()); + + return success; + } + + // + // + // public AvatarData GetAvatar(UUID userID) { NameValueCollection requestArgs = new NameValueCollection @@ -154,7 +231,7 @@ namespace OpenSim.Services.Connectors.SimianGrid foreach (KeyValuePair kvp in map) avatar.Data[kvp.Key] = kvp.Value.AsString(); } - + return avatar; } else @@ -173,6 +250,9 @@ namespace OpenSim.Services.Connectors.SimianGrid return null; } + // + // + // public bool SetAvatar(UUID userID, AvatarData avatar) { m_log.Debug("[SIMIAN AVATAR CONNECTOR]: SetAvatar called for " + userID); diff --git a/OpenSim/Services/Interfaces/IAvatarService.cs b/OpenSim/Services/Interfaces/IAvatarService.cs index de3bcf9679..93b977b534 100644 --- a/OpenSim/Services/Interfaces/IAvatarService.cs +++ b/OpenSim/Services/Interfaces/IAvatarService.cs @@ -37,6 +37,21 @@ namespace OpenSim.Services.Interfaces { public interface IAvatarService { + /// + /// Called by the login service + /// + /// + /// + AvatarAppearance GetAppearance(UUID userID); + + /// + /// Called by everyone who can change the avatar data (so, regions) + /// + /// + /// + /// + bool SetAppearance(UUID userID, AvatarAppearance appearance); + /// /// Called by the login service /// @@ -217,23 +232,26 @@ namespace OpenSim.Services.Interfaces foreach (KeyValuePair _kvp in Data) if (_kvp.Key.StartsWith("_ap_")) attchs[_kvp.Key] = _kvp.Value; - Hashtable aaAttachs = new Hashtable(); + foreach (KeyValuePair _kvp in attchs) { string pointStr = _kvp.Key.Substring(4); int point = 0; if (!Int32.TryParse(pointStr, out point)) continue; - Hashtable tmp = new Hashtable(); + UUID uuid = UUID.Zero; UUID.TryParse(_kvp.Value, out uuid); - tmp["item"] = uuid; - tmp["asset"] = UUID.Zero.ToString(); - aaAttachs[point] = tmp; + + appearance.SetAttachment(point,uuid,UUID.Zero); } - appearance.SetAttachments(aaAttachs); } - catch { } + catch + { + // We really should report something here, returning null + // will at least break the wrapper + return null; + } return appearance; } diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs index 127c4b2c5c..a06476e9cb 100644 --- a/OpenSim/Services/LLLoginService/LLLoginService.cs +++ b/OpenSim/Services/LLLoginService/LLLoginService.cs @@ -330,10 +330,10 @@ namespace OpenSim.Services.LLLoginService // // Get the avatar // - AvatarData avatar = null; + AvatarAppearance avatar = null; if (m_AvatarService != null) { - avatar = m_AvatarService.GetAvatar(account.PrincipalID); + avatar = m_AvatarService.GetAppearance(account.PrincipalID); } // @@ -601,7 +601,7 @@ namespace OpenSim.Services.LLLoginService } } - protected AgentCircuitData LaunchAgentAtGrid(GridRegion gatekeeper, GridRegion destination, UserAccount account, AvatarData avatar, + protected AgentCircuitData LaunchAgentAtGrid(GridRegion gatekeeper, GridRegion destination, UserAccount account, AvatarAppearance avatar, UUID session, UUID secureSession, Vector3 position, string currentWhere, string viewer, string channel, string mac, string id0, IPEndPoint clientIP, out string where, out string reason, out GridRegion dest) { @@ -697,14 +697,14 @@ namespace OpenSim.Services.LLLoginService } private AgentCircuitData MakeAgent(GridRegion region, UserAccount account, - AvatarData avatar, UUID session, UUID secureSession, uint circuit, Vector3 position, + AvatarAppearance avatar, UUID session, UUID secureSession, uint circuit, Vector3 position, string ipaddress, string viewer, string channel, string mac, string id0) { AgentCircuitData aCircuit = new AgentCircuitData(); aCircuit.AgentID = account.PrincipalID; if (avatar != null) - aCircuit.Appearance = avatar.ToAvatarAppearance(account.PrincipalID); + aCircuit.Appearance = new AvatarAppearance(avatar); else aCircuit.Appearance = new AvatarAppearance(account.PrincipalID); diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs index e46f9b75ad..b2c8b35ec7 100644 --- a/OpenSim/Tests/Common/Mock/TestClient.cs +++ b/OpenSim/Tests/Common/Mock/TestClient.cs @@ -94,7 +94,7 @@ namespace OpenSim.Tests.Common.Mock public event DeRezObject OnDeRezObject; public event Action OnRegionHandShakeReply; - public event GenericCall2 OnRequestWearables; + public event GenericCall1 OnRequestWearables; public event GenericCall1 OnCompleteMovementToRegion; public event UpdateAgent OnPreAgentUpdate; public event UpdateAgent OnAgentUpdate;

?yOBK=gtAc+&N&FyMroo zSL_z*QlzPqNt1yqES?W)-S7SBVr4s-K53`0*iP%doi1m#lZlje3XAQu?%U~tXFHiv zX{WH*PV2s%szho(RG-8h(X1;IE!}{B;OTjb$qTQNm-3xX8mvzYyl*zr- zLON9#sS$QxHBg`$_O(t%KZ$Q{yl!}1d0kppPQ$F^9|7I0b0&))MN#578#^6`Cr)op z0-&Nd#Bq9avf@Hs+F0iRr=W)>-J=A2{>R^y{}?z4F&fKd zEHz#JuDl5v%7}re;x<_D5kv3e`piXMrjPtuJg;k+&y9|R9`G;fS^Qo3Xd{$;O{!<5^pgh4av@Rv z-tx4ZcQ)ONViz(17Mx6t^vW4v*MiN0!?t0WX&LNkbISdH=xOA}pQ<#@KMg=?nq3b3 zd&rZ2ah|7JR~It2Q={T#EF{7y#boDMaeTz06To&Nrcz+Go#NnUin|m5P+Z!~ae0{K zi-Y8cmHT{G;Pu1X?$@VncNdzQe+HDY&Qn?ZEQ&(Y+U^dXINSY1)%Plnv)xZpoT}|6 zt#*!QV!KJM{WPsj&~}pu%=MGean>abR4ybx(RLFB<~pLFA}9&l-N>`GsFSeWBt&cd zl#+4QE@Evg+kGB-XtLdu0QOF+zisn5ky<6k{d^r*S3{eN?GAn8U(~^+tvjI3|FT}7 zVQgmB3p5NcX*XrE-2Isqu$x~3hrw>LT>6})t$%{%SbL6NKz}3KurG?}>YIFIQcMR6 zld-j5Mo;x=aklZdkOlwjygUJQ$&tGpDD9H{z_#*lVb)fusA&sj80CPhEmR!ZLNe&> zp6Y(%`_^w5-p;)tZRak=D$lER}9~qSR0%7OR9Tto zybygPk5u_sj#OU^411)SeBYWJ!Mc(oe}u|z97p95>WCbHN|htdbM<{|Ge7>+REFI= zN7e{0*xV=X%90PBlWw3Ci*r)4;Lk}3Db7h>0>pSus;Fa}liuR*TSvh+pNtYmjzUE$ z>7!6HPZK!`EhM=yjzX1HISS?MjeZnb@aT?0Q~3nd4E|j2{)G3$M&8Q!8fIhU#@CJ0 z`0Hq#@M1ofy9Pdsf6^pr64|U%O6Ij5$oq&BO0sC$V6CYAJ zncyJNrHnedX|_Eei{5OCd>H z7F^r<IrWJ>;m-4qgD{koRxX76an{>`h;&2P^0UcRDWzI}uMTV+$%bfWr=FEhZIWsF$o%f-S zWX{aTk~4o07z1-=as)3#j(pC{ZX8Et&O9PVpi<>1l{1_9@j0^$yLpbRvzkQCOg@-1 zzn4-ha%QsNb7n${ocTjQj5)KS-kNgeDEQ`_nK+U&i&WA%vze!f#VxOMjXIcC`iZ%cCVLWmE?PHX;_iw~;{_W$6Q_XcqtNkfFlU#@7+Mn0j z1aln{fgk%cI?lSJfyx)iPt0|Q0+Sz6P!W_wuG7f#SVldO>yQw$o6nStv-U;S#>#cB zMGsB64keJ#`9Fx%DmwqiID)G3p5Ncsq->f%#Zde^nJ(Ypnw#qwI-%W zENj}ciGi}LY0tKMtZtpKX}HgNLw$Hz?@uYT(poFJ~@O>S&1SJvoH1cetkp(BSiMWS^80mbsWSq4hvNl%S^L6yl6!%a9iMVHpNUak0 zOx1yP<7W5%`o}$ihEe#e7ibt@GVYPda`zT$TVDUv^5qoE#b{n?L;D_Y-~Hl!R{(;@(~zwVsG_7H*eC)Z`u^IwngivE!&&4vL*R{Srx5a zoqwF?X;R+tKR2h|FIkmujzLx5E%^~t)7jmhQCGd)C62SZKUbW^t=+&Y*EQ}B$L~6j z40cd|1Elpc#SSWAnbr;9BmADj z8oPrnqidGGHS-I0D770!VLy~a{eCDR#eV4TAjh~Ls;Fb^ht9Pwhn@H{)=uXhc;y63 zZ+>R^suinO77Eb47P_#{fsl_GD_;ra6$%Bd$v;x+i=ba}+BQe6S%2~7ut6&nWqON6 z>-L<+0ubQJ#R}z?=epeqPH%Y{;ZJ1Cvk=zC*z#0XWy_NjH2Rij!K2yoOx$DPDxTc8 z1?I505)Q@21^2;Z^Dp=ld|QC6yc3Z)wDH~V{|;|+|C_YAoxfq!`4%8swY$H^17~;t zMEQ8TOB`o+|ExIGcly|W`yY6Qc$ajhT8CiV{7={H2(~rrvQvb#|0GHCP9MRrNeUJ_ zbS3EAQ2q{<;YEq7GA`KABqCRK%~0`rh9T$D5w;@x)blK42Xm4<7gz z*73?cmdO0-9yba2B^?Q5U3MQ2c&kssp|I|IKNK`f+!1~s`+vjh!2eP@P+8Oeg6Q44 z{~s5aU-!gu>;5Li*`&3&n2-4xuJl&xw<9m`U0XY4>cH6#WqJ|*E!MGJT@zTjW93yh zW9+h485^Dn9usqfV6abYxW>eWYwGVE3wPl@*7RD~t1Y=`JF_gVMp0~}&DA%-6E}y8 z0jSI&aoij(QJksPju->i?hZ3ZoJp#^438vLC$;wGT0?&m$^F8cF3;Uy!2p|M+0^3B>7tSx*wwT$hXLKjW8j}kzhz6ZYH zH`96;#?Ak--WriwCGFfQ1>Cw0OjtLc_c2c6U$k#CtpiZ!f04Gy+_GMv?SO%{0q&ZJ zLu6uS=a0o0H*amo>h?X~27|CRJKwefh<0>{x4O5hG|soL0(PhXeD`0==LbCBvGP1$ zTLtV?1>B|zxNQY+N`AW>_BF`58f2FWB;U0HI3>SB1yU8j9S1zW(}3r@Ri5X& z6VTfO|EKHRulTOUa^COSGX=bJ0kr!rhROUc(%)XGrgv4~nsxgdDz@$2fG|);F2XwH zU(}J!Tkj~=ZtN`Ua_PEH^>XQA>w$}~IZEJ)bgj4|9e_(PL<^Q4;pzB-i!#-M@N^5V zT1S+t)&aO`9e}IW0k~-Wwhb4phj7t)2p6q~aM5}QSFIz(Me9+xOjAQ9JUwJC+*Av~ z(=E7^Q!NNjx8PdG!ADr^2bg78E_MeDi{02!JLO#K=r1gG*R)vd>+T(i*rr_SSHQ0? zYMl<-ZsM45e=r+5j@fEJ9J4JvS$=oW!#%>i@lP#=SqTIe!>pn2^KmF~Tnw|7;+T7c z(+pxrr@cL%*uYgnd%(<>uIk9Dz!eBgXQxtr_eO zac@jwHZwi`8ljB3d5UbHwcsqEwo#_bgx3h?Da7I$AzAR-W`q>mX14`m+%{9xk+;nt zmn~cGsqCBWuo1V-tX?!FsT}(z{0;SPwhw{#pNXwLrsoiL9hyfXQ<;DlKg7rt-c9b3y(L#l65_ zI96jh9H8-g;+Mc*jCFo?PjqOHyYhWS9QD&KQikl5odum=T>u{W7h|-k)?-lDeHt>* z9D$J=7hR|TcxuFwzUQT|c;>J5@=kt(Pu+BApStw`pL!?ETD~9Hflu8Z|I~cy?SSBX z>MlCZcJF{V&Zq9GI8~oYI_=%@%=%PPg-_i}z=cmGY|=iJ#Nku-03GjBNv!Z-O1Jc> zXVRwgFk$v`-};^r?GNh=orj3*M&^Qux%n0WtbiMZGoo)F}97pGq9@sUnrMPc`#25uaK} za%1>ZWmSACXK!?$TJYH4r&7fdKJ@^|wB}RqT?dZiQv(g-KC@n+VSq`WN~JCD}$@{(g)qmhfW-L#8!9 zc1RuA-`4lf4Fe71va(*FVSq_LMx_Pc{2stm>%@c~i@s!t)0g{UWLfY2#rVulfB*6E z4j%u4FS|PHvM2AaV!vh+RL{~I&S_y=hdig-F`4emh~R8(D5a7n>|%^JM`6c+7fXiL z?d|Hiy()hw2h%wf6PrJb#Z~#k@efoQYuoOhJPH_2r;p)UsN*=DK2~w2h4;7UT`k0S ztI#`?jieEco&==wzAj-Q8qK=osC~LTU%fmuBY#U@)@}<}0>7+FSZJoaFK^u$d(M9c zP1T1H?xKmoU%7bA`orcHZ@@+&c`HIiWwQ)k&t>pRSQ)&sGSxW&JSKxzK9=D1WMG)! zRfh}<^jN^F^f}0azK*w~|0L2UZ1sx0=OA1a$aLp%q(8l8{fg-&`~Ujpn{UQV)xB4j z&k@mq(pkU>0o{`Qe+n$I=hLlLke|74+)o;1;5?!A6L>TeBV)m1Pxc zbiWvT{ah<#dv5W|fZ9HVivcTs<>I-;0ac@W(M6)10hHLAF2w7uSiN#d(HkLiOQg56 z*&9T(68|rC^m?o?JGiyvA-XL83p(L0^fcC_xl42$I&Sh&TtmCgY|VR=OIin^bJ+(s z!CU?aaA@}<^24ftM*>iHR_M!~Q|yg8|3a+BJNkPS^dh;eOLA_Ho#Y&Va(&yI_}hjNVcvMy<*t^^RCz7jy{sTPFC z7PQ}q`%~1+B0gWzqDJt)thXL*D|tm?fOdR|?{$SvYCiXIpkaJ&xSKjPw9nnX?sGfm zVJ;5+L)g~g+!coB<_LQ(yf^}UbBBj{n(QA%m59+FEyAwE=ttLqb>*?T(?3QJG>jT$y+FeNlQBAH6>ECa*0z{O zuGjg^5px{}4#VLr%f;a=bM!mHCy#YD`xx}6#!^4EP~4H%3hu}sQ+ckx1+9VyXD`jbeZ7+g6_`x0ZZEabO; z5`IGr#O(Z5$o-bK_Qm-4U)DRm7@ygi$$BT$f#c{ypkcOYA`Ju7y&L9-3172xXkW8K z!q;qoR^=yRSfpWn%Cqsn`IL)Q|Ef67r(B{qi(6ZO*V3o3`}U=HB(DL1&P3h=Vz2NH zFCt0v9uUDW`w9lFnbxboOKJBFFV@B`ID$^>xUg&5?-zq3+xH0e`}ydi$$rbo>c3HO zl8B>XzfZ0M$62p|hB4JyFVHYRU9ZRb^&0L{P7l3a=cnrnR{Ub|Qpl?O6pXJD=ez`> zbL;kHTp)gJ6UVLFmn)8WZ+P0gH%uznhqw|*U~-2~3lfcJ*k)NxT}(IavJ-K=rJy`-7eAF*DFyOHj- zVHsSr_^qlfSdDA9A;TFLiTX1xLW(o4*FcP6OC;+m>NsaybFItZXYG5#8}t6-f?gXo z!k@@7Rw1m7ag3#`$}tuvX!K*Of=6?VmC84{iX|RB7weY3ZpU|{fROabRGDQcBcEYe zKg01917%sEPc=}M6?%bzvaHaj87RwyGBMhAk8N6yTNJ)ub}F7!^4+X=S_*i23i#Lr zPy(+a?zH7_IU|Im{-?>$X;=iC1&3V^9AV;YzIZHb z5dUJnc$?Pm!h4LpV3$mo810e+2D{{d!7f=~m&O6it~*#?>)C;y8Kce<7Qd~Ub*ai# z7&WvCqvBOz)Tb(pYC_n3lrDZ(RwlLhyc=}}_sF>Vn~|srZjYC$-~dzwbi+mM>04S{ z(y9EIaFZREi{6T_7Z$w(hDGmyVbL3)RoD}EQe4JvEF8_8(~w&+Sj}YJ!ZY9VSk~o2C#xnFD3`r)WmzvQdj|~5-U7Q^ zzm+b#T$WWBS6davMO1}xZB${La>CN#1?L~0h%@PtvMwj6(pfoOW)w03MX;hahptWL z39YqcH_#QwyF|50Y$r1&?GzSWqSnjzz}jh_xNLZzxNLw=`~b{v{vrq=>wJX87o%9+ z*M0{cIRE$_04hF|IL<%5S8=9VJ7NswzBVbfKZHkeR!U;+k7*74P2}z&DZp2L7`+d&e0Z7hG|i7Jw7+QSRJ2) zHDTAZA72JXw(k+*^UtD-Ci@{Ho1MQa^l(Kh?CEB`SBW?(_T$PF@YM+*SK~RGv}W?x z;9;qWr8ecS1-Pz3eqZG@tWW+$9a=8;WyMaE{24Qo^#Xqm82GcmF8OL!8M238pW*q; zqE>^R%nq+7vk5)}qzeYE!uhCWc8$qtJ z_P!4hx%K&DE(CAKiR0GiPZX!&oS9T`&iqRtmFLWaZQOHaQYcP%l~{Ss{9K+h6IPxx zvoh8BIT%cyGxM>WGye)03p;0KQ^!Sl&O9O)(7_rP{m+?YaLwYkDz#vBZ9HctQGd=% zNO8{mYltzPGb`%N8vUHP;Bmk?GgmS4n(DVN--KmC z3+TS3b5#m>bsdhhMlm|u(LAN`3L$) z8g@Pw!~QQ|Si_$D&Kfy_`6WmGU3zxoI4X_&h#Y}Rl_T2t%6Hbx^!WF2WYo=5G+B$E zb;$?crT;sHSiDP57QFo@q_F@024b}TiaL({zooyk76sq@Ep!4dtPsaOl!X3ZFOMX4cJ(`|DIQ%VJv&r3p5Nc zx#vZtg{?Jr`FF)x*n7ZXI16LBIQ7~VznT6{_zOAn>b<=_jI8&L1W=5jUQNp1iRW=w z>|Ll8x%f7687_afw$HjOtllPUVTXf#?WH{0Aa4+_GCbh00(@JUz7BQ%MZdbd^-9z= zmk(nz;)`Q5K)b8Op1rm!FYeS&%5<$3z;hCAq+ zv^MSY{eZ3df9Jik=}vIf?*$80AN?OJ6X&CE)^%ggvWeq-bPK&zngP~O`ss<pAhg-_GWcT>b%&tgh#!c;MFaasVnZCvn_*UZFUZ^~~CD~Bb!;H?*!i_wVpo+M(Rt_*>=7- z&%bEf2o$SpaZ5aKYjJA;Dr=EA zZY^%3IB{HJ&)9u?9*-uv7TGJ-;*KO~)*``Jiwdr4!Le~3u(W86q z?b;OZ6Di;)6F?eXIRp7WJglFA7#;?DhEJgj>sInl128}@cY+N07xi*Y>#sq_dqJ)y zyvlk(t`1np)qX@i3u3jvIH0Ucq2iVQG24j80rfn7?o8u3v)-p^TP zC@UBq+8w^HZ|qLkCtp0Y-AQ~0s zwO~(J|5l979>4Xn8>TOQ>xC@)FUJs4d^zSWTpHz7xpei)>D4P|=9Vnmdp}sDtZP=s%4JLEmad;$wtjBW`W@e~sMWd`U%sAO3dqW( zb5Pio(@1;pDH_JLw1t9R;O;w1p!Nrw#~rb`sX&B6h83l8T)A9YEw2$-P9jL%R?ZA2 zQcRj|yMg6J`m?4hSIjNGJ9TZ9CO_j zb1UX%`JtlOxoK1&k1c@^(nPF-&c%!<4pM zWZHIWZl-9<(#om1MXUG2Z?Lwe!OGn1+#+ETpUXn0?R~*1KVVcW>IdCKA(nn*KU9~r z?*$w7CiwcQ&M%)bJDvd+OQeicQ@Z*9!C z51zP~?_MhRDh@;)-%Hs~apJvO@tGvmzAqjj-^{wC*1n(CFpm?tcS{P0)ec0jN&uDn zlb3k!mMHM?5d{@Nfz0E*+y4BH<(Ct?CFF@2>Om#ntR2eQc=vAiM;A@`DkYGxUtbdu zR_xbxbzpz}?{B{X4Ws{AFVHZ+r2Ue~nw{TH>{tBm%h&5HX1#9|K$8`Z!*`%zSd27G zlBc;^!=C%p(E6MD#@Hh;Yxy@Ztm?kd1MtA<=|ecb{#=|mPEQ}IIF)@NcHe#^9!+## zh`mA`4<|{pFGMg@P{Gi__}v%LLBosHg#|~$39Vz-)UzYNk?nhgeW8b;izYpjk=4KZ z@+}cZMbExn2adB|0}Z!c0}TVz^~&ECGX5s)Ei4^+y{5iXbSxy3e+R?D-okhBPtCuq z2ZCF-j|QN!Zi(a8?a_)e)#5!y`gHj=9Lcng$0NI?K%xkSPZ4mjr9fERDVWfG4pPVZ zJ^_Tp^OyHINUcaxm2jD|U&)l6uyU7xm8s52=p(sHz{j#na4Im&E&=2<)p`bG@h8Zl z{Kg(Rf@+Z?f1iWhIF8D+c|?vtrOJ`N&mp>O=EvvEGV10zvdXz&#joAq%ev%)_c>0a z5R3a9WWnF(Af&j@aT*ZA_DI%M)P?1+ASa*uTPo|nexGCG=CD!l%{eS_B!?BLr0;W> zd78+5jzW?f<35M7D)%`!dm*u0S|*lDnOMf;aAt0qO%7+uf5smYQk39QH$V!SB~uw7K9Z`44~qNO3;!L)6AR zANY}W7+e#fcO`IkP51xh z&A!}8-hGpq$@-olF@lJtngkL1zEmwiEF}%G#RC+F#PWRk?$TMy;j1gV?PkCOQ_#PAGucFkj-Pueb~N!YG4R2s*2k*RbJqNMF2S?NOMTT`}+3@}&c0yW!30(cfs zm)LeO3CvZT1Rj~hw_RoRwJpkk7r806i$t_m=NY}}yNJHkvt9E6QOp6dA*lBZZ3d*5|3u=y8{o0`nd9$y(-L;SR%#PE0^rR_P(Ms;n- zo5&W~5V}{*hA^ibv~>JOY>3h=t>7vqE_$|0Dq+;IZHP)6y)UVZ4Qc4V4M}-7MCTRg zMm=w#9sK$t_@j;h=dKflzlI0LzpIELoQQk92-KW(v^skHiTrQ?<(J#vLR%E z*|-X**)9^mvzWTXHiSuFHsU1k$RxfEDXXtNve$$SArY;{BBM8b-=lB!Y{=z+C}%@h z1LIbDrtjZSs}K9o-!pxL;$lAK{*tVGcdWmS^wC(Sd)3A|bIQR*$A4t3E8Wt@x{9&K zx>UlbV~=%}HX7??p8aa<|5$JASyJk_%T@qNs<*P|T#i`V1T z8MFTHA^|2C>wT|rakE{7Pn)S29?w&$`TdACv-g)uYv>D^`9eeG*8pbc{ab46-u`XZL>n@R-wbJP`XvdE#IU*W{}RJs9GZa}pgP~!v~)l=(*)OjKGUPyx%(&&Wr1Wv$F zJxxxCTLFXnh#%5Nd=BvzrsYKQnU2F@E;|k#iH>7sFsV8GWokOgrM5EKOf(WQFC7ES zOH(5A(ort2(UK-crlup2I;)?HZH-dU(dToqG)@wajs%`nRKrfAB~#PUXKETVnVOD7 z>TLH26_+qT-6K;10id2l8HGsuPLnc7J);qf!KV`y(i0V#sCz9)rnKx$w!7UA>|?$Y zu*v+3=euI&X87e^cNYyVNz!j1(fZ=qlF0m8n^f5@+R^ekX;c&M8mCcB1kk7gJF==% z)g7!tWAY`SYDVPkFKJFes9g57pGw0wv(r!}b;@?p{w2d?SCOlVY!{7TLMc z8q5SR?PW3vEo54e8J=Eb+RU^Z3{THNE1H&r;psWl!YM6}iivZn1(!PPs^a3quF9Y6 zmTK|EZYj;L?3OAl&Zqpzd}?`?rjd%VHIl|zBCEIoT7Ti}NWzv^RF%wsgkM+ksuQ?*Oyz#@i-zx}U{pxu3NRDf-;cqDI(hqDIO6EW#u-GW%Jp zs1aCPjZ*frtoBLnXUS5RZ=*H6pG7^mpLIVgQSWC_h2(w~L-c;uLr56!XQ`zBm-e&b ziZ8#P#WZq1OV&#IewNivYh*u5*W`ad`kALxXQcb3$ z%a-j@H^A4jwGtcR+>JU8fTs-OX&$j+4DR(G0*>A2J3mAVQYMzCp+f(-+@T> z6f@70P0y-|*v#{{ah_+Gndj-L>3j+psq;LecM&bNmins=cz(+o@a=j=l_6&@jS1R{$HBs!{Md7iDe>hrwTapm(ohuHtFd47E~=gQ{!4G`bQ z{Iv3Uo&@FRdBUg7P7IIdrqp?!h6HulDDMIOI+_pTMa00q9kL+^%h!X2YHkjxb&?cJ$RE7=k$&7+GpHgqbNbIXr!&mV>Gafe{tXzZb2_8tochf*0rss6(!8!dER-&HMsX}s2XNaED z|AB<@oUW4oUz*e7iZ4H>GmV_nWv!&o=~g?fkvU!0e8~!>TV2ufJWx0C@_JrcVs%MwZoD!-G*_UBi*PHo<+Ly0$s+U8k;v;; zrd^l3R_C8RcVDKqN?iGqHxg9o(`sDB#C4wSlB%0R*!L<` z+UOd8U+9;zmp`Qc>wzKuIo0N#%~3FCet#WJo>&9CsrrC@UC%UV;CTQ3EtRG!vmx|k zTaT{CG};Ug&W4i&v;MnCV?HIruz1$z{8XFyF_Oz?z2!OVipr`EJS-NS%D%TAoo)nD zG*wO_ZdFCquC3FWDm%tjWvW{b+_$N6$ROEx=JK5sdSX>-bbeHFF9^zLcF`m4_@haSsO_joS7 z)n0YU!j-T8H9Mn6b2v$pb2vlv9KHh87|-D<>FUhkxy-i*Wis!e?Ej7Tr^(l}=c`n` zahmSf2>q1Z!n`6aemR;|`Drb+o4Gv}Y06i^tUu=X;K8 zGJB!#a(*d4O~#h_lC(>{FQa$)W zx4wD7XPbw^4srg=c27bCyVjaGi8>irYGkC{(Xf_BW@M;zax-L$)ycf2ECpU+kVb4) zajXQnh@qp8l~{5gB|v@gFB+5i2@RQ>bX~`Fm^e?t%3#IXA8KV8-7uxPoh~*Zstp&; zN?W9<7PS{?vQ(yg_99KC#UgDb?@tf=Z!|V48&es8MO0=LX4CYDAQLZjfZ9obmy0jl4I346r2uP_tbmfG4Cb@pFSr0=p6? zfk!5Rjd9**S5{x!Dh&9cnG}mdB3hg#qc?qd`d06`!CF9+vp=i>v#0uGG%n(Pe93?P zxr(W%hE<-Vw?SrqlD4nS9zq%U7u$pC%zE(iU$%?n9Om&o>TDM=8J3vB)7BfZ1G&#W zZj0QJDW^NW4_%$<|GN^HQ`!eQ24w%XLAm&6mpAQQ2}-v#bERTzb0w89>e%K=rH!sB z%dBzo{kK>76nixiUAAXC)PrMxnh~C`QElwo$u$nsBy7|$mBv})5WO@SQEPOKLsXce z0x7LE4ufHSRItCsv2?NRz?!f)grX^fbl>KGg^k%B z1z%+wvjZ}(j*TI?Yh#G%+ZfLId>2g0zD#rf$53<17+Md_)w3gOp}A)#^|Q13*#$r9 z9+ABtvlh}P#?}}FIAe=x5@TzuO4A_UH^qIILOow$OWM-D~i%6BmY!N-kEh2`QEh2hqI>!Sgb&H76a*JqV zq_DP#TuN4krd0J}D3_6vVdh&0^wf23O3Ku49WWj{Dk$9MNE2i>a;!Q_7Z*n`A3%3A0VMiY);irzKoU)?T6|4CN}f1W5gsaCyC! zs9rNI0rIq#;NDRWFi>H?jJ1ly>Vs@wNT9 zA*T^oaD`B#5#&IuQ3ziq0!$2E(_dq3pM#)A;L}&*V+tC9A-P(Guq6>-LhvzzT4NN6 zVAoPRRZlJg2Ad#R4I5)qGRMgxKVej+Sdq!BK>PnU_DAhGr2IWjc0zfNlkHPG%-TFv z-T*pa!FEW#0hb(!Pg(dRs;elH+UQdjY-^Bk>dOz7B!fMY!6az}Nn_t6 zsy9gzi57jzVu<{dMUJ1c7}Ao<$(vS*Pgx*zNc1U-A-Np8cP_`zQJ7Czs7lWb33DZm zjA%HQ?^I=jt;Ux;+-r8;`9E;niQoNO@-trz>2855c*n z>I{t&|7E*(MJsYmXzlO$%g)69GtWQsFS^z{C&Gk_uY%DZ>- zby($f^X|a%3t(TH^WE?Ki}b%SYZS2b&vp@sH4|^prIv{^WlFv7;g`u*tFL;EKrFpd zb>M`Fb#n518+$^7XitD{drx30%3tnYHq)Zq*)BTz*afibwZGrnP`dDbv?MT8_7%QL z!z+B+{YrVC+qyo9zPB;7|JNr&{p%As?X>prmTb0j2UKCtUMO+4b5}a|hSS}j+zJti z>yvF%z1!C?OoOV9?>nb7z0DtiIOdJ@6$@%KjvYxLdG`(VM5G>MlU8BxU^_sR+dE(l zq>SOO$XZ)X+ZciLHHKxyHx)L4Z5*8WKKi|TAJP8oPR~A2E!+K7tzhDb`F&NO^R3GL z(vt3<5@_wpCKwMu+7t_xybp3Y^yXh=TiK5;(PfE&vt3l*Mu#;pg|VIh&35a;*x!Q8 zc1LANq>Rd91=@^MKgk%`7S2N{wxy;2wxy*H+j0Q9SI;yk;Ou4Wh46$u`6~Niaxal- z682!$UO(45ZTUIbRG<+JI75&M50d~jsT}mGEJgSeoduu<~TByW+FohBrZWY>Ph0?7;yRA^VRcMbDN;gB* zd$ZQbOsm!B3#5royD4u)q@4zs4!~7DN^ppi*`61A4s{|eMR01<@};SD*y?0He04H^ zZFMpq!OY!9LOPd%b`>XTX~yc%eSLK@&s?3%N3BlgqnWvT79?vavF19)543uU<+Km} zaDqC-VublUb}z=FZj0 zeB$b4K1pTPuh}{oKL1@@18Vzktd2IPtWM@rk=at!oX+AbB!>$fiQ$r#nzNHkO-G-p zIcv$(bo7~;vzbgyMMJgq1rtCD2l}=RCyQg-y&D=dUdCf|W&HxU$Fvi1ZiX_8NRQtTp%- zUz1MGyozr+%j@edE+kla@h)Gsi|d1Am@K7!o`MSmyJXzS;=G^Ck?rDi?uK!ecEdRN zI$>riwl)oH6*&94DsWOIOniVS+r_!kf$riI=!S7-bHdC#XI)QcyQ6u|3bgf7%g40i zJu1dN-XkYHkg5f!z4@oo^4(gT&XRiBY@FLr_nf7YiLzaseB3b3DQ+023O9^1fEz}` z?uOA`yJ0lLZWxU*!|cyk(Ym_nXfzpSH=weGcJH(+K&{K!|D;JoX63RgQ>95h*`rqO z%qNYb%%{TQCxVnenUBVicMP*#(oD*HDlE>Y{K8m~tKY6d+C`v6hS5edhA|Ns8AfXaWV<87Xa(9Nw2O)N z3DOoO$FH57#;|hAA27sA?R@y>6_~3V)b*0 z`ngp7T&8|5S3lpvkAF^SHn0+VBtl(V+xG#O2Aw{>574R7$42zB*nZpY#0uC?CmkISbC5A-_&A|m066ci8l?nAZC5A-_ z^OX}@(FRb6^?=hjr3Er+bQ(v6BlYw0^h{Nhn$?x7T2#73rLMxg*Qy+jCotTku8vZ( zR&hk3bcIT-58GtB7;aM6M5$T%IaI@URBF_NI*h<@otpazJQs2;&INqDdgrUy5ZFFC z6=br<<_Gh9)nJ~lV%6&-HmViOVW%f}=!jwFd=))4on1glJzvFWdA@2cQh4X9VoElm zrc~`|D1S#vhMDtK^wf3EBW3FOD#okxRc9hi)S~wJs+gC3Li4KbVa``QNnVD<=d0+$ z`Kq(YT<(08Oe4=%okw!rdYYWhg|iI#QzU0tOTI=Q?vnkqrt<Es+wnp_PnL;eiO8P<|lmL%InUoPmpN|NL8(0q^!BJw6pF4HuT{A!XnAyreZNs-gu z=QAfn<25={$I*wKS&lw+&@Aqf95PxxIv36|2i#V1^nu42eJ&+OjHaa1qFm+C2U36Z zxx5@KnwL)U>eG#@H~K*Ck3N^2gGH0mX_2qq=mWVw`do4j7EMm4MZS8Y59I#nbICba zG&!9X`Ra{6ko%+0CFfw#Uo;Lb8UyjWz!}$9oI!9?OLF8#i^TfNH%gQf9 zWa9oVMP%asE=OeI0WC>Xj)5#oRE~ixO;nD7EKls)IRn0Nl&{5nqY!enVVyn?%EqF% zbQ(=74$ASkTV1p~h+WEQCof-(U_7_1TGWI9+OTuB5>PWi#P!Div=AgFOngdrM1 z&WJ-4!gq-<1PDWNL)3hV#q7Y&#j-odbFu21^&4hB!V%6-|7+)BV}nutT&(P;c&UKw zr?sQXoQp*}qoGjKsH&EHt|cF~pD4QoZx7?E&Xf`nI?`4N(2 zghw)hB+Vdc?wdr7d`TkFqBG1R;93ul;3-W>9xH>&f`syE8KwB0IiT`s5d(uFH0lQ%?ObTXA!buyWkR$Jw* z&xJZKUAUeydGpANzN7N0z9aL}UaPzfxxCIxSH2<6+l;*E5-P9i5;89>waVL=Yu0(` z!g>Dq%r-Qz&uou0XSTJa8TP3BWwN9uY6n+hC@d zC+KZ7bH)SkmOt;!ODTEYV>7)ESNuI3z`hQBK05C~w>qtHvlU9WI;}Bc!kElqSS!kR zLC9?pbyhEzO`iOlB9Ro z<*OsU&CK0bLUJS6I_aM6zA7znkq%7U{Q6E>;MHk?-%Sf#oEG@Kw7?}PfmU(t?bDv` zBW--|?;7~by+3_F@LCgQVVHZWY=5~OPe<}jrj^`s_FdUO08+O5dIjtpLj7S{sD*Ah z`zE@9L~PI#2W9GeegvN>yLr(^&y6aP2}so5j~Us06QtWOEJb>LBI6B$6$KqlO>)f0 znxrFHlij!Y41MgU?}IVNzj!}=z0AUFbkCB5fg0QI4`3f>80M&YT@R+mCvIRwJw6c_ z^?2(BMz%ZZ@rl5w$0q`#9-jz|dVC@<>hX!dsK;A@vX=D?S9Wr{-FO3vU7f{^@9Jc` z*wvF^Hi|NJ%q#mk5-OK{vrMJook#X!w>ov7PM$^9T{;oi#jfe(?qUZmuO0ho;uaD6 zrc-FsQ>~`6OURCzz)*HP?RKn+v2Vx9ZYwKA#l?5#l%IFzqJC`gWB)znStD+*;XM5? z`JB%$_573VzExL&ZGqzg{P$l1@>A$j_O91$h)fx!$@A`aqip<($7yY5XRo|gePz2y z%6Tk)%$DHezijvI8rrVk?mPTIzgYHp3EmInpIxT) zNq~Pbhg~MaVFji>r^HRjl;A<~6xh^6G&w#XHO>`%#y#WEZ z0Y-OxR&^lnPhn0ugy=}j0e+1q`_VR_=3iXr)tR*SrzqXhMzo5tN3>MJsAHQsm6lIe zrHox}myV0>4X>^1$Q~s-+>OkMfS;!-X6waGIR4psMP;=0B6Px(5*mu8)E75d*WCO6?nx~|qVI1D{rMM_ z0q_4~F4~lM@|X8TD>KuO&bqH2JvTSJ|M%60`}fs5uSb!4egRI5Bm18BVuUB|i(kXK z@zY><#rMUpRcYe>f%kr9yNF)80a0u8c^0DLuGEi6X+6)vU~HGGVC;`O&$C#%tk#BZ z%JVFQ=Gp%np^=Tf3eU4#2Z(ZK|7FRV3LD7z;uG`5YQiE()g0#ec>#^tRljWaHZ zUiulL*66q-D#qoVq_oB*gE1~uus<#>UF@+l;2SL|_7K@@(K$L2C-?tTc;8=DWO1^!Y8CiYq$Nelc{THvE;fxk`* zd@L>SHz|RZDY94MJ&z-8U$*4CXg~f%b8~*euuNstrd_O9*OsupTw4;=o@F+&-BIl& z0;AfquAH;oQSBuHquNUZMzxm+jA}0t7}Z`PFseN(Fs{687c0!JK^*qubB<+f->ClE zzELT*Zz+aZ&u_u#*tNS6p0IuQA|NGA!uH*#(m1w{=%rN1#pLZV;jgjsrWOX>R z`tQ;LpG*sUDkU)PlmGp7&ePB*+x>g3m2KoW=;hAkGl*0>cD{A7uU#roNBoOz%aF{a zT%_P%*3?_VJVf=D2#o425g65*9oR+X9eZVpVvYH17mL7z@opThKc-|Wdj5onY-P{$ z_!)N^{C`&d7x+`v^CEwmDtlgHH2QcpGg}oWgQR~^Nnch;|EiO|B7duT{w9B`dtQ~l zH9dcqzqLKD$=~{(*X3_r&p+gEL(f0uZ)4A!@;B&tL;g1P{0qPGT4~#g4Str%e8zj| zyI~7;-dl*6OVQdYPWyXiPK#IoDXyfriQ;aE_C;4+b-xl&d}>Q`nCTt5HD1VF9S-Up zIt7lJ&R<~+ly(QCL~Cmk4-ATM!jfc|>8qY27s8Qne81FMeh5vw92O=t} zDm2Smukq@`294L?ly~%Ku^F=J^6pNk!zoU7@s<*=QR6j+fyN6Qyh44UUM!3eZzR~m z6wfNerEC!?rm}sTG-6XYSR)R05gQ5(;?)?j_H}@5{5ZrUh(wvCjzcseUUj7rb1q_I zp;5F0MwNOlPL9-z@r0cSkwBDvFw}@)nAeDT7cnRVVq1eKW)LjyHyqN0rI0!{YsBVo zs74&>A~qG8#5pnI4Ma>Ywd^@98nGp8)rhSw;^4wyu{1_}nuxDaya|ygwbZdqBesRZ zG~zH9aY$i^SRoOc{|TJY6kAfTizg7#)~y$ zoY)m`x^o^LA&V2?O2Er17^x9)K0qUmauLHqDCWnAHxO|d#p4Pw?wqpWM{C5An zT*Q1KFP@7LKO@-iHy|cJu(?flmpT?TVliAxBd+BlHW!-3w#XcrAcCDnu}~pqj7gKt z)UFZR!?iWy+AiYI!ccKTjQBXg-lnMh7j%TRyUZ6OPe{V_d|RLW^id zX078yIK^}dK}5T|%TkZkh-1TbHR8H1Vr!vQoE0N3BADz-H)+IVsXH`cN4TCwT+c;p zE3}EbW5maaD5r*36=K{n85*K-8gX2>zD8W%MI2TbCYHyDjc+Cp?Ws$)%mx~9gK$HQ zxS@+Uyf9o80n;j{R%wW0Vb$ZNn{LXM8Ltt?hZ||cjaH_0l98(x0mc@v4T7w)zaw$z4D|1tJ z&TTc~w&8XfaXS}rY+aRt%22d*Gom5wYNDHb~_ z-A0v`rK+@>R%y4E!eCpc!X|}bBP4xHI!0+$IKJ@Z!eBS9O=*1vv@RS{*w~F8rlPN8 z^vQ)`ZuD>&T{x_GI};r1MvqX@2Nahgy7&MEtH)ApWCU;%BZ=as7^O6r$Ea91Fr#H6 zw1=C!P^Yq+R`FBRtGqI&AKPHX$|N2`qvlSJ4Pt%;?&WW?Qn>u(`^&7tEb*-DFT9pj zBgM99v02Ah92Sj~-DuV^QaZEzZ7T}?hP&&|w0pRR9x;2k-Se2jF=9FB)ch_Q|Bas6 zK`{}+8Zp}7?Wqy>4ENHAd%1|m6^;|TB6EwF38@Nj@fkpzlSI@PsC#R~y<0}x{XM10 zt#O!M^9dJ)!{8#x3yJ&*R*b=?&?ypwBA&{H_R@~7N?oY z6bs-KODJwkRwl0dx5Di46GMDv-mu!q_AFLjH6h2-cq3??lior5g#G%)0)>T zF611ukLKN{Wq5-3GY;-QQann*3b1U1ZqT?5D)K4NwhWFOgASLVLn zWa~6vG_9Rn*rtIzC&NMt^`OF+{2s4tOz}JpmFb0{F08gPa>hTV zu$CLGrqUwTHJReogxJ+h5zVRpWRj&!a+H@uO{&G^O!8X_YU89T-$PBGPKr2W}Q zN9#sPcA5QkBkkYME+h4DL~L)$t94@GMA0qPil?lrsn)HjY8{}}Iv}Z*tlGj(g`H9s zkF0e@^}D7{Dx4%9c2trp*_TpPnx<8n=BV@nc~R>rDn(Ip@ztMN`bOa!;!UYiJl?C{ zK`pgIxFgK0;a}G)lYhz!&jYod2Zjgf^}|8V`k^?V9g0Fs1+KcfRl_;HV8Aul6f){d z5<_+|g18Lg>x>tN2Wzr}!|9rAx=VH@5*8`ML1oDhYugS(#``)XyNti#A)4%v@K8;5 zs7rPh5*8_hC`;CS^RH4%cDW||mLxk&lN}ZwuE`E}$<8Jjg}9(B8J1wFWL&eeWc*6@ z;_z#l>}%l>n(PRd>>QF&h$Sl_ORvV8HQ7%j*^!#;$Z&=xo8gk3OEL;^XIZk}KHiwx zX18jxTO`@nHQCq0nVM{-OD4@5g?P*%dl`Q58AREx&#N9*<86}cC{1=$c(f)v+9f+5 z35ygWd^g$kpFI|2uS1k2yI+$%AjxKFvRUCVn(P>tYyrtA#8^Wnc7{_NPB8}}8e;0+ z0JkTO)wsuo$7$T-T-=L@OCe5+aToQ0d%VUyKAf#_XS=uyiAy1Fjd7po1Gl7cOW_=i zJIBTSCUGgmD=}{NJybzE#U>D}2M&~ZOCgqW!-n~uIuG3 zam3m@&EXju_l$79#+~ota;vCFA&!f2&m-;VdXeMgOpSYHc$UUJ%f=Cv?-ad@_-IXgT@)12ede3vv7VmJ`3 zoldo5Ji*W)3F`*kCE8sn98D|EH8ZzXz9JVg=W51t!}B!bc`oBM$WWvZ6D4E3wk+G= z5o2+&Bx@~xPm|7)q~~kW^TP`?=>;z7wIrnw)B8&r-S#Y;yg0m2Gh7%h&n&Mj3w41OhTqg=-*m}-NHPks!Xc~u5M*r-WyzLnvVTjmi#6HB;U${v5|``- zl2M59z_nMm+mdYmm65%z$=;DD$~ z`M6hW+^fUyYTWO-xLmRpDa7+J?nlIJ`51z(1nyMM`-?U1;_!PK_j@ibm&8R1F%CGo z-L@yB#HA~NE9cQA8h1(feU1Bl7neJFa$8Rv3J86d@)Y7;NCog+I}_KXGyIA})n!2bk7( zN)i`00=G)w-mGzN4sX%8x45`>6PH396yplwUO=%J!f&@*HSVq9Pc`mOUEH4&mqOej zad|sNJW9xyD3&W+=Vt3|8uzyFc8zaQLV+{ z!$A57l)5(vPZ*TYqDRvWEUf0kwR<$aNYCwCy$_50AXrORvTOR zF^&6J_#2J;8yA-fNG-%Q5|@RL5I(HuUmaUTzVt8stp;=WH@3h{7^yPT>vWd_X= z;~*0H%1VDi<317oPUHU0#r=S|6k=yU^s_Oa)VNQEPifqzT-*|>Hqh#4q^eO)<^m2+)s&1Azq4cKO^qQK@gim zL~XlNP94O3PUAio{z>Eh$;JJQxD;YxUYnN)3|?g zaR(8XLRP9hc38Eh9@4tAY!;3kR^#IERZaG4_;*eAcb6-dJoeIxvr#{HLzTSZ(7F%w{VUOkQA_6W+z zK}jKT-_*EohHq)yw_Mz6;!=o^8lxbo1Sz|)s=c;e3N3%#v5-gY?-BnO2Uk38ud@-U&UaMlS= z7j7l?B}c2p@s8$r$K^PP928>y06Fe-Io{PA@46fZlY>IM$~+=drR&OS103m@l6ELE ztW+I8&)@Jp-7xQkD>T^(mux!8D8!?^m>YbLoU#G`;!hSN0|PMP#zUXJv(!RQSJ8J+u{-9tts=`Rr>5p3au%=6O!9J+3=5&PM94KZ?J- zK?P{G#*>M?jc^5(hP2Wnokda#agHQi0x2ue>KHh?X*ZZ59j-}7DAFoJ3Rh5VNUJ^4 zV@XOOZjz*rq>y3?NhKYvNeha!#*o4l)Ed%SkMuZ_QivBo*DB(1S6PFu8A7OoI_ev$8$V+DCAHZ2+yJ9vF5Sfpx*G*dpxtrLm?I+pUrbC{NjFyGUa)c zJl0&+8#EZ629Kvi9tx4EP4bXJkgN<(3(_Zf8VygQ$1{gK6k<>26LF^~YZpyVEb30N zmg*D%XjJ!yD`+yLO&;k9B&85DC8=C|&4*K5NpUMgyY3ItUU4zg8w@u1a0NpQ{tyqJ z=cwgjYVjDL^rqTNgif5vPAu+vgPg&KD~KL5?rjV`e4f{qhqlEE2cP$8B}qbmE@*m# zyupVnXg2ycd-x|3pF%X&QGYJV#1uGVLz{v>)ZoJvv>5yr5C0_MQ;2;4YG3`%fnO|u zAig~VN1I~LMe{{(&}#VL3fc@`o5y!5`6$G7fY$ACC#fE#cvkZ{?J>;Y!xaoS_`^N? z(}+(YUW)PGC3JN?L^DLY-Jeu@j4=3c1tSgqNDse@_!MF!ptSyd;*T=;a0R0c{%8-s zhxim?Jn-%Im`eSpr|2KG$DiW%C>TDtf}-IodVF)qM3bAMa_!}C0xPtKpf4ql(4)H1E%@%zT?c8jU^&j7C zF_RLz9j_30uLf(fjSMMV!30A(!6QAFq!jW_j3!-%@+I%YNF&9bg-&Hi*%wL58#y4| z*pR{%Y+^_^@kq}jDTR1J)}-9th#%+q2!WuAwjrXCxT(R1E7;87Z|32jPkajbjF2vr z#IJ2c$<~1&{?-wRT_~!BLKTidiN0hQ;R-f4jGKFm7a&)WLQDm?W;}vqXHi^DM%ipq zsK5*PUQVQ`I^w*U(BtW6YQA~koM~{=; zPFgkW=k^9$8GN{cDF%OvhtC&W7b(O(fYSTAa|peFVzI)Hx*4>W_*)x%xPqw$f2xQ7 zP2y9C+W@5-g--DZ#S035-u>+;1YZik$DVqFZ45qK!L|l}TMz$Y;!}v_fYS9-+XU!# zip?Pao!m$74Yo7*a0S~N{OvvbONdV)b_bN!e+HrFQpiplcPjN%U2m|1!G|l@(ctgs z;a^I83b7~+pCh9^#*YTYP6i*YU}uBBvxk2f@hJqAwmWS+=zyO(%&8VTEsKv%yNe-( zE7;YL?&^_VPErbSTU@9|Szj+vtbk~b3bm9j*{OCj_;3Zg8~oip{BIGTLNpGJ8byu7 zP2d;PAc!iVWBfe~K3u_`27gZv{|e$$hhXACHMfL% zgS`wnT*2Okd~c8Z+a#wDPa1OZI(aigAX*^W{mT1_!G|l@$Kdbd;a^F73Nao~dc;g2 z^qv&Q82rc<%S)868hp5deGUG;9{yFtrx0hw_?HvcKNwcUr*8v6}u3(zMpXT9TOMD739#D4UZ%h1x41Tn! zK7|(RK!XogaFD@2$iu&m_!L4Ie6fJg*Hhd>eBHj0{$@3CfZlJMraINZh7_(~x*?tJ zk^X?B6ygcsYcsZjeDdMoGOLM03_e`Jp$7j@5C3}NQ&_8s{?3h5D_Tt)W*FfL4mXU4 zdyGFMBZU|eni7qJQ*2K$4WeDnDT#^YYX%>#;0S|%gopnl;!_L=|44%mS1`li&+zbX zBtC_l81*ppCdPzej^5Ppe0*j1b;Ac&Fw^kO^!R>EJ_>O(s>bft=divOv%VHxHB8RI z^6fmbTOVcc;R=p6_(yyAHxZvg++py=D}>JGA(|oDWw(~YCR(q~GWc)>#~A!$Jp7*! zpF)fVl&-Js2|bPCM1v0!zR+!fG+W0Se7J(+4E}K*{>{Xv5DNjNN63wYzL(-@8$X^? zjyL#l1+xwQY!Cky;#1iD>2*S<^;dLSS^p)24_7e9;Lq{!e@c7`k!gh@?KFIF1t%K56Ft7$$wx7u z`Z~$r!xfxt@K5&e?;t*f*c(-2kB6D8ukQ5v`i8-WD>%jApW@;FjQAAdVh8_v;@?Yr zj5pSoY82UDPc`^(1*aMO(>(k;iBDnIPoMU$%izNmbQ}C`5C1OWQ`q=@_SYVR4_7eP z;Lr8&?M`)*JB&Y%9LKmY`eE=V89BSKpBt?n1}_{_7+DD2IQ1lWVRB(O-V5Up>u10Vc)4Gp z$%!oc0Cn*`HV%dO$Z4GVp=g|Th^SrAICzi;otHNqwh~hiWj_H=aN<)+YM=^>_=#}uczDfC$4!-R#S3Nzej{bGe17=2h_iW6OaR4iky zQ-~X!T7L|F@hodynsj|fT}`oPn_546P;277RL+|XQl9Dm0xCMGVw+W7(TAugg?QCb zw3mvuwI;eD5Aj69cXLD~hwnM28=m8J!-vU3A&x;lySpdeEu*`;8os^3xu!zSg$*B; zu;J2*%6|4iRP?yOkqwu%@&x0hpw~*I`{6$sFCQ)cRtl2tihO5+e0obBFn3<&px^6J ze3glQL-BeFlJ1RCr#Bcc`=z6k?vSrBp3f{6zV32auN0CG*B177Q|R}7P#a7T2fESG z%RZ#GS1{2jUK0JXkH1ijzfo|oda2Z#v74&PgmJ#?L z6q3xTj)H!bmYgo7BC_V(RD8qs(6|s7=$Cd_`Fi2v#?`f4==J=W#$vFg*^)!dGSM4{J*JKEZnlHH`Ntoy~V;! zrC$(tN&){pBK`Inybifg??je26~D|vEedg-GlbJjg*^jb^OQLn!MMlw!U~B5^by}gVa73Y__z5hjwer%lQ(a+3;dD1n zPflAE4w3H_a-;S2^^SP`-v~EOzh14guv=jpH%`A^Z3ZZ3xN&OHRXDh?H(rhAsH!ig z=M=`_THlG&m(%KsIT=@e9{mlgm_j_`RI$CC;a2fNQ^gD2DwZ?2JT@S&Pn-!oS_&`Y zs$(Xq+v)9k5zMt!p}laV8?BeW@(O6Z!j^8duJNy7vtbK2POo>lV8e^Z4soOPN_Qcn zC;O`*UGJhWx-j0&nyB|=dCJ%Oa@ISA_(;}!{AP)^VeHxvd=;}j-?R#TgN!V%SUsVN3r!DXhJ zF7vAC9glJBqD=5j*{SMV)E`Yn(2 zU6N9WUP&r%4~`xVzRf6hhKNYzzN@-Dc!j}-EBLm-|F(z!9`Px};egVQBhM%FB8ppy z&z&%kEM=jV%6;7{4L)4KRR;em4}S&mDa2zEpOvOs>=ojFM0{Oo*1qu~gAZ5m9fSWJ z5C47QQ;5b9M*neeik&I;hXB5UUP>nGW%Ea=#<<#$!4-VhkbT!9`+#H=;s{A5d%!v5 ziO^%PguVuKG?@I8b7JrDmw;!}tvG5%8GC!V5Y_m(A6jj_bw!xenr;D6u4|A_b$ z;*}Wx1LD_@gcuG1X!Kz0;Zc9pnXWPTa0S;I{A)e@kBLtqHUN}neBD{`Bq-jcK(Pd(UFxp|Mj#B;^#&iV;D-kPhaUc?#HSEc+BPru z68{EH8w@F2!H*2-k37=PNJ=5z1iro#RX+-R_KO@cvOOMP%g7OU zqrrzO__4wNv4{UT@hQYOfNK2Ri7!9LAV1t9Z(>S;w6fA}GWc)>KQZ_}@$kPOK7}|M zp!!bZS;W7R;#P?Es8RF?M5Ekn@Zkz>G5EK5`1qz@rbr={8GL0yo+tjh8ec-k__rE- zxPqS={GWRGgNRQdsI-0OOzK}hTItV0Cv7{nL5*2wvDxTU4~>4CA%!cr-H_hyk!DFs zA=-hjD@`6LngYMrN0VkiYMI453_e`J&kX+0Jp2mcQ;3-o->f5K%}HUP*|XH%?wtl7 zuHY_%f0u_}Nqh>i!04|UC_@Zk!6Zt#EZ;a3r#LVN%yyHOJLV>gPK z=vl376c(RHmZ&Bg=N>~2SMUo%{tJ(sXPo3gC(%@h%vfA+QRTVkvF#D8!r0XFWR_&ynSxuxzVTg&W4--rzw~IJkmkhIE-n z+DK9gO&ULZ6_YxJGu`D2WMhryBzapgqsSjJsHd((u6*JYx7B@%Wm^Mr+1|P2AafAQ3ho2)pg*X}b_AGuL{Nj3usA{76iQ41E zxIKPr_}~hjFnmvVd?EQL#IgaD=XVAluHZ?7|D=bXCq9LEV*vP18GN{crw#to9)2_N zDMZs+{qIk|H~4S`&lvn?Jp7@=rx2R~-)@f`;TJO?-1abolhw+>$>P(NQ%zWgKNxbj zf@cl+vmSX1G88Gqya5#Mj|LyE;5mc;oQFS*_!QzMi7%fpdKAuh!blWOElK}m@Zk!c zH~7zc_```$AzqO9@{%KdUFuD^oJ!!UiTuw7AFkj9ga3kuKZ5uaf}nbJDDmF~pQvt^ zjgvUH5)GD@;=%Hw;e#u9$?(18@r@)Og=hn`=9>VgT8+x@9^%-%KDQ??qG7!LV({S# zUN-nId-$V>Pa(Dis9sndO8nC(E{90em%4=dtHFmWc*Wqq;^B`bK83g;#($X5FH?My zj{i4<4_EN2!GG1mFA$$XG_7swhfdK>F%^RP+mne|8?e|MEL0DJxS=jk8dsVQHVojA=CJ{CXHGOojT%s zIp+JP;e#u9!|=V~@wJnWLcbFs=8KmHWoGEV#(e)Wd~gMC8ooC@zO~6mAx=q_FJTlC zS{g7K{-p7Q>@1Lzh#VEvr0VuZID7L)6ilu+2sJvoh zs2GK~ZUBn?+bH($ek*2uB&k0;j$^49g}6s5M*AMOVstIwHs#w!vA6rH*g%_dT`EQ) zo)~~)?-<42>91k~ZORTRMj>7sfMV|&#oq0=Vgqc-^{5zy_za3!Z#0P869&g^%J+<7 z@AX%)fi~qhDn=njuhW0URv5)r^jEQgHs$(Mj6!Tb0L9)nioM@&#Rk}v8&EL{aWoXO z-et1Vru@Jt_CbFY8)#E*NW~~b_W%_8&?xp{e-#^OQ;w%%6ykEJn6YElMXJ;Jqbc{5 zcnbW;C<<5bF?{Nt(#PHuxDoj%^gCE$zIaLDT#-l5gZwS#`^50U6?|&=KK1w}kdH## zY|1BJb0(gHU%U+wttO(2KC^DB%&K+MCCH9-(`SYhuHbV+`ngBCF-a*z?U?>|!(M~m z+wayM;P}{ticyHsQZe(|ot2J{FN|Ve^jEQgj*m^L7=_qm0E%U@(MjJ-wx27bfsT*O zs2GLVbpVPDGKvlAw_*cq$}dqd3URnp%)Ew&*g%_db1Ft5<_ ze-#^OQ+}C>QHUi2P^{7@R@raG2H2DnsThS=Dit%YAX;ftRvE>r`m5MLn{pBrqYy6* zK(T70Sap9D8)#EbreYK#GnNLne>GNP6szgCVgqc-EvOiUC`!f5XQNlzl(j~&+Wsmw z(5BpyicyHorDD9)m2XrMhr=&UfhaoAdaf2L3|3UT8A6l*k!HTGMv0rsD*sThS=2F3b&EfN^Tg8nKt(Ec-( zicyGH2cTG!QLL%IiVd_Wx1nMbqJG`}*VtgA*x-IEHo&IbmWok`@ldQKe(_&9eV;s+z_KJTtN;#HR5vKh}({&6k_`Ulk!TFq- zn3PwMBxMVNwAqlt6$~|`Lp{=+NlGD3mZZ|4ErL_rOYs~;!l0=Q-4=rnSI}zkTRr?; zh)*F_NPM}$Uf%)eBE>|A2tT?LZ<=pEWMiTB;xFC|XGq}+h8faf9_g+mr4V}p-@d&) zgQTY^Qup@xaDxw5Fv8%E@bGsdK808aD7_0V-wU{e`25~^RH*1`2pf_YlVjX>xcZ|BvI@*xJ6%-6`J53+6_Kj z!P*9YZ4ZBM;!}tl0o9`Pf0)oOQM^lhToO+)g^&kv)-m{S1!D~U7!Us-;!}wFaS^_> zLDsugowqhOOD?ev(o8oAQ_D|;CX!;r2$J}o{0@-NM zI1G5dmBS5|ZGF&fEl&@_6>MP0H}J>_P^1v^z@rDzmE>L7AllI2!xfA-_~SkNBZ*HT zZXE#rMg||QV1mJ);Nj08K81J^_${fgiPz^UwB>At5!l$^!xd~|@Hg@BzfOD#v0UPt zeX+!9K|)*jn;Lw$g3S#6W*+`b;!}tfubYpzjOI6ywxp2vSE2s{9FP>sh<(Z6!xe09 z@HhAHk0L&WJa4OyczWk;-Lp|&Hu!J_6Ak`E5C3T5Q;7TDH2S{)r@BAf3zxJdkx=?i zGWc)>lMVi44}TW%DMaIj?4Ra64J)aC$tB~HuTS2>@ND7n977%oQCw}FEe+3>9?$XQ zp%7bwN3A}kQ%r|noCpzBRW#F^<;$_i#=(9ZfAN+*Q;Bc|Qw-@8k90OkDb_&Ywl+Ll zdpsrbP>6G6;pEzE3CndW#Upm%WRI3J=2TM-xPomA{x%-|9O6@m7h?SS@ibPA5M^HB zxUIp5E7;E9Z|C8kNqh>i0YKBg2az-;Tv2Rq@VED`S^TH!adWt^cYkhWo<(ga#I&;7 z)c^6?EwN~W*yrv;Id6Y++520{FJL5}S>3^udIzu6XOo9Q%AG9A(}U0 zZ|Qq#U~kz4h-zxyWsUZhOQ{Wom|9kwxVPw5#BzTt!OtHgd&{n-)Vq46zKlE+;^_YK z$X?0MA0&BpGd#O_JXev2LR<_Uwfc^2zI4G*x_5tfH?_OFU%PT|B_4UvLu`DoX#i(3 z7Ev(@aoqqE+rucfM}HL?=#I;Gs2GK~cL0j*X%ySD---=z$K`b@Mj@V-T_*i-dvXm0 z1A~X}KVU%;pFr5lbeX-pF7r?FP>472`X=kSxVYbNZncjo@yK*4&)$Y-Z;$5<@=%D8 z6FBhuQ=Z=7E2g5q;#9Qkm$C4tj5scK#r?SaDV={&Q40BVVrz3;57GFsE1lM9AEV?x z+5ghpV&0^Z6k^AI*QT0&W-xuCcYM{f+E=|+dy702@+07VS4KIGeGSLH9>;QWP>96? zEX%!KS@ttL`*}S7CJ%-D#(00r;&be8IQI8A-X;fy_+TJq!DwpU*lm{s49@``&pYIy zke@K`S6NayrWuZD9>=@npb&dfw|ISw)$ z2YDPT$U!0Q=yzFqgM)#nmK_JL-157O$rH$*|Tk zUvR_AWle=l_bTKA@=&bgD{e6l*9_pn#-0Bax8C3o!*hto^C5XCR`MmcbRPFhZg`ok z;W^af`G`CeD|zxKoyULj=P<)_n8))mc_>!$!K`#1|ASeF8=k{Go=?a_v62sFc|2u4 znDsTo^EHp>Q}R%Vm*v1P4;97Jo^xqkzP}w|c#iORJ|ho>Xx;?Iq|aG3{i}q%!I6gJ zNRQ)la!`mV;n` z-=Ak1o|zs`1~(|=(_rG!0hGn(ILdGw<#7xm2ZdPP|FX!w?0+@vXv1@~$CD)wg&4nS zzuRB(_+RsyWq4+JJQd`j5Yq?9kI8ugD%6<de)@$lQpMG8^78P_4{?UPm>pJ%S&nd|ZJO#(#<`AojWV?FNR zJbqC2Z3m|tp3^-ZzNw%{AvPFbdHi+aJi{~3IXZOgLdIn(f*>GAM` z#YGCSSk~L)z54Z2WqHb%=Pbi>mdC@-1{W#h<1VeK2bJ-D9sA6ME)VZwB-`g~!*jOB z!_N{IDf-P5mB;5f$MBrv@f68JA-|TJUY_*v<6q04Yk1D}c-A5hMZb9>`{whUXL!!@ zc-qNBAv%_GE8iSgOY{TS9nLxOJ`nDG%K2xhH-64HJm-5nYm_&@^EL$FHiU-^tZ%4)(Z{Kg&q$N=@lu&_Q=;Co~S%N&jQ1R#VCh%GB3~nT|pDZ49$rFC#&=V_Wzpbs&L` z3Bro5R}fR7Vw&QZeC3N{B~T@@Oup%hFTQxOf&L8#y--s+07Nf@RlP%Bs>)<@RpWA% z<1(3TMrJZuBw?~c@i$Am@sk;y?HGhS3W~8$Lab2uFk!xGWGL5q-$@w zK7wm5y@lqvj2BNLWyf@=S^5g%RaBs&-t?o|R7~~eUZxQ$W~?7GTE$HDV+uo6)cz?^ zc@;G~B`Q==^Zlq{D&`75rZ7ZB-I@~BprT$%iK1WBO5Hs2gSaQ6cX}nSN9V-6+$MhPg4O9~FkU zQKlai8r&$;j|%l}l<7#L+!)i5M!GSk9~J7{DASJ$EpC+QM}@&|l<7#VZj9+ig`68@ zI+Dj^`ca|L&1Cvfp-D#3_Dwc+@?%)0aT(afj%U}-R5NbGgh`pnu%^AR`<-7!|EjO< z+!sF$HLa!n@LN;bpHehW95knN0G!z_f|RDgSvn9Rn8{G|xr_fek1 z6V}Q+hF`qDFxTQ$Y~w_JaHCdMY=f%U8dP&TA>30aNn9GSU9Hc6}vg2^X*L87jEv-Owb?dbH zT2*z2MO9aes;iCbLeJf7)F0#Te*8ssF=E0xnG;Y4nF^MnYszU;nW+K-EHLcScCSoZ<3{LtA1B=j1d-mgf>-vZI@zCe_md&D zGDO$vi)#ZeUn_=9LZ7ZJ4MR_sgJGC#w->4Ai}=gbv`lHik2nnJY8F7ZK^>D!^K!gz zv%Bh#c&|<7L;N*b{W0pNIfRY2!jX)3VPxN(fN-e`pz{+(XC8om5ZW@^qH4Y#Y$beQ z4|YUOY^ATGff{OtPHh8#_z~2~%5baKwT!E-DeZz5Zmg~@F@LR;2bPu~EUf6*6+dI; zv{zf23A9OAcV@KzDERZ0&H1WaWxhIBy#ot>3I5K+-}mshmHu4|zbD}jc0`6V?m+zQ zru}R*hNb;gA$%kJO)a(H*3mFrdCU^aB#Ni;f@ zxvHwB%F1bC&qqE5D|=+N<7nANHFCINPN*(D1pXQnAhMaX4IC~UW|3`#Q}(%a z@w-0$*u&9C=yMxn?n3)lK+hsBOEOY)&H@LmNyjlHt3r8aBW~^|7?qRRriF&iV;O@! zB94Q`Ev4h&h3913GY_8DDCPp&bGhwVYqFzr#0p(Tc>eemX)^kZ(xJ!TBikd%6kXAtql_=AnR~`9DdN47V#1^ zy=F{n_L?zmV)&MH4}%iYuw2t|jIk^erO}y=1X*d8RQt=WS2GDiI#XHAj`s`I@SOLa zWgyzHvjo-Zv$D5!{vNtE)U=i6APhF)1pN4uZFNZ?ys@^_i63z*I7_EOkx9HltSz00 zz|u(&s1)`a*w`n5dg3!EPf%An88Mw>-U;1JDdf<$~bXoYh#MT;)ll zkS$-6OQIMFeM%!$Yb2|0AB@Coq^t2qO#VaN;*weR=gb)VMtwd%VYsxh zRj8MWw$6JoEw;)@vGZ*V!iE}oy(;cyiMbBRipw^~iiZvkMP0`!h?R{~*U^R=k#l*j3jG12C0Ds{*4Dp8xiuyy-2`S$OTJdsXHBkl zQNFrH&da!~dqwid9px!PO}U>}QNIj<&Q>s#^-3bsDiuqa%sAN7E}i$bOj!@ZjQ=~NW6zM{3`H2l8EHQHEdhAKKnqR?YsTnix$;`psF zJ$kd~qli;BtJH`PyRo)HT!l=vT{{iSRCetRAs0{L76f+WSo`;5((8B` z`lvM39WP1u&PY0mJ)pLW&QcH1&_2kL39CA=l#>f(l^Ox3BVh91*aO)sa#ahyJ}5In zt*rEV^;kwWP_uZwT3wole4S@NR91ETg_VK?+ssgX?T2vFj`G8HQD0*p#3Ugnyno@B zfYCor)wIW4+OWQ8ckz>9Z8DsFmu_W`bFy#OpzgC>m$9(?;+b-G{cSj5`ycw2%I?RDfgkm z&__mRzKT-RLeG{y`^V2y`$r4%%l=U*{(%H79cO{Hv3B9C&a>eNB0F50t6aoEB`3bH zTCQKDfvC$>=c-DJ(GMd#jJ$H#wd89i%4&m=IR{wz+B&TAE<=x+L{m@CSKz4#YvrO` ze9B&j7~Sj6MHUwPMYejrP7Ixbizc0vGjqc`?mJwzv+oq~w-)}QKE-~> zaBdbxeQLyn>dap7*U=7ko)3O=QJU@eD>`>g=>i1G5mGHz$<=Cvyf~6*;tx>HUn3(5 z8bxc48u*6cuZX{BOu#AsZ34+ZqES!ojh+j4J^Q%4_!3oH>lYA~E`%o83TYOaJ6?fu zI>ow)6czE{ZSxediJ&Zl&Q1hPWzac^pvuEh#N(j=R_m~=)K6ZiMt$t<*Q$;@A4=uYS)I_)ho^o&H>%E@e^ zimsy&+Axt_uu{3R;&(`1)A1^5y`pO-q9?O@v*KR}p8I7EbVkWpLj@`j8JZP!+pw9A zCfDC(yG^E|U9%X#d|9zBQp7k}u}~&BCQh)s3^+Cp_?0aD{s_@;)YH1{%14RD^$H-?RNqI2Rz_r-~VFt8JC8EgG86UmY_g-v$J z-j0DDWSTl^Jvba}r>Tx{mYFm|!Xb8=t7Dw|4OcGA*=cT#(>!3(gkfl>xkL5{!Dwrs zA02D(2%}^-$cK5m9p}ese#JDht((JUJI$4Gnn#(Yfu$W94z<&~A;;r!j8-G~>K}8= zoxlL2lJ1kgL||d?VNW+&{^HxPABR01WW`nJ$F&PS#J#n612ijcM`+!G=U`s#&^?W2 z-2{!9vf>Uz$>C6;R(V_mDrf0v>R&1C+1$-wtMZlETxAQdDN2{2XX=Sd{KgC@YbMJI zucUuNI(rWJ82-7J14!4z+S_uNA0JoEPHsR+2Fzv(We=zSgq26TYTNhqJ2{@tW#}YK z4*8a_#V+w803^^z#ZuyB|i@ubNyJRELEykR0ngd^;T zA;+TZd_j%2Zhu61=5ES)NUARzaNPWCg*K3!PzS4BdX+&XKo`kR7?L>xzx-#Ce+aa} z*>0?@{JCS(nS|=bdeM*jROQ3e=*2~Z`3cP#?zi!u%l9qxA#bkId{?B!X}$$1eBukG z%fghnNSEk7^@s@%WX5B0+lcj8=WA$wrA6u6;B3gsU600EQL!E7n=27iE7ppf6L-KG zueNj*LW8eJEWaP+MBq&Ji0UgWl4r6uZEqcd;tPEO^?~mR6;>1fF4$ z=URA%N1oroGa~Z51<%OHliPmKoKcZyBX~wfo;~2f4KlfrRw<69uRii!NMA$b`#yb* z+Bc6Skj1DAtJHqiVYsl$RqeoaI2Vv3@V7Dku$syog1=7uosU0mnh=?01A|fJ!-~x&e6cmi$zKeX_zi9Y9 z&pFlI)jfA``Mkf+`^TG4?sWH4r%s(Zb?Q`gZ7o9rHu?{ue?+7d?LUd~wJwEjA^No} z`U+9L;-qNtB9WKrhZH)6=#^PomuMr4=7@4UI^ysc#(u&)QFibnRPxqFl&@G3DzqL^ zzRwx7P}@L76bJ)_5#5Yu8B#1Z-jCbp@GnbfLFHLSH zn2g*BCjA|W$vuMzvB~`k53$L;jEC6dI`_9st{)Gv$?b`U*yN7GLu_&v;UPA;_uwHm zxqI-CnA|gbicRjXe2PqNEoBzLV9Lh~K^VJ%QgZ@Y{l4eVS!p z%h1mai_|MW;~Eu$pe3R|&7x(Z9D7O8wiEq)f|>%GM);Nquuu4^32--IR*!V4R|sQx zAOm+0-hTqzNqDCTa2Mf;7B!VHh+A6J!D}EeWT7h5vT>MFE zu7|l>HUXYa*s6)9u&RW2NT}8M^b+M*Z&cn=ZTpA&ZZQLXsYyQ$;zjTIeTZ2= z8`6(oG+uFdG_OB?Ki$O~q%gRC{DY{^YiHxW_u7Ndy<0mszMWs~AGmpKKgl>o;Jgkz zJ2}Q8V;YO|)uY_nZ`eF}BdGRH&tTqb?f~kea$a)~*Tt^a+#c83Z$SjvDnk{AwW^Eb z3{56Kz%hx&Es&t>Ro59V<1d1|-5b~dp6mJ#9itY!{?+~MwcjJ4qp*g;x<%pI*oe3x z6Pv)Wjuagw_Nx6SH*Sq63k8vG4KvypM@LTL7m_4G3T@KwEcFj9-JjzP)F?+dhw$42 zzXS0*3cnTjorPbix{yXw=Y63!q$27otb5WH`V?o}!VJA9ufj~dC-1^6y=Pj5*?KRf zIY;m5kP3749=A?mFe)3^tI=ytb($0XzHyihq}&={Db@#2{RJUgz_NLbB8?A0OH^EC zsO%hu>r|ALDm<4L6|SK@G;U*&Roguo#GDB_%q2BG3s2Wkn6a|GP=wM}v`3?sC7GWc z{XROUoW_gS)+P3MDaJU%oxpf-C$+~Nd0!bS$XFGkI60ZTXnYvyj?kXuM8 zYp20>Yg}(I=p63m){sHIaXZKrtPFKZJ)TDU6?ytk-ivC*s|}oj(C37{|IpfB!Ny8Z zhMW3#E7xc#@5F z+QqiccTnHD!C#7BWwY|yjtQ6klSetS)PJ&M4?su3E7tad;6fOD8|o2`ou#VRfAXB# z#~_#nJs$;eju3%owGPDCHUiJnK)mH~Ru#4RFVHfFj1k7lov?i|W{WwYsyFa9il+ox zD1s8EGPMqb1`2)Vaqvcnc{|M^$OS3gsoqi`$Czsj6#T(#!e|5t|v&f5y zKq;oGZVNiOjiIHLF274kt}<2Q`%@*-Al?@qrNJ+NLDn7<(|5Z1dj?sb%e{lFXUj2l zso^Vl2jAP@$#@g+@+_f;PRfHLZg037%-5~uBvKjk{gt6M8K;MMn5<#wu#el|wu3N- z+uR+`Vyc6|H!=W-ke)E2Oa}zN5rW}3h85n&@Rucgq*eF~%2AL-7!}xbP&#!qO`Vjt1;D_XKbaD*lwlb!Y?^c#Us@Q1Y%a&Kz`R z2IqrRuon8Aj(WAHa}FA=9>_5MD596W;PyC8%qH!{H0Y3mBSYsLSzMv=AZ(Ojm_2J1 zHij^bay-f*juuvoL~8eR8BaFlYDfJeC|sp1HZB8cC)RJ}QNTJw zlaW+|VB;m}4wa$U^YQx%et*JGS~|{;)tBN=>Ac@#xTuoHl(?9}gggL$9rFzbIw9W( zi_OUkJ`w9t9Gw^3l>k3M!lma#HCe-UhNI&9CCMRv872#lOzfBELdAi6YIA#pG2MMx7tGhLXE)oSZ& zeDmul_AP|@Il*_4f$_Z%_hL5+{{o}Xcw^-2uQ9YL>rD{o5&ZauB&Kx?O^dJj<881|HW(&;NLLd-jo(bg(6mzQ z(Wpo#!S~dW)r;WkdsX#nQg3{(aUXJ9{~bcci%bJ;jbRdOho(Rp~^-V1qp)Ag?GHI9Ud1fz$d$@wA-YM5Tq^}OH| zA_pL>zr3V>o5q2-Q`4cm!OKTG=d^?BB8y7aG!`27gNxK*t`wLtHlO^8)%CS60WbEN zYoA`n@#6pcxE{|GL@&#(R< zVm9ZOoIIz9gX=+DdjRD!w|}VdWn8uWSP|#95WH-~+m7)t4fyZG>pd_@Z(GL0{NKM5 zZ&xec0>;Cf;J*{^Xe(Zg@i0&L@5F0LyymTwYxF%z@&3sv?o^78PfqcqQrtEf1xo$H z2oqZ@1iu1xWE1VNeb}Wp;Jn~CwMNnLMmX?-=pR6Iov=6+r8mrOcp-R~nhV3Mu1jK2 zbtU^)LRQ<-W|qmTDI~Oo;1MOe1>9=8(P>DR%QlwpD#b=pysjn1?}TFY9i-sOgUJoA z5@);+*p*~=;K=Vs$lpd^4!=8n?W$ALX8UI4Xvnv*`ek z>W5yPYQ9o^l(KP#&FUxHicFG6s~bC>-lYp=Xe3w!E?WGuSk)pKz42uXK?I9qg7p2d zz}4qpcY5zqnFZ&>-Gp-Tgo88^nvPqLw+O4b!20M6wzzwSRb4VscH|Rq~>=v9>QfrI#_oA)!tjF@fD!Gjfe5K@d*A%H;+wx z@2K>9@_lH`qgt6+t<0)cW>+h7BFX;zA4@iO zqGbL4+?JBf%}T~SCZKiKM7iifF1m|;e~qsPb#7Tf@OREi1(%{=z5yV(FCDua1wXFA zuT2NHN5P!tLhSFwT0u|K@%sljuwDB)UWqC*>Q^hxZzrdjSzo0zXTCWSasr=OGNFL9 zj+mTgcD-NuTpH6*7b$t>)Q>^Ozq`Yq;m`JG`E&f4wNud$)?G-9@;xEW=>3TK-xuh> z!~)&QA81*i1K9$_TPa2?gSW(@NG7(@s@+-Vcr${7IJiV$tJ>kL9bNSUIZFCk7J6^+ zaJtY7exKUJbPZk`7m1k6)F}8bWY`;gDo#Oyr$xcfXz&jYiwaBR>#H3?0eqRIL+poA zu@UzO26xwQ(%4TO8O4^O?z2p$Qs-L)Sa8##R!qrrpWhdJ?G!AsIEB9cgJjoJKUhh> z6Q?#A>2x)Y-r$EZsgawn?zLrPSFL{lO(a%86>6`bCsUc{&-05Rdv~}gh3v%PrW~@b zhMV?~T{7HsgzOpPrZZ%}0XJPCyBN5c8nU~Mn`t3CQn>L$_JMFy3E7dsO;5=F18$~= z>>}W%8nPFlZMQ$KaTh9bWQ+3`zj~8^xBev@G4R_)xBMOLy=h1PRkVn1mzM080@W6v zJ_ibS=Qr7IM{(kwoV4aeZew^BR_MAyrGLf9ladq4-pV%C>-W~dO-RMxdgAN%HrDI+ zHiMkw}Grmj1^y4Uu2(x|#6loNJX z#jK)WR~RRAtbG^N!9twB83^L*FWmv(SK*+rwz}wy;C>d;OYc9nmwIFOEv&g?GZ&pr z+!0hnrlNULCO;QHiphKaXyAAwQnJO{2O4}ZkX0j1c@grEjmlR3n@yef9k?f zT){n4Yfn$B12`xYT-ioU{??jhs0U>_AVE-YP@$rhE?pb67Umw~LA4@iD50D`CCy zeR<3E-)42vhON-QJU}f73K1}gm3tqqFf}X zIsUc+x1=L~PtmKe%rA+&D*TSZ-;1;K7yxX^L}cOCiR^K8p|XBLskye@lJ=X5K9f%H zSw*>4Q6qm#fxo87o&o9xTw^IzSpFHzd4oy3(uUM`kDkIOmBC^FNftt*?Jv9~l8I%o zDtwB3WqlIr!jpiEb+I(Xx<+PmOg&o8BrZkB)mRFRO)Q8TLh zk?G!Ouyt*Op+-d5x4wevu#b*&om9*J_tLXv2BqN3cfU?p*Bl0+CM z!8+?Uz6-$?nB;G387BJ~YCEC!RSLRcK_7}pox2rkJF}*9#{vNER*>M3I~ELI?pV-l z(KYD~1|eF27~H;~G0spH+`gc|nF_ErssfK8&p>uBSRRU77?gcLHzb=C+<>U6;A!ff zn;W7a?rE@sxGy0J;&uirh+7(>Ans(ag3f1?t0wBo{sj$thKXIQf^!ptg*FxCP6i8I ztthuMC@N0tWJS51!9rI8bpzSW!2El%kHHPN)Z3zZM5ttuH_fj0J^aB`xnHXKC2Vjz z5lg(ocacU5KjOlj5eb(kYaOKfJmoOSI4Oeg9xI63BJ8-GjC-#|z&#NO!K&Ic5`5Vr z;D(5VU{kG|1YfZTxEsPI=pw-vECOzYm_Tr!MZkR!3Bjt`RC4&DMZi4}6A13N2)O^j zCXie_Y!PttgH7Nwi3cqL?tHKbM23ef0&aV-2_%UxSp?kkFoEC!5@2C}+FZElAu7Dn zQVE;V{i;R4-3|%gCu>rKU$Y3f)xjpHFmK%SfP}g5U+e5y3UG@i=`c>7#bLLn z!#I)VPhI^!;rT#1jP5ZGdnO%5{}_k8m=2?ZjKc~?rxZaC=}&co{xp0uvj%wgH2eVr zACZRNZ{X9@@CM1mTVs&TV`Un)aHJ7GD!pmCFA=Z4*O8%b9;b%alTqZx(`Fnuj;4*2 z3yht6RMgndMq~ioqoS?gn-pOGNv&Ud0;ejR>4NgDK71?F54b-isV$nzuu=hC(*Inp5tEMJ8x=^pktZm?O)3eO@K{B;L&ZXuDC(v9t>IEd zxi`h4U8X2Erda54K%wH?T=og)KA6*sLi%eb6vZqdnx%sC1_?X)oXa#Dh^V=o3k*cpt3{ zwaZ$-KVsa+@a;w~hC5$0Um_`MC1Gwtv0zq6!rXsi!K{l>3Y7ayWb36@<m2AA$voiEe=QkK#z8C3_V{ndZrrM6d{Jg#op9-Y02!FhwUC`G< z^|eD1bXP&&Kom=eBiiExJt~88)XZ(NBV5A*z=)Q|eYs8c?re0OaG)L54ohfn7nF8r zqYns5JG9Yf1f?C?=${3p9olH`vCQ%DM6DbT3(6{EqsI!$dSj!P2+I0qqXi82y1MV$ z;(Pp6MA=)fJ&O`F`n_2=u$NamFv;;ff}WH?e22D6LD_G&(Y*y_=iNrv3SV{)Z1gyxr60A?a|NX{wPml>p&{tSM6KF#k)X{CdbOZ@o3Lqb5i}%f<>D?u z*ATUG@tB~OWN1f3JA8+>Is8Ou`Ce(~V)`=b;j#?vE`sun+vaePpnT`H(N%(8nL(R^ z^1a)pd@6f`!>>ADCaBOCL2*(UQScEO*Wzl>NeR!80OjoFSuEl5oqj& z-k?-dx5++(A$UQwL!g1<<01m~EDgb5gn&R}VM4GjA-GeLAkf$=A$Vs(aLvysB!R}> z2?1Z=OcIYv5(FBjpigdue0M_d6-k0XW50+4793ZGe(k)1^*#LO=EUVU4yW;*jz8g% zAO}j9ujpw+>HC4wGBmliX7HC4w z3#IP|N|$e;^!-5T z@-39UA1GbEq9Ox*KTx`SiqkhBWytF@)Z>;q3;Jum#^rNpgl9B^9M|yZ^QKdfa&xV7TM_ifzs(K`a@a-y+2So zeMP0d(E9_W)3;E1f1q^w7E13Aluln!$p^hZP&$1@B_H(uK50p;dLh1d1(&;PuJas0oPtZe5 zD=57`XzBEoR^+Ak2TG@Jq4fT`cj1#55$)&v$lvG7{0L6F^1?lE@D#QN(4xcb^qw{! z*7TnBbyK(#ADSf9_9(p30_ax4cUb^^U3i-iQ!T@s3G?PRw*oSN+bJtT-bVcBJ;GZo zfKDd7fq-_3)6s=PdQW!|_VeCE zWxd%HUSUNQ-`o`c+7#d06tCK(cOK`eh44L~cJ)x8R2I?Xm@K+-WKOt^5Yia3x^QDc zI;C)dl|D-|TyFs^$W7r*!i&a|<&}?l(Gi978P#pFDsBpQ(Fa!I@HKkRdLHhq_pHU? zuDmzupmW(2UJk@<(p+9FUX=_Bzj>My`Sit zv*^P_&@61^ykK1B55Eczv)tF!0>M8holRic+<(MN!83eU;HUnB9_Ec$h#mjX3i z#OqmPJT69@4%wi>@bnRTjOG=v%Vr4MeZZqBjwJdlr2!(YFCLebb9X zvKl4ZL1_6`!zACg5sN%YVx`f;F}!h^H$9V9*=i+-df`Z1yhWobW3^uR3oX`)AD z(TzmMvgn72?w3VBM0B4ldOOkmv*>4uzCMGl{v6QeS<+!{8FV&-j>!ZyKhrYZyNE8% z(5}8aPT>tLgCvEcGC|E-5o=SpcNV^lN$i_NKSlKLEP5x=!+^R?z84L1`GYsUGp%(; z(l+^5!y4DfGL#?Q$D~HOJV8tQ$DU8O7!MC7i9F-gY|Q+_zHVGVn9&V ze>>N&6_oYgMvoMf9>hlX5tQD>LS>A#SI&kpI%4uFvGk1TvycxaZ)cB!0A~6&Oi2J! z02`(#fGL3uQP^D-7KxEzz0WL0Q-abJ+vuZ$(!JW~uLY$mw$ajYtfTbtb}n>mk*$PPm*hp$ZL*cH z(OrcD{fb>e2MJ0aWTS5slrG**ZCp^gPg}AZ1f~15YrzA8(rw%5&jh7Yt-XLZ6EmVa z^?2ru&fG%9-e2!Lgfcev&f>K!g5?Z5Vewih%NZz(S5fs8ENH+iUmIpg17-o+FpC;6 zOW1~4)__^WHq62X%rdrNmNsA(vJJDi0kf2CnB@(a#jLPcJJ!14yl zVpa}Pn^@jJS)dkQmMl;fs4WDG7BEXxVR0-hTA(aZ3uVy)Wr-^KBfe^~Xo0dsEtExz z@=Sbb-FbJW?(QZw!2Y>yafb-{d7{>s@ri=6({7{Vg0drSqt^<`j<}89E+{+VHu|8T z?1!&pdw zSvEGzQUc7vv0)YyV3v*zvz!34cx;#j1(@Yy!z?MlEFc?ZQ2}NN*)YorFpJ2BSy+Hs zMmEgS0?b0PVHOu)mXZy#ya2P9Y?uWGnB}CfD3ApPl;va-v%~jD0qk< z+0P#lk3NUBw_eZ>)&(^d9UWxA~nctaHZSB@ZhfI%oVe(Ft?L&ty=Y zGyYx%)j8wuXHcCpel~+@uk1OZmY33bsUHwcW}u|aKiIiG@jWaawIylISWc)6nb{JS z6Hpe9Mayym%Hpw5mJ?7GkAaA5qzmYn_(GPJk#{{P-VIrqn$2Q+~{&#$@xj)MQ< zZ6QBoCaU2JyfpdHoHoFo?@ZMB-?}YHV{~~;5t8n^goI(a_S%`h*YxPCj2pP$3MZI<8S5mlf3;MZ_QyFm7%<| z8zbZ2e-uADj05pz4ISg0gS9*J*gmPAxk4(^vmD!39h_cvySuhb$LbsxE8u=Z84?S{ z@e=7nRq(w)Ic^YV44NZr_<5qcFl=8M;fZ*~(t6p#91#uZxi&cWf}7RKUVn8V)^p-q z!0v_Iw_I}yn`E>APT zhjvPhPXQ?Th0$ef^f!p`kb=|vnx9iM`6<^I0r}VYNhEK_9#blWn{eGGjgrTwH9jo~ zmq$O%gtv|oPWDo=SY3(8lHL^lgoSk@26|Z>ePh?iU3GnBnm=v$LOiVbJqSh~L#+NT zJss5d{oqTOnl`6{`m#IMoDS*-+=gpT2lWH)w>77O`m(XsoDS*-+(B!OoAsp;G{?>Q z(oUM=W_@Y$%yF~6w2IMjvwm;@TDa)ASzl%ZqvK|MnKg_~IQC`FExyTm7Bu7gYndO( zls~PzTMs;Di|%*t&$357bf~qx@ncso#P5ChVIar(7Jfg%@6Y&^5M^upcE=Cv=$tzL zxT{$RSoorAJd7Mdow^t4Aoh+0`n$-V}Xtb;>DLUQk5sGUF5>W~#I}ktT4MM! zVsw16B$OTpr?g3pDDk^I`(fkk<^zFLI-`S%g2Pa4`8hP%4`>c4>XVP(;jkjVQ#N|q z-$f%+ZkgGPpVK?&PmT9N?f~Gg@K{@;{3Q|erjcTILWJ{l8*{IPA!ppw?t(!^BsLo!YLh0X9ZX8jvux7jG>l2fd4x@xoR%^v zIZv)hlhbr2CFg-PF*yxNzK~=PIqD<2=fO2GCCzM7N*-VnQ_}b*rQ|_2F(plM5=ys8 zt9;e-Yzo1v9q|$+(xfHJK`#bLWsyg{#FVt}#@#6L1%(t*a@v$}!b3*^U+{ejHxYB5mSx05$kPa^ZG+wE6LSOxKSb!r zU1(e6gGi-o7NY;6UwbM9>ukZ;AT{opL@){b5m@2VYi#%MJ)j@+DPQQu7a4H3squNu zjx8I$y+I;=>17peTFBQ{`xyd8K0*2DO7Ow9y<-7e93vBde+ujPR-|gzWS4x6}AZ=uOtv!Lea%s@pji^xMc-L+uO%l)bj=PCujZW8^1a z+Z(T4BXmJtzVQ zop3?G*$ns@?h9S{-rCP`BgYJ*KU;MA!G78lu5&l(2fyH<29ib|iPTOAwUYL-uhmZP6y2x{{b9R(wPwkhW*JEjpMb^fDg~yBC zS{HJ7UXx=fIXU&-YxqENjc)wKDWMfy23GtUr&aghPM@od>G3_jwqA`Ns*PWRsr27x zVZQLoNP7YE(AW%3orhz&UFHGconYyJU&RlVR7 zDZfRGiF?{L#ze)mC=t(Vz66d&JF@$`(`){T5?~{Nqql}%4?gh>A*4MTjJ}0715~fW zkF9BBi?|j0yAId&_|3-;yA{wzZS7!^*V#6c|DN`qjvgedTKFCEbRM=ROhGyR9`~qc zjTdpPp0UM6E6wh?d=YQJ89?((^VD!2C9EOiYhk!`B;@qqOkq#Y%Pr#c-fD#(jRcj4 zuqr=^fsQ1O^IgK5b{{=;2F~IWx~qO^DUbBUM=P<9vGE6pP?rujj{IGMqZ}EIy}->s zQdw2R(Ob<%LAtk($(KRV#Rhc)hlQ5sS4t!ALVb@?DKy>&QISUDe-MhxADIfOFHQ@^ z2Ui8%Je7}m+1C#U6}i+zV2RI@XFWE}nDf~j4A z?TeoQKLi+gJ4pfclu@2Xn?<3F51@kU4${)6;23h3s-zwjX+{>{W) ziJ^#p;yzb{MV8O|IqFr&XYx(LP_!+=wj}X>!FYU*;%S(~ON9-(Jw3VFg(58X>zssi zwu7GX9YvfIs$KK#aP7rUzVn@{h0snpSOq`RE}u-u)t*G*mxFbJ%m$&HjghPU2}U5t zYLtTqB@970N3zfsr`IL*O5j}hSBMKu{GFHP|KhJK4%1sH61OKLoEwpjt=kmUHL1Ba zcZ;{0-t$pdD(*wxKaTs_X}FVE^<9~`9Vwq{>zOp(swf^57{IBYk7u{ZlFL;aOQHS+ zZu4b4QNI`Ctm?Mf1u;cihC;)sW95(yKfz?Tof1mU)dKkqNS>4NVbmK~3iIxYaSU%O zl(Y+%-xPj|?hKxZPMqJLp5fJA??oOiIoFhRgWhlfexz1k)+T4YkA% zl+}195*WTw1TG{3Bd1iXs;Yt4!SVttE&679FQygcVI;0hE{62jH~0$#Ut8eAT(_C$ zwKC+(7Y%lxJk>ALEz8$7R?mfXP2rdkK`8yaB+TvXS zO^kmPxuGRp$p^7Iv7RFb8{~ZY~x{| zopqWwV4RRwo;`+FN~gZPuvJdAgj2%Buol2#RT|(_v>Yj28d#6pvF#8$cn-NxE2s@a zcKz&YRE}DPDrlpt^1g zSVs!UT#b&=DV$Utzb#r05Obz`rufh(mnk z{#qyupZPuk4>TiD;^x3zzO;U0{MuCH2iA+)F_L~M;yMdaC+V|s&YFBXoxYX*JsjfcoQLZLxJLce zd2pTLbbzzpu^3nWbI1PyU4|t{7JJGLJmhAK(T%zTYw4Xtso)!5mY{8ToT z41=p1XhzHMCu9~>k{M$%Uc2Ub@UE>#Se?C1x5>mCTab2jFVUMK)dnW0aYkQvSMw__ z?4A))w5*jWQhe02`5;JpyDxKwNJ#@_`HnX<`LQE*Tc zSbGoCv4d8{LGMM7H$oK{)sE3O;sBJ0!f>`}`V7t885&Hw=kieo3Yu4Zaa1xeA};O) zn4rl3doTq>9~G1;Gm&rrpG1;;G(H3oJBrONglmb6vDAvqsRGb!7S1DJ7gys0h$NqV zU$FU1u$K;rH*ys7rV2cW>GzK9BdmJBL_WNZNf>2Lq%`mfLN~}Uy2U0D^Pv;B7;KL6 zUZV!x+I9FV?^uQ5$6;J9q_HxD@1<&q-$Y^&VAj|fNz!5?NzrLy;dG=}9|aXZBA`VS zmu{1ReqJSv4z;(6Si&LhH{dhsdr%@<9(;wh`4G%%cwROH-(HoF29BJA@wyT&^<66H zOsNGGo-dnXh|jTVv?+)Nr??hU<7>Pwp9(I%-J9bbz8Kp40cUOB1vO~dbMPh##)mtb zKSc1zJ__a$XC7{yJ=w>MsPGlf=4Mi{OX>P;2FHc;wHv`2!{ayt5$U%9896U;o7bE% zB^nO%y^$Tk0I$gMfpL6Kg9YrHGWSvF{Q8H1p-3)VNo5%y4Yjh|u32u^EMqRPtXakv zL|bOr1mioRlI3B^a#^xqW!X^8?w*~_vf@Z1o8|UwmfKTVuI{x9l~zPMOP_$DaypaR zZ>Bij7+>2g12Q=mBP@)-cVd40TEv+teI31@C4LxQ2`9r8{SNg(vZO{eB_43}x0o65 zhTkmg#dn=8x2zt0D;80D*GU%-{IqV{qp_^=!C{4lOjd+Fkt?JMyoagA_1I(MRZqw>CrE4>=| z%)%Pwn{YpbcBH4ghHYPaK^vwuD>*(thymP=V(qICNr$sipR$t{tDr5GH^QD+@OL;I zS2~k=Okod>Db!W{H-iTrwg;7b$D%XX^CZxgk{;cRl5{2*g>G21gToAQyZ50eS6o@X zd@o~L8s&{R-=9dwl%h5gxAN~C{N;~vm}h>QXcg{vVcS{u_6H`@b&OZSkGkReU-V3j z&er}Bi^6%0?kSV3&8iOe4)zVs7@RpcYj8T(juo9H2;)CB=00hWu{IDokWW&KQ1*1# zpK?){_zb%X;=bd+jy#TohcZyprn%zsE9&|E{L)R8HmlZ( z9Q4geLqT!igDr$oRnR~sG<1EO9#0T9FO{<9s{-MK3%-~waXSn07OGh=qmErggGs9e zbzvlOD!!aj{{(KUI2QPw%z<>Y{jSowR0ce8f4*13|8;)bGQS;{{IVr;PujG>FQD_R zXorOsOMX$&&IHZNU+?5W7}$Zn#@tkerOUxvRTFuH)Jkx-1guW}jejfgqpmK(k0M6?=`h@X7FNMe#@zrtsZy%t`gRD&i`3paW$LZlgMEAR5QS|( z*P;wPnBE|}SM-ncL#rp_O$Vhl2@&Ziymb*f$)(mVgt3xM2xE;ym|W8Fj40#?4Xmdq zm7$V+_nCRj#hGLAWCVcfc^(-GMh;S5J6dbQi)t%zK*`g|T2rQk10~NYYektB^&HV! z;7*+)Lg2y_aAEY?`%o^bQ_r~^MvISy__++zay|pJw`G71ud`6e7xAeyv9&$Q$SA7) zrcSZHQt#4DodpeHyT=~%CiJq|-rycyHD9zs+ZfuWp=}J+4shZwSq5n*D-JW|WW{x+ zoUFKAywN3m#O=!W7B7J$_%=fQWJ-in_D<}dwtQq;K45;Qv;i|LUSR_|s9tdc=UPPA z4VZ%QsvBhRon)Sn`FWx9+a?fdKN%m zkhijYDDPrzA=gRf^2^F?SPV)3Xen7X5k_sb zp@Fn9>Pu~9(D|;5c{$ihG;q=I(EATXz+3~9IAxVm{F^IIZ5bvwiwGDf4=ixT?q^!F zB@a=Olsmf5iWlJ&D_5<$7T@s_nDz?SMj5vlx^Bm%)`34<=QqZbq(+x;I{Q;gIu_y6 znB;FgGHL6Psl<=+M(T~;i(<(Y8lB);e-0JJWF|jtnlmP^i@g&v6WoUG&3G4LTx_U| zeXcWh7X|8@KpkZqSs*9P0tWGtGOKVVwZ3nX1#~_n3&l7KDMYehA@~j=@{47M z`cmnQ-Yq#XMK=Jx!9P(hnw@KYiN16LzFWV;HvSUUEnKWNo_Br=+TCg6()-MfNtj@6X72_L*rmb1Z(y$P08ntFw9@gJiM~2jh7uzomsE1KcosX*)P4hYHI3##D5g&ilFJ%u?s5 z!#sw7dA10ok<@m@5KuCUfR9=Lx~xd=Edok!+8o1yd9Voh2pvXi9nBouT%d!qh6bEn zVV!$O{)~&WS`TuW;##{Cd=?n4wLADAqs_${Or-n+*c8W5=-f8q zhqZdnARbsG{5Q|7*6u)x2+=7SkP3*~X zoO>}ocQgQc?AAj{fqx3VxTC9&s_n_Le|`Ze8OPzcKYhe5_%WJ}dF|(X1LL84!oIs5 zW2+8)MaUeBZJDulJL6966Oh4V+^OBp2e;boh`tb63?Uui({_Z9@d4yg8Js4o!LklK z)7J6HqNVaNZw_sph~M-09SzmJh+q8<=r5O!*(Y9RF+kd6?nv=4)uNPE^n@$@2+-F- zT^1^~s%ZV)6M4`6Kg7G+Nh(ayR0T*OcCV7wvE=tZ$=M_vO)hDvDT=rPB2|-T($qf) zrDpW`YI#oaO!Dy`rkdgsSM-cNyor*Tbpx%7I>q$=SJ6@_#a;*Ei&HYixd>Jpgs7Ir ztmX5!wL@WjI^~qE9hM())Q`Xk@Z(uKfz7`nwI{f+(MRW^jNjqV#RpKo@5e9lJ8aXi z3(46Fb-r4rx2YawwNrN8Pq!=TO6|HoC9eDGD>HT9G(?|4b&ndNkK?|xG`tnkM>{Ar z9*H-%MeW1|elx$!z`PFPdF)omZtkx|BjoaJQ9jCgHZs>;K+yIe!!+!4Sai69+|NYc ze?riXlLze-2l;Jt`QCt+zU!HoU$|5*<^{vZF?uC>QaLvln!%o{FzbEY z>4v{5QOp3d6l7l=Wj5OQTF3yFuTK*acpdS&;lw^Rn>_`ae7y4vC2j+%OHN@OVF*zz#EVU3T z9^6ieg$mUsL)$UqvZ$?Wsm(%++G4~~(tSuBr`T|4yO5JEHrIjYeXHEoc7*}5PaeGw@?482@H__F$u;)`oxIPFiEnA{6+d%uH`g4EpV@(R`}PcbuXOtd^kFHUPF{hXD9wHBAU!Y)4A-Bems^HhbA0GA!1XubPg`RK2w4?`bhHOpuHxm)^U`HF(SZ}`0MG}hz+V*FurkAI zJiz7;H%q{;D9sY!;u87edrL9yV@8_&!q|@?BJ#VW6T?(jNtN(Wc^1X>)#Stt47YbM$B18 z%o!Pd4j{@a6Lp%EC(&s(B-Uw*vi~>a)bv%SlgT=Fa*fWIRHNCDSC{jZM4zuD`owKi z_K`mSm3>a4&#W|wKC>aQoOH^Wx`d+oS903={8zGSUFvpvLpC(2IyG}ry=Fs+7qaLg~o^A-MU?=ug%x8PMiDPa6dj9QPJ4X z8rsfTkM|>NzJ%ZEz%=o9%)Fad#aS`3`*wkjzqJ=6p^omHNhnv8gt~K@#OuIz?!x^b zoQ?EPTgY*@6x6qnujeUfKvo0?Gft0&kWFaqo5;%Cz33As21>35xVLOi4sb^dnLj}_ z+F>nuR`+B#CW@l6V_-0a^bd^jr79v49h%Ha8eH))K8H;nn(k^9s|vVU1Q#w8k*;#z zK>I+KSq;!uKk(I*xBFG7CDsi@7to~VX~In!WQWm5?f>+zNgZ) z8J|gXsxM%BhtXQLYNMx`8@@0j*2t*|&=ij`X4Q)crC_$X6lZ8ho!fJK-IRm1b{Ggl zueOBYI_%xU>mz2#agf*#(7&r+Wu=mpOW(!0lt|Y19iu$ueH7;&`0ew-s-4|sec#St z^6HqudQhl1wZV$p0Uj7(f;hK8oT4-%ei2HWq&!ouQWKen{{6ZWHc;d&aK}bvXwy0{%sG zud(9nYTdICBN|pQ+zT(7P;|dL?#Xv2x5?Z7smnJFF2i;^dHBQf9Do&@LZuop@WAr^ zfh|)8oy#J+=a=hV@BRT>K z+$3WRbDd`)*Fli0cYJ@0K$Ls+FyOiJ)KLsRd>;>?JrL3Lc-++(5-kS!_#M!Lh#rVo z4MlGlBYH5=XVLpH=#@fy2+_f zLG=2FL!l@K7JI>S2rNi+HcXYF`7)M*PuBW4U>RYui(OA1_NvLz!tHKBa;!(S%89eg zI#A{~Ilwh!)`2p|ilTy)LuMT)bFAnC5G-WYfilMlhfN{#4wzXMxb_F+IAq>|GRp~Z z$h-q(mK9w^#>_kR-PTaIcrH?hvjSy#FRJ7WElV%>86x2OSD>>GH~uTop!W<0EhgjU z>+x4dq0rSU+b0EYD^zbF11UVXZX63#8LB!QayUfvNp>m~cS_@A%aI10O&LQ;lD-Cs zE-8rXRSOMNgmP^=R%sEy!+2l=Mp%|p?Lvx!$V^)!iyA2e$}-9C0%tqq{7}eX@@s6j zFS6Z5BK%Pl9%l#Yi4Vn~@8h(*qf=J4b7woz?BGu4V(1DdH;R2uz$VpCI{^?1e! zijhCW$Bsc{osqs0;R+VlcdFrubzB0;OU*Ze*ec6>aIL^65Kam$AG}N8<%HuxD;T3O z%N;e{(RZL5fKRM~K0a<8{%pGQUdVxS0^rXWmgp=#NgX|XHzX4*)uhmPCykF#?->6D z8Vn5L1r%FLK|C1c2TG|0Ri{Mpfl_FtO$yjkMEd`r} z*GUt3vFu7#qk%Hes>1IP-2izPi;kI)rQ>Xy!3?No=mJCL1QyN=SSWLnZGAe5R$b|I zReX&jwSxHoO7SgD%tzX8cXPOs7*@5c|`q*k>X5f-_U` zzmXz1JC!;I*!c|w(~j_Dk>^t6Z%Rv32wqGDHy9irkdHS7HT`Jb3EzeU0cNZ(-$FN$ zJ1c5!ykG|IV{2v~Xp!?Pl+YW*o>`1yP_6qwG#a(HRggWT^}wEKG!{zh0ZOB>P+AYZ zqK?14d$W)4RA7Nh}E zYiUA)({vOUJ<@grr^Q$a&}4w4+ZyBgO%)o41kflFMzwK@OViNur&(-_=1)|Cqu+!< z*ghih!?T=D=<_Jpf!jO>JWS(Oma5FpfP5Ckro9yS(?tQhOQb8VZ=Q=wQa4J$uCTE< zFkoQZnw5f4J8+zV@yFFm!BRW$yi}m4{#ai~q;1tIVPrU;#Bq(tG@6>9(Y??DnNy8W z{5yQoIY-|m3g-A98YTi*Mf5GfZ=}I|-5f1-gwaIjT1SkjUW^JMOMbJa+g|5% zlqxa$nh8d0+>kOst6xBmI?J@ja7dkBDzZc=Nw-l$FdjYgx5s%cTjrd<8}M(L24PppizZrks5PR0nq z#J+g{&QWK4zmL(5E&$`iMvB2WWOkbu61BSMmkavl4EioXFUoMZSwR zNi=rl#o!x)t|mIjSJ6eta4~rF4oVgRwZ5oQ44x6k zB^tLo#h_i#ONq)GswVfmRH(~{TB2<&w3lc2Y8ASIXk2%S!LZO?nW0@Q=vy-ANrJwW zsFm9BFm1Q_Hlmii<3js(qE>3_1idOlixpVlaCHW~RcNmvYH8;|L9flA&j@;5232=+ zJyA>E-wEwIGPJojQS0l79)OZG#ksYh@64dP3;M1MheHH?cLqI4&>M(adbnE98#CzL zg1#q%J}>A^8MLiIdDj!Qv@=7{_hrzwaq4$N2Hj0)Z_c2L1$}=8Jw?zDWYDIdAIzZd z6ZDo0`hcJtiCTJiPS9J4S|#+7pdSL7szk2{d|QU`^mC|)4->U&{mz2koQ4*&@htC01pY*p z`gwsrnSztCfWIR&Jr-cvIF1E$o=cs)Hx(5NMxxjFJrNwg##e@3ao!JqdyKSGRE;?B z?7KJL;pukOyGs*7{|l6ESJBhhg3$j0rQ5Yo`d^@QyA}ufU!Zim7E1pMlx|m1X~*b) zfzs_NiapNdkp34a-EP8RRY(U6m~J$vNFQPCgewk6S$G(1FsATPPhmQ2KF2MH6)BK=U!;m0kM4jm}{xP{W81En9gP&#y=^y3yvhYpl}+(PNlfzpp# zC>=Ub`f)`?4|M22>Bkk7GNMBVN?q( zpzqVq|9uYi%{<4S|FZ@`IM7Fjt{lX$>DhtOpIb7}u>++$w@~_Zp!DX7N|x!?fzp{< zeCgGJ(wAGbbm~Cq$}N;WJr~dm3z&7a9J-+gw_?zhbfXVIlXJvkF$l#G?H> znP@J!JVr(APbqp+jMCm#g`ZZq2cJ69^h8UaQ8e>mySo(qSj>W6Y*YAIg(>P1=#o zmImcEX-7#H*9&M+_`Y){F&dQHq#fC`G#$4|i?LIqnYm3`mz_5nl-r~o*_oh0xlP)U zjnbgpChf>hjRxg5X-77#e*KenWTP}Fw@Ev)WuQUfi@zC^2IV$sN6D)n^dKnBD0yLl zBNmiql)S-u@_{Y4Ni(uh+LPO)8QI#QJ-JPqQPQ9G0@{Y`v7K|I7h!PogMzcvyr1ZD=~Sp21<^K z%IpJK10_dArP7eK?2|U~w#j}{%4_DV(Q=Bsk4==J81FgH4ReWjPDrI88sW3M20g=a z$e7yUGX!jzFy(84>~XZ$xXo{Zy79kM9ym~coD1bYi@T)ej=ut`ko2JRZMEYeS9DT08R(%&l6J1~vL>FiEwi1kAU<_6OWuo6!wd4E*l!`K zRW9;61*aLH7*#ol#H2Ko1=nHev<&gP85ObmtBnZ=F<&gP8P^PV5 zmVjoOQf3J#bE0gd4PusnGA9P5~u;dce&Idkx^DSz&+ zr5YG+tG7$gr-{bXz^t!jXGhVD=!Q{~tV$Y?hEWxLfHq7XwhdQ?W;+jMWKeT?hN&gh z*qF=rh_*JD?=z^ixjf6D3Fh)#232$U0nrKOvN?mQx%@DVB4e*^FU%8k(#l?#F$A@; z7iJ7W8GB)#fM)E4c>3Q#$K2wpc#8%o-BJQpEu>4@CCu>M^|LZs)k^<`8>jH zov9TumaX;ug!V@n+7kr*G0~K5bvsKF+hQ`7O*1`6p0PNl2b9TJv`h~uldCq13 zdQm+P_2OrO@*7thGx_|G)PSEL+_uR_1^sCT)!dVpo%_=ypFbyRS=SYU{vv~ZM9^Pm z(60*mt28P$H&;GeNp&Ho6jgI7tp;TVN>MG8G6T(MkTL_MsFnsPGf;|Zp_CaYMYT}M z43wf;C}mF07nwQ!UATgaF|ni9r0rPX+yO6jEXI=Jbu?TGhPh*1{Pk<_N%Suh9LWqk z7k=n`u-p6%2+d@YY)yIss+q0Bbl8;?{2t;dk)L1R{2jR_BW-O#`FuP0_Y97U46$|C zoJlbDiwuta6oR)&#r{J!c)wKeOAL-Z6Jk3uIT11c9|mt9O%UJ&ahbu5=GUTpj&3C@ zGnRm}4(j1+fQV=mAp5JN(Klm!*y$LYB~p;eFRX9=k;x<)@bEbZ&J=TVBxf=scB9-_ z=ml>>T#N=v%gZ`c85(x@<&h;a2AE!dQ_ikWU_q*7h;_0=a{(n6P+n&7-mNpQyKv5m zs=%(gyO0pR$CXSO<;Q1Ym74Ci%npLFOt=qIO471J7Ny`UBTEVvlHe>H#pSJzr6V{? zMe!ZDRE)(UI1Nd0d9$M>X`!H~Hp<37GY7giG?x?2>CnR^$c}lAhaPa$GSs>Tiof2<^l?HeRq1T6UX%f}Dxz zd%P$3eyBn>5 zEU<2h!llKTCKP~7hMB}CoTFShalcU;#yyK8H^iGZzO4dNh(W>oao%Aobhw}vF{J5kafteqX z0pD*+$*Yo0AsS1jtt9#!zmg~}0}~?-rd*iRVwUqX=P0B_{|333iX|;u~UP91Z8daN2`BBEUbVxRkm9Z_9Y#2AP z1=x8TAj{6DJGUU5|7<&F9Lwm`#CJs7X`47X)v?|wq7)O)#uV$eVv2Q3%mKs<4uZT^ zLK8j#8DK2pNd)wMC0bE5d2=yVusdvGYh7a zqSeXbq`Nu|G}>LI!{9o0?laPT0Sr^yz|Nj26Z%jTP|HaAP?Qv_-zcD>(ifqmKq;U_ zOG$xJK#P`=CiMqpTn1p3@eJpikd6Ox!NX@EackUYKYAO|*WWGS;=Ct!Rvdq@ot5}H ziGK9I6TPLcljt&PH5d76F=|Bu~>^Z5Kn8l}Z% z+BL?uv`#jtTcWyTJdbP`7jm#&!+1)I@kGXPo1NJdPngJ#G_k)x8Ft~>D#KaM(@2Z| zCMiSG*SSyMuE+m=dnM8T`}Rtr4Txs=V(j9eo|>O0e&ss!?c~4%d{t0G9z1-tTvmHDPx^vGtoN9 zCS!*KfGj(lNEh68@xL%Ek{ZL} zZERRc8`LA;H=z&Gfk(VE?bDu*N@-vTC$Wq zgxZ$5%^FylK_Z^+^-(BII~B4Y;7=kFX-eyx+flN(_F?$(>vrfMLz8jjeDJg#x_vhE z1v_-dZ0IlT&>d2t+@8YGTRnHo$Ul0Z3_*Ps(c+hm%Fx!%pOBs9(2Koq5{DU1;rnO{ zo#p~^5JgKvj6Ib)V0k!)s;CBRFW_D^dv$;3_?akD-CjU_X*tQO3pK_K1I(;de9SIk z=F)); z3i{d%`lO({rO_6Cic(p{OYx97N@bxG4=AOwP>KhXQdua)14^kZl;Q!UR2E9{Y(E8C zc^#m}xRe}irPDc^hJt^&Kt#1{;mx!K(#u%BDG@9D{5X67@q?F;b}o2F7)ijsVX9k0 zR=LJ`Chf>R(5G1g$PM0)nBndsG38nfo&%`kW=_o$&Nw>)1W7xj{d&}1N`UTt9iheR zb8rRc@{bx7-HI96W;izcZ4$TgWh7|&{=wt8cbmgx9=k%?Y>#s}IIn;l&~7?!B5N)n z7g2fC$5+?FMa6kI1>MCkI+~yu&<~H|aX5${8b{%nG#i4I!bG49xu_lVaKagOgE9Tg^ zW23i`6gBlW)42ySaV)d7-X`XdJZx=>KldbIRWE^dICu(ZX@-*Gc!{M@S7Mv;95SCM z0$4^cZA}zTzvjxbguAdB(kVxIqoZOhUC&0;Sl2E3u(XP-U3x|_`1HA@M&qATeb^Q@ zHBmQYlc~p}l=%`5Nr!nr?r(Ss<7s99}>oSEC%~a^nEj^YH7a|(_(N6XtlZ* znZL@=Jm>4Un);m40uzF6$luZp69SsiBNK9){5yOx7-Fqr6f2%kVCI#Nj4n_MsP$Bo zqS95S#(+{Kib~C;ZamS5fWndoXh`js*L@*lS;YOQ%FxcviRfpaX#3Agz!%55fG*j) zs4}?CBZ$UZC9%IpXpbfuFZ%6omt`9mmcLU%4`OIs7C4AT(1VFu1^kqthh%7<7xYk~ zajFHgYV@!S?eSRB?luo68oy~_-}zeR=18Kkzb^!B#}Hkd;gCO@9Ns|GlB`!a97WWU zVOyYTdTQ)2y>b;lLmX2_qg1+_ql*BK~H^*|KFD+4N_oz5n5%s00 z*aQ_fu{JU*K-2b98^YjI$kK6p!((u%FGb=xkt#6~yyjB!1VG6#cL~q|Gh$h)6p3tF zmWn2_6#|x}Max132bQIxV#O>}pqcf$EL5N@OQn_fQx+;vmZhR%$}Ci%EK4gj(L^C& zSt=@$u~0$FvQ$)LV4-5WM!J4&3TfqlY1~RIThBy~IP@e&pXaentS4?&w42Pwyvls$ zv7k@f9d^B83K7Tn5RGjv>aCdh%%!P7Y+Azvk?D`Xs9t?OlgYs@GPAEt?$zfrMQKdf z@)dKPL72}<_zK-iV8lcZ^rvuV@j484N8ILdh>LX?D{x6FUP-)B9C%_XP+hpZqaT4{ zimBe1qQX1+*>>m&+0eHlG}O{^oUgQ)yETGg$jfv zTyjKN?~)FD;*p`~MR!Rr`YtdsCxw}YXBlI~&W?@itf7OPJ+KGkBUCBo@v>k@EqlX~o5$ zsB3Ux5ow2YUq}`KY@MCU%Q*nT;^fKY?}$}|6F1WvM{P;gXCdkF)~bZ z-U%73^It`b`ChVAy#gipzR^q_Z5t!&Qy^f6W;U{z**(u9o zk8Qdhr!s1iZ}H>Pom(N_$?y}%P134K9!ZZ5Blt)b)9>3S(~_AW-nWkhi}b3qJ5T~# zb(U!nDSWBa6$(YS>L4k1|POK|1C zTp&f3yrYia$`nX%#^NMrR``eGa2bnx9v&kai({-@VRP zdQJv?LC|xFS~577QL-RI+b!sL2AwD9c|`FY-g2^EtPt#R4Lh^vGbk3?3+jlVeFq&c zLAP~3;c-EVb1_&U=!F?{ji7H%p-UOg+~Nln}rV)_|i0-4^{v+rzoiI zdP7|Ky+I;fndVgt9uoL1gkxI; z^%DZWH4DEW@Y~XGA@~Dew02w>Zc;@1XHtB7I>nMn@v1bBl1cIEEUYPBlZFeyUznm6 zH*&s(Pim0nP!2TKfp-Oq@mfYr)Km_-1imf{R|USFaAG3mU{K(9WU0plUYCXcKjz*8 zOpfAO8}99y=?NR8*;&nKwUTBLtZ0@bz`*Vbw35gon2aQXL=p%AEqX+3wGhcBC?J9j z0)vss4rF6vu)!GHI9%Is9j>vQt`iOfV*@s}_}}+bb$89oYGwQTpYQqh+37xY>eM-> z(y3fMSI{>!qE8a^jdi>oe-W_gPN?Xpyqx4f6#wM=7a=iMi#< z4b72iyu{qoE&)q(q_FA`F%1*Y4Lhf4n1H1{GKp!KfTlr8I4=olnt-N7GO1~sfTl@G zs6*N&U}=&}Vj3r)X_HJetrO5RN(y}jij}&BgC+`IG)l@#`h&DiDKQ^{jOQ$9l1#=l zP8hw>CYfkjC!lGROf=0?O6pX?l{W*>CYf}!PC(NrDYW!yX`NC&Gc^f~kvwaEg24B; zPwK#|Fh%7%XY0h^Bc;&`UxZ zD&lFMOgt?W@iZ4Eo~8;CX)XkdlTXms7))@LHb>4S0djGM``_4vhb)#7%`{VRBHCGptMc#MOJ05JI_Wh%d z`91VDQ!RHD^C$|vp^>?|Q!DcRL?iR@b)oOB3*CG?jchP%apgwPoe;EcDupIsw($E% zofs)Ga)V}c<qdKv`$|*4xR0GeFD)@%`qF6)) z&!Va5RYT3fDIN_wGFU1F&(dfHV0jb|mP6BnB~d(B0!cEQ6jUOO?{blXM{p6Xv-ha>*<9osEloO45?B zXeo}8^DJY{wOb1ot! zej-wu7xu)+!-y7{8RN|DtdF2T;X5^veT`)+`+6T`$922$1VLg-RWS4`lmWhfgkZA$ zMsL++LDzjuRoCQe!fzrP)zg&q<>kQ2`aS?&MQ45RAbBQsB z=l!WhZ)M`5(4VGvV&by?vvr|AL+>~lz+73ODD*>(q1BCrk@v&&PBhO%_ZI6f8ruO0 zVWljYgnfx=lU!0?nzn~kLmr*=AJ`h^UXxX6yk)z=5;5yiK9x}Ah&D~ShiWgx651l_ z%WsA9P;>1mnjcQ5W{k73xWHFupelP(HJO8gXU-|SbWxdgf@hW)c;=bl8%zQ-OYqDj zMK2YMxg_|8s?6*We8UA~%ommTFbvLy=pJbl%oV7A!&63_7ven75r{YUv#7a0HSLCb zg}`ob2Y6uxp@J9Y-igYs_r8QAl9I2tt`Lpyf9D3YcOhGgq$`#TXsHYzVMxIewPLf#5h>G^L4aQnm-0?Lz)wXG=HHX&54fFybSRw&4p1rZhs;p zeguejY)`;DuW;!1d0&oLCCA=L4sJh`92@{Q)vu5OQOc+ndlzrxWF&570=3b%bA0=dvMw34tW+tVwLy@PkvWX!KpPp4MuwFKMy3z=+E-{~a;BB>zADCrL=DE}JBD$I z8DYMtP9TgFXZh{CvTEm2AnO-vBF$;-Ik0C3H@fFuOq=(-2qhugo()mmR9uElvleqi z!Xh(NRB0Y%#*+oiKuOPyi@C=b5PHEtMJmGu>up#dTWxi1{2SUYvNgjiD%6< z@vOtdv+A07R$}5=cTGHNG4ZUtCZ5%pc-CGM&w5NetFMV?MJAs0*Tl0X6VD24;#rl6 zXAL&-tjol+3Y&OVW|%eBC_zicm1NGNF@;%|If>Db!mP_gH>NNvGx4m$rbO0en%$_F zD~Xr`9^`r*XB?7+DCsk>N)z3PVgw)PGxhYS`5N(g~L1X-d(`wo)C97GU}F6bAf z3rbmf5aGWqN%2c6mSi&a989tv21C97y&)YK4UGEYWH=86ty-9QHUb!EwM?%%2IUza zWQ24tVI>=FYJ^?_PoqTJ;)PFsW*12%B3bR@zKiJ84Mbi|1IW8L-k-Z;yEOoL-`Hd-Z!Pjvc8S8oEWGX7 zx4|SNy8%|eCUO=6MJ_x4YcI#-dkDFd9b?zUcVquD{Qce!V?%oL{T!614?_`5dEa7G zqBV$~Y5mq~2z{>VuQzlbev1Gov<)5e-zjWz&ns@zDulmR*e9TcD&W%Ky{fSPU4J_J z55T7Umm|_>HqU#S9fIA!t+s@1=pR9*_SLmXish1hb*;D{3%;E#vbzqiuVRCo#|FeZ z8$okwYuPtZ>Ez?KIoVp)p2xY3MK1`Q~4*A6I~%SU^FwRwcAX6Aj3dH+i@@Bdfw ze#joeYLL~{FP=%CX2f%n>VD?8Aunm8(AVKPNqQ;MAl)X?#CC{xRh}zTCBP<)jUBwxNPC9R65T+n_q&a;I4tL1O8BZRu9O2+DJW^C zYkMGDLTZEC{OKb`Sd$7OzMw&oQfj~Tl$~5bE#Drg{f0%xHpDp)S9_J%F0)J(Wsa0K zCFM&k5`i*}nUXR#aH8maW30@fiCcE&vVviKM3tBeX%YSgonnhXM{E&(3i-_zfqS7( zwXVZ%*Lt6;a~27BOI@pptBIt(SEx}%tBEQ{oiv6hy_@Zw8mfGZk4>IG}*cnxn2 zxLd1tp;X|;=q({TS@z&Cb8lDH5Ng7@Uc(R7S0Jxgh4w#^&Rb}$?{`M_!v}&JE zAZe;?+R+ET)pqT8I|WCFc6@Xm9AmWOxD((Qs~z7agQ9jUISD?U+OdvgCGGg=0yw&~ zBSXhH?bzi+IHFX!kqn|_`6eAvx@2+aq#7kmimaoQ`5C!INmH5+N0c^uGulz&VD)5a zHA1;e+X=rx{Px8Uoe66`ey8Kd?b`ujk`s;H?6lLvUvSPa$}=fX5NMRzR#mShYC<&LX(G zfG~De?b8CHMp?Cq0`?NL1sq54C;%F9w6XP3I0K1@iM_( z1je#7zlVe!K#4s z34TmKj_+za2)Hl7E&&G#endb{QPjRB;MN3xARv2GDfia`(;%nZKMD-cat4p*Gv&Pu zbup*Aku%L3_rs%g;%b=smcFvT8|uo2zKXq}Z@hnh)&ks}^}5l%Z0MWdKYut8Jz4Kg zY!BYxqEr{U-NPNr*$5tJfV=wn^-A_z`L{i42K%VPcvDD;bH3Bk7PUoU7j2I-Ck02Y z1a#Ico-mWEWln8RbOQQUd>?%_&Ou~^9v+rG$aOtie5OldLV<8Nw1xq9&ZRC^nsA?qEliX z2tm(>2SU=Su#nY11QR zd3B_>SE8&8F(_4^UTIdAGUD?f)O8rYMffGUc3G#xeIa!n0C>&9OZ9_z>})zY+GtXp7oE{1MuecJIaMU}!eofFaJH0GJ_5^Sac z`-EVf2CVv?PPPI2qR{3Vup0$iAU2se)Kiab#3r*+{_8@UZ{W~^r}74@e1-~5Rk1M z3}3xUeX~d`QlgQ@PYSk!*d#45CYod6<9gO5%%ity9aW`kb+VFI#`FL)4Or%tfn}xv z%e*qM%rsydKAgo&1D1JZ&@$72WnL*PX9hxM8n6wMy390SnO6n}W*V@}D}w_w4Or%t z!pgKTGYwegRYLnx$Xo-OnPsAxZCRfwtgxt{oQy<&7q>seXf+~MW6tsnRtJ1hm>V~w zAqkmV7%sClawN<1dfS{#0M%WM&JiHgU=AvQM=&jzmB2Cw6Xil?r5+!pt=+(!e>M;6 z6vCjI*>uqlHfe6A>Wf!%hX02=f7WGGRUd zR|)e0xR)>=fVU#d2jD4$`A7v@<2gw6fhN3W@oMxSTSCGLQ?|uJzt${v_dsL@WZq4_ ziY257y$wQyd;snv%m-j5hDwoCuq|OefOiS=0eCyYd;snz%m?7@3G)GX2f};+-jOgL zfOjIy2jHCv^8py2b4iDM0N#Z#AAoly%m?7z2=f7$852tGq=MZE^8q|_DdYq2o`m@T zJV2Naz=MSONCiW94j#b-RUn%#1+H1FeAg_Vj{XM|oU}-Arv-yf!V06PBVQLC?7{%M zBX*Y%A>4G(hI|0ti!dLlU~fDJ+4w2YJ98=xic?01rgk#mkOUDc!U#SCuaFPGJ%ssy zUFw#590Rs%lG=l^1S+7n3wRB(J2AQ6UQRWF^YEySoz5ff>S6dEEqZ++1o_XWPVkVyuAKzc;@9r;~0^9S|-suxaT%9(Zy@I?5oQ`^D z4e;iHh`Lb-O#yosW&Nhw15@zG;xTi0A4Y9Le^38}{z?4`HJhl35MReq=6WUw7T%?4 z7h4^u{=9QSZym?tkZe#yMTPPkLdhN= zHxy`D=Qnt9Pl1s=riR>BpuH|^2*sTR+UueQFK#Z-UdtN1WPgy-@Ztt9*(0R9E@|+R zeL~7>d4rei6;fVdotHZFg{`wj23%T4p?3*MU@0L<2H@iDI1cV)lu*-4_GT%OD;pSc z6M~NUWp!R^tq}8<++(7S+~#CAgj%Yr=B2}k-Dj-GgVRx(@_N4<5y9PL7I&8N`a6Z< zbx)m_%>ApN{tnps&=^SCBojFVBHRNBCcPHQ?t=2B7W^k2m%KkGrl^eItL`SD)latX z<@NSG8vbPa9(Du^C$Z& zhYPXbH^_>f_y0?XiSSNGo=SJkmS#m0{9Fjw#CY2$1Z;jZ!5@Wy2(K?8U^}DeAdf*rY1&7ue_*fIa`yB7mh|&bBB-o%D`birGlcOrBtevLUMb!-qcEAymU6fh zLixTz-npiYVob}GS$VS4D$TXim(=Wq()Y_rbvDR4P%|`HB_d(9Gf3F*$DB|N z6`7OsS@{xmq|XU#e8Y`&%e^DngQk6eSG*HZc^ySB8VPvOHV7{x6fFh3Sn0&eor?HM zZxC44RfXMwSXNqKl(HH!z?-AMx&W*?*6pK|&ta|`Qu!RrM; zq#XAc=u=8Nq1V4Q+S}XTGG)JqB!~iVe8)VC+Q*R=qD{msC18*YOX1XRqI_oAvy67fCI_4%qy5lB7I^iaQ zZD5@gwtXfdh|7r1KovvjbsLPNue}O$rBO;NGU-bjWXq)otq?LYU3EE1yth!LD97e5 zZumnPk|FG>HHoL{^QqjI-riy(_m^|DA89RpQ5IHYAZHCEO94v;vS;ODHHacU05~cO zoHtpuAXdMBhCSs|FWk51@n^fIg7|y=^Lr0}9!0heIq!S@*8E;B;Mh|NKiqmRP5jcl zm-;P)H&ADg->B|m?J4LD56_#j_RHtTj8N$t^_Xfe5gq2!Pw6x-!pu;*z)ex}`$?-H zEF5kIo&h{X&KL1>B@81@{?S^B*Z^6;PYrPxp0YQ!^eelfX0Ke#=IgbT?MRG2Thr$N zlOE%b<{(7EzclTG*6(3!R>H2K$t=(K9gJTpU3=A*nGUSrz6~fGMi$vl+j= z61Y5hviA=}%1~SVpp>? z1~Jpqa5A9{Cv(7XG8rd(uZh&ca-C z6W*Uy%$a2o%nVD?i+N^f&cg1!r2;YkBA6LtBo4F7a55haCo?#5>NSI1tuv9IpGRLk zTALfs-k4-%GMC}_y@F+yn%F%A%dAc2OB{cH!7`7{NxWkP%d9rBX9<=$ZelMNEHmE3 zt`{ux-^4yFSQY~l`whXeG?>`m3zmh##1;-=j9E5Z>>P>K&vp3=++}G0@B;qM11gEt?pb zOGIB%k7hPWoxuL_D*(G^fi>IuJusdjEK^)S>|_U=^s0_o@DlP;?cJckxBCR&`v%|z zFUiE1Mx_=iXTLS1!fKj+>vBy&W+R7SU&E2_zF#5b1;%>iusqx)Pzo2&K^JlF!^NCV zi`IOmLeC4&783T$M<5}3UWhG61#Js57WX7>NzN>e+B-28qU1&iu_u`)ypz2EIqPQ# z&OfypiQZGsFt-NTsr0(ul>in@JT;ZB%+-!br!EYy0xx)DK4PrBu6pT$C5TM#tmDIL zHiQ4LiPyvuWM2585xl~y6|#0NbNO0024+y9vJ%V$wUjIc3VQ_#I|T|8X`qD#*Hazq zQwWN!KgH@;)mE0Vpl%0@&-eusPkHHf2RnO}yRu-CxDmv}8$Sr1$0P!#xGidE3t zY!j|VT~T_Pc7B6kDao{^j|!HWnb>a$ma@wN1O%(rqtipx}JcuOdR+ zC{injLm~%c@l^VhioL1^!dijCR)NA%f#ij}93$Tmx(az2)eSqKz}C(dJ0Oh+!N#Qh z5GmYb!?KAR3*q73PRs<2p%8_ctTB|OFxX72iZtqC(c&zoS*E+>>j;!-o`CHYEEORD~mo?+t#6MGeU!!6uSDY?7~Yv6E=S6QoF-F86U+BLxr$X&VI zB2vRV&ycldDV3A=!+6+^iv_T-8u;Re3<2G=elzB0VYFSt{VD5d2jE)>^8xr)!h8T;PnZwDcM#?S@FxiK0hk)f(g|Ry81kXwLNdlAx34(~((hJVDZUC6Vv z^tG4-QTm}@gu5~zR?Vx0pG&~c6HJ9)<}2WHh?^|!apALo)kd1Kz>LQYc0jZ$mvY;V z9efc8lx+s}_C^sQ-C5vBJi4GU{X)$p;$fjlS)h4*$>1?;@E|_oLHdZtktSG9p*y^iL%mRd_&j?QCOx$6jopzR?@Jj(>(I6pxjrOk%AawYrjT$ZJ371mOhtqso8uiVJ~hZbkdA$|ck|JIRHwD7e`6TP zWu1$*zC(_|aAn)_P-`0L>QLl0z-@YNc;i zEvOyusq!$FCmsKHXfjjgm__bAac4nuv)3oLi@5s`oAlY_QVndEZ@|i}CGG(YSh=;t zJ*WZ8i$HAm;0CPR$l|iDn3^pTT9#oGD>t&ZEMLiHC`WD*v0diAdoh|AGr-4%4YS6? z$`vl|p~S`!wB31dulNd5(H%hJqfcz|N)zRk%w-Lr(}vWfm&`UNK5Wb8T0FOOHToZ_ zvr$OZ_5$Ztd@hUWug+d74&vrzm2tCr)A&U(y`HgzeD^i0(_iap;pd^UA9e6zTW z4APB$tGBO0H(Y(3pd1g$0{td$z(BCp&PE5@eWgHCcL8N6qYxiSk-6Q)A|mw<{GBGlnlYNvYm8Ei`Dq)~VVCmT-kFM=EV!j~XS5~G^EVrw!HxMkcrEF)`4WRMKs<4)Fow>-(61r-g5rBoUl<&-|#ZT7jUh7+k8~^-o zAOWiF(Lh3C8V@8Srtv^RA{q}QB%bj=Lh7e>^{9HOT@!7oj}oN~eUt1YJ{$TldBw=A zI$DM*)x7P-x^L*K7F5(C-&R{{nPyvUQ#DC8Gi*?Umq+bt@9I^Ec=%OXGa0qpT~cGh z7l;Y?Oi3n3dHhe64A#FGl({2iHR476r94Imnhq(75rXzi>PUoOiICb6A!r??&P50s zMyYKPg0)yGYlNWT^H`N41dEZB=?KAMBh@EDFljwjh6ur85vRokBPBp8opH|q6%uQ< zpT~K;+Q(qcR?@Di^vhUtbo!;Lz5A8{r&gi=(&8TlV)qab*Jj{xi5)OUQa@im)CHQz zr4*6;K^I6{^K=;!i1RMDf%ID1i|GEAE67MJF3tk-yh?e- zQnE9y4{ptN!E~Ge>FxR2LcB`p3hrqbB$>XaA+HHaPOd!6-SGItwCJ;D@m}mKYFEy< z*HlRxehRu3)BV!0)D}oamZqI%U6Zz~>!4?*I(9Fv$>Z38B$ruN%1DTGn=UFj8SYD2 z$zibHHn1;3b*54|m(u`(!VP}Zduw=Lm)U|r=}H#U?x~QPmyr6_zD(s5T=186_WeGT zvs0aRXA2DL*&rKwkQh}*a}}9hlQN&10Ew8avO1kquHtgqji_=dTfyhAwh@WB1%uL; zD`rI^u7F_ERzxP@ZtomK=89Qo-~VnB`G6r(X7HpQibTc{G32yfDX#<;Dy3E}ur(4` zPy+K3uvmb=La`MBTZ@H}1e$SF0@W-#*l{56i8%goDx{Blqy;vI>oBc zl$F4760lf?z;dwyft6x;O9Iz<9Cq>8;J{2NFzZU==_;4HE2Rlq5JuZdP`45^UIG=n zA*j1J0fHtJyGIiA8KZQr^VrF+6V#&wO{|nAX+e`BK@*jr9tl*O2tgBzlOSkPaiS8G zOV7*frS_JZRq!4|qC16Y$$pYZ)%AhM(qtvMS}FBv$ryyIC{~r^$r7+wh2(0n7m|C6 z)sdpe`anC~GwpZQbQmMF=a?g+IWne&YAaC*3r_7ays*wfTZ}_hY-rkS7{?`0u@2jA zqyN=}#nsm6hBc!zHhN>tXvapUtQnoP(er9X=WKMqn$dY1-L7VI!R{=KfNr%rTLoP% zwGI3)W(ZWQif!vo zEIc~qE8_#rM22pcBZ*}!osXFSD&K*}=9#bqqnQw#&IS}ail_zW_6U~m;B)gV*yYhI z2r3qtgatsbz;p8~WZ*an#Z&W%-HMr$Faro?cy6AVj5iHtv0E|ACd>eW8J?SGb}(Y( zRuj!)w_>L9OHv9Tn2nlaoEg$FB&b-Z+!7X&UByxJi!%wD1wqB4kVFX}w7_%oQIY}g zR!Nj%w_?_sFaro?cs4RCw!t{G717C16?(YipV*MD^^!45rL!Wl`yTG}D3nX>1MC&% zitRU#o6dQptWDTG2T>3Tge9k9`+BJmrSYBPli<3gY{zEn;m^b9WXs-_;2Oze;V*S} zc30f1fYky!WVt$D?0~?XL?Gd2fgS6m9+f6^PB6lwRi2Ahxg!sWpKF#Vz5WkL#KsI@ zBRH$c7zkqJkqvocMvydSy%&cojsgEM#W6)5RsT}602xIn0b`YbOmS=?fR5&iUXV}L%k|O3XM9VK}WNc;(D(>Fgg@-(V-|7u~T2Vtqs`| zS3fPPQ;EtJI}=fKG>ht7@6`t`c0yEVv9pK`{3D5qE2kD!QlfIjQX-0uW>KZ}UVUKQ zcPSNF=-3%=h!yLvl)^GPK~e%}`6$>K^h^xJpQdWu8S}Z4tMMtxg@_Mg6u*4b z9Perrt5VNKcJViI#V9KqiL>ek55YKsaTKQ5gL_c0j)Ydy;yUGfIBVREJ_UpFkN66H zUBGQ`;JHqC4Db)xQQt$&NJ}@wI}vH94gqj%DAT=SW-vD74s;k&H8vE&lcPl`ZPLDn zOqVqw-T|;03qjG5 zK6ujHqtod*mAOYdy(__a!O#!DEOT(YuA8&Y26`=cfWap+6xta4Gl@+`g)z~#X8qFluPaZ_@;71+d;mioY8iW zZ^J2V7b62SwN8Sg=dDTWACHHTQqKDCL@x%^j^T z3zpiM*q;ejvu}O)B2s!Z%4ng`kmA7ynYw-yH&qMlhU*m*6tXFtV3F--0?JQ(Ux{Qi#z}RiA~p) z)!1Rt;(eQ+bf>aPW&eA)ip4z?aT?+bm;XMTwZq`N1fM|XF%M-uLPo0|!w3R{<7z0( z$y1%RV5~Rm$)wP{!WIQ5;T12%g=q!CcOfEVdf9fs*Xo-&^UQ?9^+G#9Yh1$wM{X_g zrY%^f?X9<14U_yef9P zgh!@{M~z!#!y-dx&_lo%J9Ox8AhaDY7X~r&i%;x0CL?Dvj5^6k-_%;ih#4%G*I>49 zfNi=;)MD0P6qXoTP4%HW&%79x$wi$z zoLtU&?;vwO)>nyu@frx*g%~l$mtqu4>DSqTC_0Y}wN%y=Nabra#$_!bt4z6+mupDu zfUaUbTb4??boN1Gu$%L%*M2T>(Tg%P-5p0X7yhgt6rh)8wX z+-&ehO0Kk$>a@#sQFZEU+cfT@hmnT-BiEI2qxzOd^{q7ds!}%|_-Hhz^&371sl)-RcQ{gH#Ple(`qv@a zE*1j{L%+gz{cL;&`3O*lv|%ctqEtc;;vAKgk`y#<$V$Fe-@=5Tl`EIjsLc-ODvnu8 zADwm+8DIqbB%wt1V$`Pi4L@UKugEDUA~=L%pQ{J&8(>3g*P=^TaMIp&c-sMOYzk{U zh=b~zoenzw`FA0rQD@N(Xk%6tq?d@jfixM~g}s5S|JsGUfvnG~778W$k*t*3)nf;& zWNPhA?-W$J;aIW!`R=L~V?QEGg{%b0enggnL?&}Rk;z=vF34owDw*+q#DK+8_I0uE z%|HKk$ikUJ(z5q!2TWK2U6gM*TafIF-`?USo;UuBZBP}Q?10aIwGHZJh`Ls3D}@=k zMobyabL)gxxXoyUeachXps9rIfG=g=wgrSXhyzMHpyS`MZn`xhH~F{$3gM&vqmtnJ z04G^x2m2=AegqdH8{FN{Ca}!zZwChxxgIsb8&XK%P9yF%1IP31TpnbYspxFG&&oBN z#y5c-YZ3hTX9s5>xVk-O`+B#!JZBc<46)yDP>PQ}rlJ64_w~76SRQx!#{<>?#8pBO6@4x4np?wGx1ExGnfl7JBEP?)p;Gt0DRP84u?6( z1Ntr@*>NNzgbeGMHdek7a1-s)X~@Ka?f(R&#GMPG)@(b!==B)V3?K4Z-_KYlgt-#Z=zgWTy=%zk$~Gv-b(FMB5dy=HM`W*dBP z`5#POVSu^q?}R`(_XN1d%k8j&joMI|c)1NGb|Y;^so+0CY8d`*lorYI@x_7*3#u-a zje0_yP1y&b(9fQQK^FfQ{=@j)uVEYsYU#l^>|VHUMjBu@0yM-jFC(bqe+2wg{Eeuw zR^~>E85d)6?vJ3@vTnq?A9KFAIDf3)*Pq1A{TRX#_f2yy(@;rEVOD6;ToWc?r8{+lAM+L<=qEUs3YcV zj$04*>7R?hAC)xrkRC&_%4lzL?twzJA2ZR2uH6eKJ|rS(7UGj6Y{MiqgA3p&JMzK} z0Cqrf$2%R`gy#a>$a>$J^%eo)t_43yE<_|sD|lNd{qiF%(~A2ut^s_D=*3cqh6%?K zQY%=T%icQhDWJTv>^tT465&uPf}mEgM3=oYAhH$n#+4Z}5g2W3A6{8}v1uQa6t93n zP@W;VE#;mb|GTYPKFu-IykTDFjI;mig*DT@2j6wL#%LD9(J!pEfra(${|o8ip4UlHWctZf-4C2zPt_-WS0{B?h8mP zX(DQ8Blh9Vg8XVd@*_l+YpC0W@D{>qXILt{j*i+n40xr0Ma7}(2l5m$Y9Nkeks~L{&D4g<> za7})XG=!r&3a9*%aHij*NjQARqbH<03a9)eT$A5pNw~EPM|TuX`AN7YzsHks*E1a5 zQ8?u%;hOxONW#5FyF_;sPWef=Ccn=n;a+Drx}$K)Pr^0%J(+}igW>3o!YMxq*W~xP zB;1<}M|TuX`AN7Yzt1P({>*T6N8yy8glqD9Dhc-%!_gguQ+^Vz&aX6WE9*tHJtg#e zYS`C=p_9Ki+OL$m9ok^;31Fr={)xb(>oDg7lc~ep3`|Eo(ep&rQ~eK6V;t2kni5Lu zK$?~9!~R9rSxX1l|MvF-wob?qK=>EeV{LyO5RUgP=<2%AnsMfQ0Y*F4N70w|AA!G$ z5Jtz}CUH!+tL?u|cH8Q3a93|I+;w~og-^`qVmJ~$b#(WbbT2p1WvyzYSIdn^jFu!Z zpj`>5h%0p22hLbGu9e1N&ub1F8ez9YdsiLp&erzm3z}u%+wiY11OE$5efE}ag8C`< zdJISEGHH9_)6MvOfcFo@qmKG`Afj^S0q)2I@1fvsu_#=sX#WA)I)1Aa{-2HbPb&PT zM*NF{U;aMv(p@u)y*(mD&fAU`2#Jj_q&AK$IZJ^#`?8cs)A9H>yI9Q8Z9YmT3TYk(Sr!NZt}px1^W+aRW;BX>L8HipB!sQI;n&_%D!VLzR;DujO! zBzlJesoWJ06G4S&0CR0j=N%>_9K-~(GYGxO`3HyCCjspR4n}}|0h=Y@TPf?$c&M3} zxP<}*8xl|yNb&cWB5qSa!L9-*+DUOP#!8Au+-m>@8x>Hrkz!NKBW_&CFv6Q&Y2L-#vph%HoX-pCKl0m^v8z^j2oEKBX{Wnms+X{+*GM)UG zBJRP0f*n*);IO7s!;n$OHtwr}f?Xg`U<${nEsH7Q-Vi9*xdFwP5h%o~FW_(l6z@=v z^J5JbYNpdswP3wK?<;cGgziv%$Vp8ZLvM;nYM%VLzM0HGH((Kf@Vos zTMnVnxT&m3t3PU46N*vGnox{d)`VizvL+OxmNlUmwX6xnsAWwkMlEYXF=|;83bU+n z*n_lgVJWzfr9dd+5zt7bQ7A?&jR}P=jZI}uDB`lFZQ6D$KV`QHT}Cr)UD}jg3Dv!e zptE-|9<2kM7sH{+OW?pX`BHF!3udY?^czmlb7DWc>IU@3)n+~%O8O8Z9|#{5u>vrc z5YrW|RIkhUvV#CGcW3aM3NJcV++P<*sz-N|ejAj``3`%ls{L@d=k z7R8%2R|yc#z2LD0!hR>w3b3fz`cYHO_I#pd9wf0Zj05*g;&`)lJJKXo^Y~dp2Zc3< zM6LY*53dH4d@HZj?*Uh3uAFRHroX)l;EQw}Yb^&4ww-D3m$W1e=FGh(hly-X8TQ)& zb6!$NuH9}V9l`SbjvvsJ)I16r=p`c4654JL3jyz!8G?+D(axoVU0@H(ZU#ODN7+ax z9qbBZI@nE~ACTwn^4tSY?>urrrumOSPRe~Bg~opdpdDODow==(_LO_~4#2wzIrxsO zKJ$%?lY-#%`)dzvSy~ul$;Nf;>2p`GOmHm+S9@ zsxvr?={pR@PQb_-QLqEfh3W_s)DebeOb_|~B#e_vn-2q{n`w@;AeR_r0lPxNK+zt$ z6Oj+BbQbfyXko*W$_ufRDep3w_c6*KwxdRs#Fe`lH!)s+`5)8TpQYf=b+PHMrksaK9;T z@V=26FyH6s^n@7Vl+PejLYX7IQcP!FYhtnt z{TCz?@!HC~3Hi-dM%xtFfk!T=vjc32?1@rQ9KVIu;1c!-PegRIn>IsVVC=ujz(ODv zDXS2PRkOAy@Wi_n#_ z3co#)w=GxRs{;M~3&8X7Y7Z&m9Y7|_m-=l@#3d@ z6|lNmJ0ZQ)qHL!XIOsp)l~b=QUZ<;t(a)fTh}KGH;v0!A_)G_`Wl0BXpu*WMHhLB2 z;{dU-w)@7HBKpP!+eg7mk!B^}lCxvVtovbbT5|f?O6tR;RNVpnx0o&&tc0Q9Ke z>%o!pP`By#?R;|%c7OO|L{hBPFx%3aO@)V7Q9RP&5q#Ox0?ck#bu5RBF(7PH*vypo~3jSRv1l>-uzY2V!JsK<| z?3QnfABjJMQA`i|Gd~7=4`q}?#>uYT0+SQoN-&V;CTCYxq0t1izkzLW^ z0l(+{IQ;IFykM4NrjV&M_;FxmH3gqV-1>IZ;l6<0eK=_w63EFW*_7;jQ}e%iG{tQ) zS>Hntg&yb?#Dy^;n^qoKKS*%?x)@g3AX|pAGEFSIg}l3v`WtiLHFaD;_L4aLl%f;g%axYIrBD#I0a&yMru&{sV-S=Bz6{)4p$g2SoQF4N~Q5!8;J+ zBL8b3Qg*BjyFDJ+am7GfC;4;qm$iWq&?#QwG$6A(7 zh#Z`%?};2-)0r4KIMqHWa&T^Za^&FDb~PWlI5CZgYaO`UQ*Di0$3YY>>D7L#>1vN$ zT|3s}|8$n_j~mLk`$>FSDH?RUU6E^-}1SDaS2 z(iJ7vN~WzOa53N6>Yan+9Q;)Z-S*b~*!m;&<#6CUB>t`_9c%FWJ%0G4goT~?IJt*X zi(dzRtYyc;?2af|g1v3$R2vYcQAu~#&>uM{frx;z1|0$7_(TXZc7-N3dKBfDfnb`LeHt3l*l z2Y+mp<&q&Tr&t9Sz7a~Ie6W)Kr=#%01KTYNL$7e2j2*FJdeu$IM44uH4ag;o>SM|@ z_29XnHpQ(0pYjY?Zp4-I*hX9@{acZZr73M|`!TX>!F_;3Jsny0leP3~8JX+hj{`xN zUBq2J?mD`#6OB~GOmJBoUB|rvUPJ#AN7q^Pk*4Tg$LKPQ>Nd-q`=E*#XEp!hh{b%B zVn)PHMk%yqUViWpNkC4U8gl-v^!pGruN}lhyOD{O5#HQvqnT)v;}IT|%`>9X+UyYa7^!cx;oL%6FwrPHGh~@<1osq{vKv_^OF4f}1n4g2R5O9Czp9xiW`kpq%+g9s26DyI zU^4U<1gRF2R^l3jjV<33rsH)uA}i>R`MA+!48svO8B5@Zn~dAwh?|U;;fR}z{9Q(q zF$hQ8WSjv<(qvpmSKMSgMpxWqyh2ypWVCL8D{eA&rYmkTme3V787moaiG5mc!_}qJYS)Xk5ILPSq5-+tuS!Cu;H$}!I{E_puy$@74#(aT1XDJ zv2o7^rzzCwc-8hGKb)5<49paMcaz@{!jB;NX-1=|1*#F`ETVt`3cyLS!obgv82)WY zX;7a*b=ZfTpcnk^r(8}W#hd8{W7wz_t34|ym%Oz>Y%lF?PJO{bjODCY$f89TU_a*h{W z2^w-Vqa}>3&cm|}_#6X1moQs*#MC4FMdW#HFN(UIqUMXJ`zVSNowiy(2625d|9kBB zCi{<({d;2dA0+#!!k(Z}D0Sk~(9~uz)EyFk3B|SU!5I>YAVbyX)dGY9(k#lSFp5l) z+6;2LliY9>EaJs&i&_VQBXg?_Gt|c!YE}~JOwob+7e@{S9ZscOCbK%W4UC!a7dQD{ zQje+4q};nG_eBxLy#g}xZmVqrV7N4j8sPH?GbaK25i7v82(BGSh8xK6B4Nl~l!FJx zAS0r4c$vZXd;`9~fG>>T+MeY53G(d)GwJB4w(c2JD}I^fTPS{-U^LPHVe!i>-$L=z1fz-m4~t)B`4)hcjs0@@)IN5#%msOqX+0GxiwT?kzCvSYpF*KvAebV6oUzu=F=+fbkyffi+yh-oJ za`vK6I^3JDOgKaPC-E3o{xg;TEWV(}YW9^M@zQyh19*YdRy{ar{!h?m_2@fF=;sQFNNH3@x;^i@3wRvh;8?UAvaWW|TnH!b(SIC$zv@LZkE9E$3gX;*=04&aA2~Ur;Z%35ZZA9L zTC>#!)txn1@eabek^3VI7TaVm9=_a>E4zbm=heOWNPNZ_cF_7M?5do=w$)L1M>gll zH}l8t%5&$ox$rDkUTn#t-+ek{{%%O%IFu^_9ACU}J9G{H|=B(jY*S+2w$|=TM8b~O< z=RzBw>o}^p@p#&4D)Z~JO1E*=#ffgj{U7MY*3Mo|CQU7#p-j^DX=Nav-!Wo=Lh)nz zp!7>Iv)1c^nhw7}bSnH3UzPBSc-0<3)~tLQP`{jmeio2`(hqM zc@cEMamPzz>@Gv*wPuGnGrN%!^w~_hBjcS8tQ}A_y?u{hR_)Q;$c=iAi+O~?PoNyv z@L3(PWGZ_CFnY5{!9U97?B8bPqH00z03Ip3b~IHH^-@{yG3aeeB5Mtpz9VU1%4d6c zIDV#lx;HCd#hcwECD(f#VyEJ3V@b>jZb>f3`ONjP{M0U7mTAy_x67`eFui7MZ)#OgS@Y_(OnCS|?g|{7i1<&Ak>}Roq=K*?` zB12^B1+U+0^jrx~2{-Tqs8gFvp163&4!=X5__#>;T>;9q6G{1BaA+obamUOdJW(WK zs^cm}XOmL}gW3vYn71wNeJeTvL&$c%vNsPLreY0`Y7U+OaT@l0Qzj6}{vn}$1cr{JYg!R&5iqK9S#X4XqX4PG&{UmDz};I|e( z7R1N#8~80AN@Q-?8ySE@2wSf3syJuh8}Q66dkyIJe6Tw_^v-ihZp@%zp>_{oy(=I| zZ=$1@!dBetz(etlFxQf++=(Iy5TQvpfSiaTFPU%zG9kC@b?SsAVr;?4frxb{x9m+I zOSro+*o!)`c|yD{*%yetftbHowhqBHo!;=3o%)u1wZ=>$?<(j${59N%hj~X`uYUvT zz46-`$r+XJsGNQy+NA$gL^2R1dG<^W9=UfzJt_RS)fnDtt5fn#S&mN_!%v}%rw1KC z8C}!A2I_K`cOgnw+Wl1@_lyR_RUE->q(yA?7dqBb+*0@TNV3|bqbPOgjUdF%=wzP} z-Mi`^@f^=Yaf#mSS8qo`{EcY|ek~>co0Re*AIJBwCVT_n`rrh>?jj_a@cO?TF48x8 z^IMpa-l?Dk7d+~HW~|uhWpAN`Xv4v(s&gZkFSM30vg@@9R$fgL_aff6;^*Rb8h-OI zuN>md)!>igcNczV0e3EbPXp$<-7|P!f%n6n{O-r^0sPkD_Zj?fH@Ed9eh=gK7=Dl7R{;IH z_~pPC-{_TXAY{{I0AZfC z!OISQ4NQP&q_ghtTP$bo?m$Y{Gklgvd`Uh#QQcpvNFN1uh|~QlsQcdtG_)1m{(E~$ zeGrD|`KH|?uxCxMH7pGAt6TJPf5-r6`>k@pUq4_i#kG(1LA2WtM6HLWCNjTI7P4r+ z=ip`;xUU$3em)A_&p@}4+^3cc8z;w7${{iqHI2$SwYNazJ%z_l`gx~2|B(Dv6=}N_ zemTIb%f#`wEpXf6M|S*+@&k8d{RaFZQ)J?QI})Dz*=_Lo4BO$I(d41~9==75QsJNZ z3iu3g0xUg5V^hN(Vf3c#@UK8;o$zhGbd&lQz;^I^(ldLcN!8&$2e$^F0$9P$%U!@I zX?FI4b)?S|n_f;r=xFUXn|4n+iXQ6Ds zjK+FNvB9Lx@2IXFyoy(4UdR`WT$GNB?BI{Uq}-n{li4aD#2@Nujzrh`Pe9qhYk0;< z9`oQ{?b{F%jczg3J(K+e+|Y)m8RcML7Fh;wBA`?bRWAZo2|IWlSh2ctn4^g*9X`k8 z+mNy}2$k4P}CV+Roku zFnxX+8$|{`0?-ba?@~0<%ZLqGKn$!D81H2EhI)mb#YM8fAaZ|zwABd_^Xn2;{&$dd za+QBNcx^mV;}m3~yHMq1%u9-yWaq$zkP=-1>%Xr`iy`&6L&3X@}4ZzwCZ1SD7d{Eun z2@WUt#{?wM-|+C4AAqRK=JXRmt9+L2i9`hgT7QF1>Z%q7M5SL&dwDrMaoR{`4MBeoKPs1OviV0NR2;M;evC-ZY=%TRg z=iQG_;{7n~#2{p~=j||qUDbK_WM~uG1XIgiVp&KN);1wUc#|_k?e@V|V>A&IhQSp& z)e7!x!JT*1wvrFX#>Li0XKFrRP(wAP`y%MB`rmD8pKZB~W(kR-*!Cc7Ziq9w`G9(u zv0#6Xe+S{W4}RPW7THyvhg=EwBa&Z70n+)!LC@&n~@pP^YFxTEguBmkN zU65`$xuY_KF;t7B!QYWMoManBkCgWOcQ zMSj94AahYtd8#7EfmN`Ru#rl7>+l)7H&}O#Y?4IZ#bvi!TI# zSlQsc;Du|}8F>`cz!W4pspbe2*L;)yUeL?LulF4o2*t$3-MC^a zqHz@mecXS+K6~T1iv5nLFOREvj)xrYeZ~VjZK82yJ0!vH1p56MDNj2T#eru&`rzhY z+FO;joQX4a>{r7Pb|5S+|HdY9%!GDXb8qrHmAvOsFSfAi-)qroZ-NI z;R(Bl$86jb4s6Q17+PYx4|UvN2NmG#po{e1Mkmz{#tEW~XYC3I^3KM?jL%DHZz2c- z?D#^!@t~{AQTm15!eauS&2i$na<(%3OM4SUW>3uJJYaEaINZVWB7k1r@%WtC`LDxA zZ|Q6FKMMZd^GNuSgDzvx08_r{VU;`+W6kt&p9I0VURW&787Jj8?O`V=(q=OClm<`d zV3o100&54oG0&u~kjE^EDHYgC=%(Nqd>Og~havw`Ivo=%4-b9-uwl(Z5xrgbLVVtaWK4tCGt@s4C=;(ixy?|IDc+rbVb+71uyq<1z>0ViNdI?msJjfHt_ zE{Vz>OK!q)T!isH_(;E~AXC!lkB=wO8M zAG}?LY`apO??Pv7xOawIoucdV?t=l@$TW)9Y3-n%T0#)5gggzH<+C` zzlJt;@P33>?qzi2YT}rO>Nl)Fzd>)In?_}R1vh$43)wGu4N2y`jz@dG%N;ireO8vk zd@lGU_=nvv%Yc7Dc!HQ{YF|;l3a{c&MIg>lsnupf1BtZ6Lf=u}6nzQG>%wKBdc>ee z=UIn90{(iC#SOH^lQS858my{7gK%C8XaCKl*bVIVWmwc0puxD--2oliufjv8Orj_6^Iaz?!LiYH;Im>+6kYe9kTw{=BNc2LBQaDe3}W`oO7#WX0IU2| zFjlHzJ2(*HrkvdR*}dk?cQ=8Di;aw^sYEC4Py+V}XBE1Mfijkbs;wN(9xw6>PL9(y zg?2o(+H^C-zS7$u89qd@gegCBK0b(}pFD-k$V5phA4zXBbM|d?V z8p2$i%zATrKt7dJojE)Y!Q?v^fcFRNKl61o0dh9d)J3$%CTZoPzO*MFxxi;s;y7vx zPL0dq-(W?PcA4i{--Y-mY5(iyyALIGm-i4%eeG44?s)9`2RNMIUD#F`$+8fB5VR^a zlfmjm+u*2m?N1y2W`8~(_ z+@=<5>!X(Wi_blyMv8a8gYRqJ2i!47S*KlCuzFv_y58)wy;I$mj*#~idT ziS?gtwX_`fvnPl19YFlJWj88C4W{6+J+c+4Z{eN*YYqmAvw(+q3#Uq~djOM;V_PhZ zus%yVJP3G4`2QYsU&<*O#L>DH#EcWtLBi$n{uaV8Jk2&%UA9&}OqT-OOjXCiiiyQZ zh=SZib+X_*JTDL&dm{=*eMsk6Y@VJM=)dtKon!q1PsODJdZ-XP0a7@uYznSm9Uc3g z0!VRLs_7i-`55|M3}L}V%WX$A$*)7syD82*$b7PBfaxnucTfx+9z(|gQqoS<(AL(C zfcWQFp8}-f@k>DD>{xGWI>%~DMPaKkbO0cw%L#xM;n!jD*cTzkT8^jUvJTMm!Vhz;R9|m+VegzAINeR(m;ZUH36G})^rqGiD;T)+zj#nTfRqMb0Hne`7yEXiW)atE%>uLye)w9i#yQq8vF}pt+iCqkLj`L$ zR6WMLVC@w{hsDtR7&5YfbF?6%BP-F9T9qjX_mb+E)Ro)Yu`0 zc8j6wV!FEleHuT<`VpQ?gAVJjfEFRGJ1o03f_h?Tdkqz=g8(sZoz}^Ks6pBKI-qCp zbF5eKRJydl6sa;<1*C8%#n9;*Dp*SZsZtUGQXy`Mp@%h8klQIp*I^B#E1+~f0Fcu8 z*ce&?=ob7?7c|si{Ym>e)}gS${~u*%0UgC1wfz~AY_efplWc?_!QI`RAjRFaKye5~ zf)^-7O3{`gMN5F0>b?{h5^Ez$IRisS;a`+;k%yka&|75ihm~k3hKCBlP$l>m zr8I>9+v89l9vTEg+SnO9G#`f6!atMp2L2aIWK#a)Av0W3G-jtEn-YK_ZQYlmp;)Cm z3=M*RvC0@4GARpTNL$Z)Xvn5qhM_0$&!(h@3%52@7lxX{Ka+A4{@2#f2N=@!jjV98 z(z^V_L-pV$L1P18NIQeffFW(2E}%!8qo@Xw~~=AmOebcu%^!;n}nCglSRY4aBvsSVi_4-9Et^70UTz=+sr7!rGS zxH1!l#B$h!^!>^or0-YuApH!SUU^IjlM(|TC)B1k9EP-In@B@GWflyHBh;rX;i0oM zWK%K);0r$BpG~PwLq26Z3~7n!JhY34PV&$j8iK!-6|J97^TLprgK(uK3~5_%APk8$ z31W1KW3 z9#EBl^=DG@!L|@XHf0Pjv1JmJZ7{R~{v{|E;Qu=~ls28tyfCD(bUc)c#=z6g#0`2h+dT&v0XNs(4m$Ddo$kcrFfCZq`xh2&e%MOIs^q8l8HnG|zJf zX+z;k(Jk6ooAPA4if2rl@)m|nJ5)HguidHjGb!ixskENQ?bnAE@=(4LdcPC!{l?nV zvi+;ldAuwSwcw$_JT#4mR`Sqc9=gjz%4fY_Bn?F=`Cv#pUsZ=8?M|jM42^()Cgo@N zU)x6Wd1x&RX}%LMq+Mt3!H{;&`NTdu-0^E&3c-*zwiXO&{aVqGPZlotRT{e$z~#LnQSA{oyjgDgP9y8GM>p*BEK=Y z3B;^Alr=<>)O*4M7uwxK%*rcx#g_)i2_WLftTa>iBe}|?hZ?P>fvp2ii|{8=?WN{| zE#y$%QlAuMDv{s>ZH=WUzo|vg6UAhqS{6w@CV#3`kd$Zgms$%+QzmQFZ;*6lvR18! zWDJwdYEvXLnQT*ABKeES9<>9KqfGXyosisSa!Bot4nP856+q;)ItWPnzY zn_gw|QeCcsNqImdQ5}$G1rm5lLVNE-L123YXVLpi2O_q+4~Y0N!zUb{scE5e1|mu7 z)-*5Fa3J}Z>;xkEl%hT<%HA|Dku*(3{y{P@6?uhZGLwC2-XK{?#H{R3^A6s=cPN{I zX!CP4jWrFJl(XbXRF9^yBe~1u1d$g^E)e;b$rU1@S@pGXlZcDST_Vv;9uUdQ`X+hhYG&Y4MS>!8j^3Nh(Kqzsd9iPT^+0Ek%6jft3* z;Y2zTNr7*DU51`yCi8<*kj!GTBxo&?jZBsWZ9sCK$?~AhNd956B4`^DOLlE3Qs7fo zJCS5yvN~uFl5$Me2JJ`ElF9m@LrD5D*${LD$z&#*f{r6u%w$K<_w%;MCn3#eK2SID477+21sQQDuA!)}XJ&`_4auXTGq#BXQOllGN zl}TM9%b7GLvWrOzAY$)5Mg;alA{Ur+4DODe2TZyLe~08flU~6+kc8#bmMcl^8{88~ zB$E-ry^&;NGB&smuAc%x#8HrG~Bqpl?B1$kp$<`=FqGx37&w&!(@5zG$e6M)&x(- zZJHg3_(@dv2cJSxipe1&wV7NZ(vit^AY$tz5lK?-5Shs20g(kv9sv>SX9o~%tv(}i ziOGxLGw6B6cw~@49@+J5_lJA+M33-BK77_Ry zTgc0xAXu(dK*Wz(2@81}B(A4Bh$N}uA@4ACmQz+B!t;i6>o`8K3}@Gw}4cSOwabw3So zTK^GQo2FMt6C{qj+S*u~rcX#yB!N_<8Io*F281+6Qi{o-kQPX)G8r1u5=kQ_!$Vpj z=|IG+j0$Ouq!*DC<(H5VNG36v5i$nJA53P3j7746$*hp^NDedkHRLB;KX-{FsdGXm zBYDZ>4B;1!Ah1mb6EQ3CCXI|ElA=^Ly+qGECRI$YkgQ`;)$|6* zNhUQ+ACNp{Qp@xii8a4A&ne0`CKbNj60T@W>YGB4RAti86o#Z7lO`q$l0i(Gne0fW zFli3I#3(xd#iXUlgX92{RwiGFxL3bH#H_S8#e|4!v}serZ= ziSQ~kwg|U znFM55I)}26h*_B}Jh1Hhi6jU8Zt8;M43UvRDW={??xrGrk-Sbt`XezH)Rt7Fl8^*a zk-Y6&Z`9dnz&>$?#NUB9f`8$j?X?ry{=~*+?WA=6O1j zgG9{AD%0;F7TE3=fry_Z^^nN{f4~XO^W;fUju9~z()ZQVrbzUpV{*n6KvIawSyK#> z`b^H7(jobd$rV!qlJQKgo3bHU%H*agr%8ovx{ruixogUYp3_VonaY}m!QS$i$x~CJ zN$fxW5J^;@n;Ky13wz!H5$E~v!rF4dRWGzLl1L_2AYyG~Ct_Ceg?2KD5;85?>6$rUC)hMq?9ipfu*=aHC; z=-Yi_=tU&ynM@A7f<*kbtyqc_<>%1rNNO;d8hR7AMMolu>MxD_g30aBW=I+`xgXjZNk1k}LpvcE$K-kFw@ChA@+!0kk}XW$h4w{ql89OP z7&-_E{JtPAd$r&%p+iH(KL3(E|Ah_@Rbl^l`ZYrjw;A2-|KZL@2SBjsB zJ!}@F;1df(;4Us~K2EDFdm?~{X*B|(z1oTjTZ^dU}84cM^cuF#oQQ48zy#hb0ou=IL)oX z#QrmfNTTX9cR-TDBo>G{-l1$ElB8xL&jI%2F!#dFr-;D4I+06EDw+GB=QfjS=6*RiNwWZoglEDqlx?xvJHsXItf6ut@F{m2vQCuH+jrT z`fwnSs>UR9_!1-yiKHlb!nY&o&ZJQIJ|q*F6b(OwWFeEX;eUsT`>`!V%u2=Z^XS>l zq;vSiFmWY10Yv;Hs$Ih`;XGd?lBD(|a+gUTAmUhl!hMp$uVLpeOvZ$NKw>SW?=9oP zRkPU2S%@U66T{&kfMqX1#H>sQBA$!Z03v?O%G~fs^wejvI6TTc3_PtkwKO~qJB!c1 zY=$Q}iE2uCR!nsQk05ZD0z_O-hj5?2!gFA11ocT&*N5lC)XzY~IVw}oW+37?70WJ2 zlDauOH%@&SdCbc0@B-LpJ&{CpcX$yX4rLdSwQ2=R5pxXvWN6AeVn&sw#nr6GE9v8T4BC6Y2s>RH-hsy?UcTRJ1@o{IFu zR5GU;Sd!2)jy)YML(uaFdpcW2BU!_wt7SZNC=^U+Oc;as>OtaGxoblTx3l zmJ3p9n&m2{@^EUF<(8EC)$&M6&9OYkR7FnxVR&$3By}&lXE&sm~5e zZmG{sO983RE=y4)#vC57l)}!7xbs0vd8zXeOLeL9QA=&9^D#?(?6ZaYoU$~L`kc13 zk@}pqbi~vdPF=Eel~UI%eWcWNOA-=e&EK#LL1HY|JL1H;DfQa2R!Y6GY{FD&P6b=HODU6ezmy8I z9>G)-PPwcnrIg2dK}z|oS25L-Q-13$DHUmbB&7n@=a?GLsTk{PDHUh^7m2a=##`ZS zJ=o{xa4NIalvW%U#y+3TYC~eAvRmCqjBT338i9TO;y(GTF;brb)=W~LLe^}UI>4zS z*4$F6xV5m9Dq$^w#F%^~K(busmZQx&a^q*P^VD=AgQ z+8$GB%jtVvLu(f))!5n#Np|pvpPeC1t^F}ooKwxLgQU*Qts~LXm_4nnW2Me*t&^ox zd+Rhz_2*Ov>uf32$+|#Fb+InN)X$viVNH=zy{zk`R3GbROfBbBU+WGj)!%vmiE(92 zvL40MZcYudo{~~StQVzJvh^CKZg6UZ^|s_0X?={I*X$WL0_RbJm-6Re-5 zsZX?qSj0YW%=08`xJ4WnSvfVuYL`4eTm9%M#h%&LX!IDz&Kzq-DK*!c6-iAkuim#X4F_ZMTlc)MHNVuuhUv zJFPR&^N~Hft-nd0J=TTjNn1hR?)$CFB+misYV^dg=dg8y-1(I?fF5H{cw^0g z^U+!iJvG?#$yyFQ&Dry>wX!tz&(>P# z>A@bwR!{Pzu{A?tENO_XHKs;z%4F*xrOdYONM`cr?{=Eo97v3PqovJ@sc$*e&K4!5I@;1B84Mn6 zf9`C{EcNMX%Yl6+aG!3ryi%X0{m!Z0w(?S{udTY2O0w0))JjebvelPT zLu}2F7$5a(gEw!DNQh(YmOQ{sw4NNuV)C${ODYeS>R7$P3{e!61z^b&~pAv-Obr+_3eP`rNS%#6H1Q^nLY_ZK%}escnqZ=eg}ism}}B zWbEVTK5uQ)q(1L$bEG~WZ3{4!lT)8;OQh6i+bSvbpKTqcDsW1*ZKtQF;}A!|5%$E{Lmgiq1?lW|^gLisdb>yRWVA;kdCyZ%u*YL6w5q<{Guso; z6AwgNiY)eA=*iEXZ1((8=N$IpQs-RuGMK8usXX?IQYxQ45sC5oqJaGyOf}|IL3=|f zRm|QJ$+tX*RqgGN3}sTo-WkaRCbjL|k^IV}fxS0Q>rWusGqgtb0q8OA51ZJNkr>yV zX7*8-+Qq4s_Hk0GwS5Ybzj<11?b9)Ji&Nj(e?`w5_Vl#>fy8(%)62dTQ^D2rIqYL! zAx*2FeZADDzkLg)qB)gh--(`rK(uW-(0&j-RoFAsehfWr*pqBOi=JNW8D_tPp3&?X zZoh?|Y3vzczmFc{HONT&bM&lW&yV)k=-I}7Cfff+a)`;#cGW5N@Y76wv74OYD7e9W zrrFb?$Jk!e?QZnEXU|M~gyi|vo(_q*y1q8%*fSxCWU|7Z4f|vRqU{@N?75{r>+FT4 zJ{#;MFjaw5JM3j8&u)8FX zuDuI-7IWu&_Fm{&$DSwl{^&Wvo~QPq=()z87xs}z-lQTwVk&J7eI35EPeo4*5N(aU zwa=71@9gu?lZQQ@?TaMO7yAnIRA7(dSc9GhJT29+1wC!p6Xw_{dCZQ3=;_6tw2ouw z8Owcaj!b#{5J%(z?Vx|A{>ThePtjI3keP6ZLHo=ZL{n91v|=q;sT4PcHVPcVt6S znn^}SZcHU|Dzl@2}JI9%IkU?Wl^xIA`W{)Wp`T(`w{cfW*P1g<}c!Ne@KZIxQV3QlHk2bx4ePZtK{LsnVS4 z;@Bajx;hR>sqT)Wm}<(Y-i}jJs;}cB5@UPyb6mqzFHQ|`+?G-U9gn5dAjb<#jpNi1 z#~Ue??D#CDhC9-@#U4J7QzIRr@T(@N@9;-E>_|3(NBryz`N84A)B#S7bwo<3@s4;Y z^`j#JQ&%`O(~(_D&35FMQolKhVCoB}<~T}9skx4dQfj`V8m2PT(zo&gM=dF}$k9+r zEpaqMV!VH`)X^II6yZK8jt)|vm5%O6j4imz(Hm1WIJM0&KuYa!BulAXj!~Fu&8Z`f zaZ>7-V~UhI;h2u8UYt7V_*F{%?f64VopCJ1)M!qfbF7d&=N;?OGn+kE99tyMRmUFm ztYgm&$3e++%W)FPLGWn%&qK#qOr7P_BgZB580WDkj$2ZnXO8=rddjJP98aXwE5~c} zSZnLs{f*;;?8Hw2E^z_7Pv7 zs$CtbIyXptsyTO{r#^dXIQOE**rO7iN73^gd+In(p=S(FtFH5+l&a^vhN+)9Ro{7A zntDU$VlZO%JV zYP<6xrY>-5m-CsF+T(nS#Ml=5oS!iDhEw~U3jB&}>V5v8GYpB5I_$Li#F1jFtM5NY zoi6lb1fs3OW6mh_6lTwHXPo3Y;mnMl>g@U3nM3lNb{0TS2lkwC7L`0_on_H8ls)I2 zmC$2cK`uCJqURU(TyoZxJeQqK(UZcStIk&F*$YHlu4~Rt=sC%r8_sT$=ccnSdLFXp zj&qJ&!=N$Cp0HV$FKh8zyDbAkH z&Oas3f6g^X>T*hPZNyYtPMKZX&||FCaMwQc3}uhiby)H^Tz?}m&Ll3^c_g!WT0Ykm z?6ZXX_+2-pJ`t{m=-JAiDAzN|6YYA7GTyIfK#k1Gm2x!9A>6^EWuK(sYqz?B(EO(un1IWX0lQ$<~QrOw4&MUf2R zR7qDUO#Q^E(ysDSs;sLzlEs`V@2ZWd^_;5csxPIgxSAt5!l~-6Hb^crNpy9@K99Ih zO;=Z`PaRhusZTvulGLYxYY6rUYM`&xhOQA(pC+#HQlI9oNm8Gdu3xZE1ovs>nkDsV z2o7kIR7(ayCPQzban-nCpxb#$$jQk`9!Fx7xl-CWzH)OW7^QmUux2&Q^)s<-Q; zlKn_V$dYO5=gl-lmfhAB%!eNWiq$}Oe# zxe80E1FjO7O5oH%S6L}_*i}_Z9d*^jR7Fl5ch!|rCtXdY)G1dhOtsYcrCS`1 zSoYTLf|y##sW$FnQmVbX9Fjxe(bjWEcV($hXLk+kbCLTDao3UhB)c0+sp0Mxn0m#j zk?yuqYP9=XDK*yJ15;@m>wC+1cV8(r!97??O>_^(R05|axyMMJ$?l2hDb1d#?x|Ae z>F!^V7+2w$?s-Uz=h(ly7h#_|+-I))PxKg{`Jd-rgPvCGS>WC%O>2>RCz2lE(boJ@ z_dX=X7F_2(jC}@kpTq7GQlI1Q^HQHv?kh-)tHV|IO{w#B_dV=9lRMvVKbAV*cE3Wh zis$gI`#ln4pTFn+jD7ZVpZo4KQD5I9J#>d7G5S1q+oQyBag9??+#V_Q%pHy7Jx~3G zJ04RZP4s=^r8_}Ny>jP5Vr;=T?);dF=F~fP5h?Z2T?UCUhyS`OA~BZqv%4DhDZqWc zxNAv$6i-8`Pa01%OeJzE$kSR%nLM45GzX8iCzw6mk#uL0*3%pN4Cg-SJOiXY={?C( zDx+rnZr`c23vjROY zfN0BA#IqhfN>hCc7V~UDk8wUM;n{;E03Iz>%5xA?**I0nb4*HA@tl=X)jXFlRe@90 zJ=Y~q4bOe_G-FR)&lB_*?=IE%yp~c8Js&VNkW(!@U(jPLMJtafAdUj#l}lSs+JM;S zCv&QU$AKOr)yWefrM~sVU}_nsx_Q#0$GAJ~?#YIp9qj4h$t`v6=_!n!^X%#6DIt0K zcq$-y3Lb6E_w!W6)CW!t@YIx213e9-)c2mIm~u4JxAI_5EA$vg zlkDk>p7QJ&<{2nWeS~K?lGfnS=6RH745kKfYOLo+^h{>YIL}n{%wx|)&rHcP$ukc< zTiElnXOT4ZUpy<281Ioy_pHIx8BYD~*(jyvd3GXs%=0tfvky}rIknJpSV}GS{4Gsu zspmYV9L@Fh{Fmp7lv?AtgCsL}wDq&z^AJ;oIkn02OiFF>yp^W4&GQLUH9582qeOpw zp5N&SLt?CrT^?(+*yr1FYLCYyrS^NGq|`xA9Fk!?&xbr2vCky#bJ&wr>T}GKSL$=z zQ%LG_!c!dkEayHaJ!Pame|xG(ea?6iF}0UdXFcCYsq>yDQtE=IC8jQM>XN6Ol)CEa zDy6P_dLnrRDQ$b*@btqzK`r#He9QB_)aQ<8gw*Gr=Lby1aO%Eif|Ppb`9(@S^31|i zK~8=2{4S;b^(;nWoS*;mEXPy>PNnhwC8dJBo1~P+y(*X7}F5KKr>(PVW<`Pj2sPsZT!d2TVQTR6*|-DOJR4 ziV??!v3`nq(;_jZUdro;5yyq2rM^wed%fr}t_796F-VM~sfsr}65~Fzsy8$C$;W-F zd2>j861@eaR4s2&B=sSst&KX~QrM>>_i5@aFZF5Rt&YT)pH|-5Qs>s*`q*a__i5v8 zBK7IuZ6l>Rc{?Im$n(?1+ZD-XCVjj;vGYOh+~3YU^qg2Y&^@4X{1b(2%c-XEmY zaPK53HPZVFrap0MjCYol8ta{p#8?~Sy^AsBZKZG13Et&WYLa)Yl$z|_gd``V#Lv!< zsow3_r(`R=&n)jAsn2Zh5%kny&m8Yb$urk`0f})3GT(a@Q(ZarhxeA0TI_u!rIvc1 zBl!VR;%8^bpWfHl=a*Lc94_~Mkov&8AhF^oFxJm1uPIjS^Q$y}dM zy%9(bK}!7W4B6z3!9M3(=~Lg~O)vG?<%K_}_|??+cynXw4X5^b3rML0-V#WRZE?g~ z7E{jF`m~ODD@m#2-kRvi#-6{ubtTUkZ&M`3+BolRg{iWfy5wyyr7nBBp{Eghu6uh) zo}1o*NR0J!$2$~L-8uEhI}$x(fry`-A&C zAMYacoM6vu@1K(At#=I)<2Rl@csF9|5vTt3Zj(}9y!)h-;ya9~G;Q>4k;ZpIN(KAQ zOQ}%b6-)&}R9 zd2;*8A~BwCj;)FVz6^HrBpC4F^~7{6&!+Sf?xQ_j~M``Fs*%U<2rM)K6~bwN)K z_SE!!Crzu4ufH^{y1qeDpL)Jw*e8+uH1Lg<`ZVTY$cwcBbvCo(1)Q>(3dW`e@Pd*P4YS>JMKLDYeK~5{WVO#lCXbXDIhc@l}@ktnk%B&lL7-^3_AnY9QL)vf0-RJ$u=+ z&DR<|#_uWY@O4IVg;TqI-7)owQwMy#rKunCeUHRg_9MPzOqtv3Tjzvtl;k<(n}Edl z^!^#&6imf%>WXi=G_7mC-;o&W=eq9?Ol9TNUEfkEb>H_F65~wr(6=5_6*=|Tw?#@l z_3c4oJo9|+JBX>~oC@|IlTs%CStQ2uu`vH7O!eiI!+#w;qkw2z$LYV1o+<2c`JZT= z+2i)VM$bC-c>N!c985*j_^;3Ne!m%svFuTPTf8_5E^w-_-z}wz`U6s`xIZ1HUU90F zKa-Ryu`Ws-XDyM4u zo1&*35N$oz^|wXRi%A22C#iEIe>dzinEN#L_mVu#`~#6p<~}X_Ly;KY7|_N)68p^K zKJENtr9SQblhL!CJsthi&|_?`PX0OQIm@0A{sod}r2kL!{KKB9{#DYnrujD_F+TA! z!@mtvj*j})nd9G$9^;(wyZe?{^v@!vsDefIq6e~2FA z+?(QmiKG*FwC%Oh{}xkyIJM6I2|Z)kv)&(+UhL1muxFz`EWJ1i49_ON13fA1+3feC z$C&ySe++tdu;+k3z2rIU&xYg-PyMJrHpWsgVT0P+}D)l+#FN-7!Jlc|; z_E*AG4o;o*SC>-f{B_Y&oIMx(jU>+{e=8(4x$_l&drYGbUi#;v$2h)T z`IjIuj*B<`6in^nRECJvQYur#W+|09Vh5(KaVl%XUMZD5;;59$8F30z?>Lnw;+&Mq z7jaEW6^OWvDSu~uPbd`eK=Krhc!8cQ>?soQ20bN#X!}Odh|lP$#hy|TX)=gC-1u#s zG7;fO+HtB}ggt{eF8Xk)e1u0zRfvd2&yVb>6cLXeUD&l)2-*TTd5y?n~Fj*Hd z3dtlU>m$Y?F@C>kL&QWRbJ?>oVk(lqm~4)iiF3FUh_+l?BIcmSn8U3Ri_mk9Jv$@* zlsvm4)}ZGNdyYkHL{Hea`Z_!wu@gM-w_t(5OI`TJzq1khGKg>L%RwYby-1`algknN z(NmMj^@sx*#5Wl>A!1gZMjXr_zFn{*kmDJ|HwQk8IGh12N;f7iBTfN<&nGbX5OEs% zIFt!YK1Q5J&o4|qMchO32b1W?2e4dv*hBR?bgn2IPF#TpCisx4QdnmaNmqgc`iB4(u^5V2etiLCV(j0{0ilu41u zFeKHO6pKuYqzRMakv1e@OARK{A?2`N&8lQ<+qZj72h^N#)248R6@v zmE}ORHC8n;4|+C{$E?%_BEIQyFL}($FOdb1{LN%`WML#%naqtWhU6iW`H>}&yl1i@ zvJ8@-Zraq%%Av^eNL);gL{`H2i3TF}pJe~l$f`(kr6M(vlwxu%vM!RUsYoN-It`fI zjBJUXc0g|9p7}hoZAP*84oO8iWE9_@IR=RMfxmka*&S0;+4CmyJ0!m|`7d%Pl2t(7 zV&|}^F-X=ku|@rwQS7UGfQTRXj@GD!NKP>c01^AoJx;{{5#NCNoIFWtT-2tF;%`9w z%OswNrMuQSNzDO7^oaqY%}?&A&6vu@p4?G~krZN*FX{-A@=S_EokWtzq-50J8Rx-d z>H@K36w|8=L`H0kM%o!etJYbM^6qQ z;>WD?jQS^|_|Ee}?CBTv3R5+itc-e_QGC~ZS0)FeKA>k5kr@#OqyEJ{bD128`VYw_ zP92R(lS!<@Gfa*}g&=v!lo87_ltt2z$b|@NpaPPC?6CzZBbmd*9;k+72d6xNL?oA(_ye_( zyysLPP#1}#w>Cc)BBBEgkmO<#8)%HACK0oeF3=2#_&e&_@f9CviEI9QCYb|m&@+)p zj>s&5_DB|`BAsvxZULfg!K{IA(X)^H7eXJbT&%e#7Nj z!K7VaE_!wn85!9wumH(%CLIEcv||v6*11z)DS94qpDuxANWL)nHjskE*-u}Jsex74 zCnFH8&y2tt^yFgCqQKfr;#^mQ$>P9- ziJbZnc$!Jv)6N6Z6t8+81J5(5a1XEoNNZSYiR!1oTO`|=sL?>+oOzT8{Jj7o=b5;p zKV%Yj1vi0+pCq+(v@b#2UA!QYs5Xp_Lh^-43nGpIS}IZP0z~wQC6c6e7ao{;ZX)nE zjH1&cDZylXbQUC)m`sY!jie5fDbYo7>TQT5s!O9wpr;pmRudV)WKVQUoS#WVlGFpy z-4nzbn+HT&W5=U=A^DTZO(N@<+#|A!$zwraxlRKScPVD&JrJ?%`o5Z^T4P2dxdtBb zlcd^++-2g48H1jeOd?}`K=O`Bbj(;>(x4=*k6DS08He+n7KoU7qM9Y|L~K*VdbtmH{jE5%GeQjkfFn4gf8WKx$%La5%SArZ0cTIa?<#QLeM zPhII4GZ9G>B4!|yk+dW-DXL4%&q%&y@@>r21hLQe<5ahpY3LaZq!+IFZZR_wf?--e z0TDlDrEkn4^vq^Y|Cq(N|12R-qPi_6e`c|VZ)CEc$Q~w#iJW9|n#fHiSBbo2a#IkP zpD#q@Qzy16lC$jjCbl|~w?xcJgV-8K)Ir)j zo0acl6Oq`NB*)f762oLzY%L_&m<*4tjifY_A7kqvNn|o1_M6ON4{riQ+YeX7)4oPe( z@)MHcsmK&0HB*skNV=sWvyhBPMdl!xn2O9tvM?1{gk)1HvJAeju184nry|dgR7pktLDC`>d5ffXD)JG@kEzHPB!8qL zX|jm3-;Pwolto+_uK;Ncvt)+-CmhL}RK%7={FO;-GR?EHC)R}|E0cY(9wgCEI%Yy^_UOb*9JBDu@tXlx7;b(n%bX61NnY!)#X!{k(Kx-4#0QA!YjzvdYmkEyEc z(MfkE_hK`kXA+b9v6+ypWbz<3Gm=wG9>-=y@|4Nb*z8EchU;_qJT@nitW5ri&5fiw zlh?6%kaT16E;b*M8B9LL7DBR>Nt(E#NbWN+#T7^LACu6yl1Q?Q(B~&Ct~8QLOwz`c zMbd$ZHLg68u}o}n6_G4p;)tt^WH%FMTooiYnYiPsAqg9)Pdy?o5lIFnfw)>o$}@?L ztAnIHllZv0NQN=V5LX|`0wxJ@4Uz0)k~OX|lABDj$2CFnnMtm=W=OoF^f}BO*8)jV zCi&x9BWb~;P+S`%BbXG4Yl~zFlTvZ*kz8U@Hm(B_%V>RCmEt-fDafR9To)wmm{f`D ziewU#YH{BoSwp!s4*Gn1Ae z{f4v?X@An;q*F;3k!~S9Kzf?=F6moR%UEr?(WKc)i;&hLZAsdZv_I)kQt_8e#d1!h zdO7JK((9yeNz;y_k~f%haGKq~qOF8T=l+okCc zs>h%jeM-P?k^sKRz=ev}2h4Cq*t4X(#9wEI%`iS%e z=^N6Iq{?`$pNZ5;>LHCJO^0gChuE(R!hB=_E;J`;5z?}xRY_}+HY06I+L?5Gkm&Pu z|Dw=W_=WZ+6~3a<@l_JW4}kGPCy*{6T}ir$bRX$?(wn3&NI#RBf7JR#k!B>#L0XWs z9BFmZrlg%o`;aD)4kw*JI-7JE=?2o>q(@25linqLLmE6mn@<;M0%-x#GNg&5ElGQk zjv$>#`WxvY(!WTzlb#^GO8SWOJ?hunuPkhjke?JqsFO56nm}3__3Ko`t^L(hQ6PH*OvCvdcZ>` zDvD4Ws+QBw|BZl;Oap%r64VFdg~pL4kmg1;mZvDx&A?Zdv<_)&($1uPNr#b+C7nw8 z8|iY=wWK>pkC9#^y+!(j^do8bByE18QH|xx4RtG+&tjyNP>u28Jl77!*9R`N8EHFI zlhO@zfND~bK(i?(WenAmL91plDRZe_3OWgVt3jiHZvrhFWKwp~_+y}FY$oMAsOUrI zZ{<4FgVZ|7Pe5(XI?3u}O?{*}Nh^>xChbl-nsg57TGGR$H%Q-;+NNmz(~;&UO(bnc znoK%_bPefo(#ND>KWqImkd`8CK>8i&aMIsM*OQ(heSxYf|ABVO60ex1DoPorsyIP= zK%I{2{GbD%u0VBT&}69FQr#2u2dKZNdMxN9sAo{U3UnsayQn?~IuGibRKEaS2KB#G zTYgcLHBhGm74uUBbSum^)t|iP^;6l z{t=-6K%Il?3ZS2$ZbWqt(BQ1`%2=uwfm)&7jy3cJ^<_;^Zh{7~nv_SNaiE_;vt|ua z?9;`58>IL_C#gY77SIGGNGS?h6vkH}UWc>=X?IYO8vts9^)L=}0K9CRKsudtF=#eL zRo0R20-XfDz4%;j%(0fdE=GZpxKmor3q+G*#A3&rU&f-ngBYO z#{U31K#f;^CjAX`64ZLW@_MaLJy79mLE4#kU(#eyn=@V+2f7}nug^#J4O*@Msot+7 z)MEZ>fx2OSbguW;=jRlRFB@dc&kf3D+6c#SK4UuKyd|bz0JxaX3ZNpV^O{hL@y$uU z0~OQPm$U39aoof!)j*qp%FEXUxad0&ROH5hmdhHi{6cl+&Eh=o6uM4&CwhCH?$r8*kftSdka|gDNi&h=AuT{!iZqe59%)n3Hl&?Ndyw`g9YQ*abR6j<(qBpc zB;7=Mfb=x!ZPIt7A-lBYbCISa%}-i^v^HrA(ypX~NhgsmAYDbeo%8_dY0_(?4@jSo zz9#)hYTm8QpNBL9X&%y&q~%F#k~So5P1=F9H)%5IDALKKzmYB{-9);T^Z@B8(rcu5 zNS~6vBUScj^PiT~PnwQ24{0gVDx`HtTadOP?LgX%G>LR5=_t~%q*F=flKx4$hx8=r zIntY?&q)6x4cn_NhmF)n8cUi$nv1j$X(`f*q}534lC~mkPuh*NFX=GSaimj8XOhk# zT|~NqbPefl(u1T&Nzb7g_X}^Jj>-?O_ej(3(`p}SJZU!4+@z&Q6G*c5qzg&^BHcxLiu63`E!3~)I}Yai32>n=Nk5T>?AN&HBgTvQkIP>tIUKlneUyQ; z7-JbTR1`(i5nKlslk<;C%cqXvX}76x#ts$qpJ1D(*9jfab{$ z*9B1VI-o6RQK-MCdJ1ScsOM9?9<(~thpD~_S}(t<+y`w1`T|tkF9sjfG(f7~SLTOW z+&@+Z?U3K3tb+Rn@j7(uF-@HzaGfh+QYM%br8B7blyrAc@rml*pyJcl13)K(e-YgG z>i+4J9|zZq!7zRv)WboSgANIfS5||H>+)9eodf-`h;hAp0d)tM|1Y4Efu}vLC{xU; z5(x_Tw_iP1E>yHZ@{1FSQmClGKR{g^_`js;Nv-}KmP7CiE=^6uJ)~lPFP^H8sLOyq z2aFdgmcNWNz9MmN9I7!tqE9v8Utsz|Yryzw)JHtG7SB^_0sjVgtyH`b)b)V3 zB5g<7iL@(e57NG*NvOv3#dD#?&__IP5jq&g3ms1?mS5BhNEef?C*4DOg7gxqNx26q z_LoEH#QtSc9zs0`>Q|tmcEEj~cs-)+Kk&MnxW0e+V1I-4snj_o)|*Lb1Pbd#X$v{n z4oXX?#eNlCQrriclul5$C>o^n1T6)x!$yI&1>cXLVm_vVisvPBK*jS9v7H;k_{C6n z09^xG4^;2B3F^*JyRzbXSN1_I=3AR?kn%Uy#`N_0o)N4a5Bl`=>4wnpBgVsa#|?*^R#^);+b$_LPSMd9@_ z9B+$2|AYEZQ2jW!o>r7qQ2Rl*fMx;}(=7~I9q#uVo>!FFCE#@c=oaYvBdE9^o<*v^ zt_i*%=09GsqiXw?cK!E-Bv&PENZN+93GClHO2Bh2sP}^Q0X+&j8uS$C4A66+ z4>O6^X(nYU)PvMu<=p}?AHm9geEncjjsO?i=L+dlQstt?-J}^w3zC*6tph6diaH|iJdYIlUvt3k=76t1aM9=M`KXgT7`duU z0qtKBUPpn7{ckg9GStVYz5_ZI>ep0Vhf_TZGzIDv zRPP5}5A_wQ--7OdI_*`hUq;Y_Q0J$*66h(Y8&ll_^b*v`R8IxH4fS%W4}v~{`Wn^R z@fNQvy(89Nydqxj9w}qI{?_?L7%#4Ww?W^)_}8ExL4)opFv7?$f%+UAmwIkD)TdI_ zuc7Xl${&6Y)(_NKK*jX)g6>N-z5$K@k;cyky$<6K62C|M1=ZqpZeDnut3Ut9c3+>(4X(H~(qy6@`9s?tk;E55)UnvR_rQ0~hx-MNmyjMNn~muSqJ- z-(o*(2(`F=v;Y;yeK)H6k`4hC`}+v0eMMqW53q>i}_d!T+D~i z$*{e}^h^)M>wn|?=z@B4xdzFRr17LVNb{1GBCSeVm$Wr$H_`#5;{6uUcNErjk|%?T z<(>sPNX@JKPC6e|RTklRRars04pc0^c0CMIUOy7+DM(Qt!}H*BsuBtsTwYZ?pyu)o zk{wU9{&!0%O2hId#RIj-i|bvp@`aS(r((GaDQQVvsKH7kX*$vb(j2I&av5}Ig?Qx& zs5s8QfF6Q6{Fzoqf&LA32CDObUWU2^)iprxK;4|`UZ78*9zyj`pl_j`MfEb!|DfJP zwRYSZ_e;M;D9W754U*sdqv;n?^DC{6Ak9Wvh_oze71G+MM&HIzFMz(yNjs5#N18-B zlJqCisieP=E+$=0x)#-#&Tgoez;wiQSLh+C#r0RzC#k+ndXMxO=?BuF*P7o(8X(O= zT9~vnX*JS@q^(FhllCJWPCAiv8tGip6{K5GjpY*CB?abxA8?_^NY9}fzN=8LhVeH@ z@1ttt#r?LpAKpOYg^KH*(5K)N`X1HjC$`&G;G(Zk(O0PGyS1{>H_aRPjWXb3eeSAk z+#l=LLvbIm0k{=>;(fX(QvJHA-%soQtT0|2&jm=ua*N|l^cPwRxH#X4?Tmb>cAk4d zS|3zg$MyRU{l23D^((zz8?R4Kzi-f|TZ4RJzQyu1rs=gN?M$lQPw4j>`h4|-@#4Iz zFW+FO#r){g6U!^kuOrBJ6V9Ka7Smfz>rd1_NV!Q+FM#p-{Ob9cz=eMoTxW#Nqk1u^ zKA$U~7WXaMbmEnbP#>ub&ztG`_Yc&!Q`LFi!uwxUjPc!}E)2D}p0-ZKR{2Lf)%U`$Dqc{3Rk%Nf z`!4Z5@ENGZ_P<2Bbc42j??5e<{{^U6{~u8G*8{NLKEU+>`nW)cLH`8M(N*J>VxZ#u zTNiX9)a|Jr1UduiiBvBJod@+6s?UHfgZdHGAs=D6q4tA{ez`!mLS2FCmZ1Bf?vJ%` zoWYmjDHp55@rkN&@%rMzXGOUNydZF)kEyOqbyLy~q~DW{C7nmQn)CqaWzu(~<}_M= z@oU;*Iz>>8`KS-|ZQyN4dysyQYWT$Y??L~m{y*zd@LpooEb&TJP~ocsx)<&vWj^PB;Ya=# z{)u>|V6i;$NP$NxIUf7VtkM>{y!WK`|mXIezK~37osXnYiO_YH-Vmq zTAbI!>wZz|uiG=j{n>G-Q|C_CP?hW8ze@S|L^#iy#C&LiVEPpzcET2+$;`XHmTlbU4&|sHXcH}(CSo+&vl7ffBqz{)8hOuuG2zClWz*BI35ns^E&;ytj~{r|MCAC zuV0__>u|wM+I8mtkE_aWFh3!+o{eDbe z-}?I3efs*;^SXZ;cCGMtTuc%+CW-eR}$HEAd=U zj2F-KguViwSU%OOslL3SR7aEQ&#`hqE#|insF-e98efg-x>Pp-71z04a2^o-+Y;|V znhYxPA#h(P#=~DBM4e8$fOIYCUeeQ~w@KfTntfUx{yHA^$wpe7v^HsLP%+(Zr0^Hz zu+~3cHyCQMeENO#9ID0V@WgSKbG>$4=()u(UaZFnChht0I`Z!zew6eA=}k@XdL{0I z9z)&wn+D0RN&h3Y_%+_z3iqQhegT{ZTYsaS$J)YkeQ`fhE-QTQ5`02qNHdV;B`r-_ zjkG>#JJJE9qe!Qa&Lv$*Dn55Brn8aiy`-l}uaG__eNP$`q0OIroZr1eQ# zkai^POFEo%D(OPf^`wVLFOc3ReNSqN)aJ)Ynw~U2X=&2xq)kXWp{h!M&<=3E7y~NK zSF=ICgL(6^+KvQf^L9%Kh+ngzC-nE(48le>Ty)-_hWOR z-dh4bpGSI-^cLvlZ{XYt`V`b0ttx5inv@7oPhEHp3ePjsHH^pgB%Wi6Z}AZ4S^aZ5 znW3%?<7M6)_{jeY7vJKr@&CeC0)G!&?|TaB9F2@x{ydTH)45*jswAjNO~@yJ4gf78 z6z01UsJM^PKbNFEA61nGz{>_TNKOV7&m*Rg{zkeCRXcw5&rkPn4EGl{Jus1#zD$kxWAYW*SFCyzDbjK<#$lA-)#kL3-wv5{{ig^wK=OcJ|k$~CaO}9 zv^1!=@73=ctHODIAo!EAt4g3*yfTXP>{n{c?|tBfnl(s%M*4;{D2L#hPb{|&>f+$b zN?L-n8fksfPNaiKe;}Phx{`Dos@7lsJbW4Ge*(DBYot#})tnmlk!B|?Puh&MH>yc# z29M{(`F=XoLiOvae*WJ~d<)#?)^BE<=jS@$JIA2b-?!1P@A`FJJa-e<1^qeC3h=iC zzqp?g*Ae}BQ5v|<64TvF)A=(O+}ptW>YG5tb#WJJA>|Y(Za>hSu)Q9Fiv8eU&_hsL za%*)u(7&NBN_7L!%TRZwIvMm1)HA4F3;Go5LsZ`aeGBymsy%t&y+^3Cf|haSRmy>e zHP`neRrv;L3)GEqysC5p6`yPE3+e9_IL3* zb{32mpKqKG+PR4FIlL86i`Qw|ai%Jpuur^Frnu+_uS-F9wuASPK*jOdn7ID=OWn7M z_*PQ!en^vM@cBu6&JwTO0R9B}JOmYebY2F|ePTNL=K_0CJs7ksylxtesw(^7b9#Yh zuuh>C$KRX$+ID*lbx3{If8eIye1)7Vr6lqOT@jm^&_V79bYH`2Q0#xiz9jLx1Jy+~WT>L(V@Qe5Hg^K-9 z=s+4jf^-b&RMHuw^GTP2iv52r=`PT)=0VCKP_e&11{L%31yuA8Ev?lNprY14XAn!Z zet)Jv|7=drK|7Ml%QKXgZvv_KeJ}C4H52p`ue*)|7xiV*JT(0hq!mbOkk$j;>xT6S zD(0^<=xtcPy=nX?;!{Ay^35e(4*C#$+ewcTzYHq++#`JkDvpDXpklp*meI!hNV9+n zUJz?l*#VlNW4v+#v<&du#NUDD=%^~DvZ|67)Csx|_PdOr;(13w(rTowKnp=1G5_oH z!ZQe{%R)UERGeRa0<8x1EUK4*)`faA)yF}bL4B3#7ohE-PE$_HM}T&RIy2S9K>I^o znd(NM$xwI2+N6vG9osQTnFu-sbQb7z(8Zv?g02Bw1k0u0m+XXEeBS9Ks5tLj1?>gP z@eov;FJ6JJ>S!ECJ*uk8wk~j;CY?n3J1RdQXUkKMNp(|m$&^4qRNVk&iBo&`?621dif8FmP@FT#5o*@;_=U_hh zxtf^nGZ=pj#tXeg`iS&3Ds1=a@H-ndjMw2lsKw_)GNZ;T6+s87@k$L)alY5zU)JxV zdH^pQB=dM>8t`ph4At+ymH`)^C)e`Y{Ob1!{l10w`(VC>z6YPse@RU>ME$k@dl(-B zT0;u`GrPr({v#CM4e1J2Gv;a6QLdj zv z&!a&*6xH{Oc;x`p7gKRPr|*B_a~N-7yk6^lWUklZzM&t?pX`4C(<$8Re@K`ox|>$N`rhl!t)#_RVb{{k1sRoX_dO?$!l98{bK$AXIU z|9sGGz2Nsc8w+0oeXamLPlUBei3Pn4xyKQT@~)RpsRwo1-taot2k)ObGbkHCUw|$I zy$}0IU$597RV4^iyr1PE%?Fwe>Y-Fu1{FTxuMWIAXg<*TpkjY(NxBhKoX;15;^$ob ziW2Tp6*s7;)00*K75(yp!uzg#o(jPI%j(_@l1Ib&TIib~p>PcXpAY)H#n)3#<$6>2 z9jrcIAD_Yf;B%C3;C(vKnlYNLY7O_JP_HN5f@N6pD`bYfZKrAhWQbC z5^EzT{BGbEfeXEgYUFQ09Rd6$X-FHb_LAm8)%@ahm$-k90e>0bLMxHhAgxQ<7}dzN zf;v6;JCJrmHOBXbIx~zPO!@=qbW*YWV*C=Ujob#Pa{%8?dW7@>sd&Fzj2G{J3%x`9 zIjYu2Kab~y@#49V&`&U4sK^Ty&xeFs+iDt3nuW9wX+_d{q-{w54|V4r@5R)<|1~pP zZAmIg$RU#U?x6Ge+(r^QNhySm6h%lUyKI#X3L%6LqNJ3h1Er9JN|NLeLWn}q3BT)_ zb=~&(JRkA+KEK!R``dr)_v>2sz3z3GnKd(O)@P=#c#}9voGi`|=Zl;_WqF)GC08o_ zUGZPy_u_A2p>C?5c)FM)a{i3*E|TsW)As}4pTPOPTCm@YbaJG4SIj^9)rb8-q?26F zKyrNvIZf%$h%bsu#g*b(af8TpGtB>~G>;2vuHUGy{odALG(q|{_>sF~=5Nn_C9p0S z=?9QbhPXB*xo(T(dRKD)3!Yp*K+WG%r#GTf`s4{bGS0 zzP`o8(&A|#=lN?(bAF>L;#t2~zuUTwGvUYf+dRqn%GXJ8`1}d`le+?%{buV=u7PGd zhKQrUCh)U$DHEXCACHOi!IrSUCT>vrcjA6A6ZaDBZU|f@@U|PUUIOI#=p67)=#J98 z!3Us+NZ$ocgML{0S@0R?H>5uW=R@z6F3}73Y|vRC<2M6WLU)!P2(E=5FKzcXPe51g zS-{zSFOLUqXZG`vXkY67a7W~~6Q5VHKbBq1{i2Lp4RZeCeUR4&pMYHFS>PJX@7!e9 z8MtqR#;0Xm8L$ZIlTE_Eo_H46G&2AEbc@U1k@C7_E&N&{zg@rVhwhEIrnCA5ZW45L z@Zm)IK|>!I5v;{5>4a()4;BK@%b97p``OtC-y{(ObwX3k)&Gs*J227c66 zWqLiky4N=-o$JDK2K)RR&xRuXZ20rKfaG-nIYQ}UMdmvjKSsGbj)QeT;tcV5ae2&I z?k(_wF16f;F@1TQ7p{S8uQ7;UTjYHlHSgQV`buvk^1hGhybmOsDV_70)MrW;!F3OH zd-1BmUf&_VbL7`n>?B?;@;Zk3c^xwb?Hqt~jz@NUa~x*+@B3eh-O}@remDI1e3R>Y zE&o`gPhvc?z9VjmY4ZZOU&1wCw(F34j(7>!6!Y`f zi(^3c_hfOt_?GyYxLZ7AfcGyRv!p8ravZB3v!rVRa(<{K$oh8z**{l`gT*o8z2f8I zJn=PgllYBz0A$=FuJ=4ytRuD(FBH3rgT*_=hs0UpE8-^cH}MFJi7f9#v9@@&*h#!j zoFG07vR|I1#=4yq;IIs=dji=XUo#zXGj8_VK@ zu#;TpO7c2~7~O9Cpr|_6E6q?YJEP&FhH~Ah+** zAh+Kvak;or{8kJHdB3B@iXzv`Fn?2Mp8s2l7mD4){^Brkyf{UiAua^D-|&3N^*Frm z;`*FbNM|`*KQs{Sv-k0QfONL+3y|&EA?{In#$a#ngmIhpBcO*O{|VseA?4zAN_T-( zpzlLE*F{Yl6uJ7)O{2)24_3uIrk|gT+$GQt4~g8IPxu@ta#uq?4Lt;W7R&>S6pP$M zkoUWO-4*WRp%)H;uQ(Tc1^Q)>_s=WEb>c_h!>GqLko|GnP!PxG-C_^Si%~x!Jp*L> zUJzdu-xEI;zZLh2hYa)iii4b&I$ruzu`0-ZuP5C|`fRa-*j4N$4iJZlw~2R&T=&KL zJ_t>6y%qV4^o!!_;@jeS@k4RDxL+)IvyW3kEFZIso|K)h|T-Fh;&}h z@%n2&^4WD(s@>B6EY7EjZ}Dv1pS?HZ;Q4F0Z{z&6+|S}K;!z`5?^>>cSVL?hULp1u zM~P2~3&c0XPsDvSAlLuQ)=yM|?z_FTNvwB}REZ-tl5>v5k0@XzvZUReFjz zO`IbxiTUsA2Kl?5vu@5Gx39RSj$Xx+{a**`RF)?l-o%{7#k=I@4+>GZ~&^)e6 zVxE`wt+MYB_kf&FIp$X8$M54~w#lsvKH=KrHp2OWzmspK^j6{pVz-!8-F4tuH&=DH ziua0-gO6QX)jcP^9H(O~>Zrgi&BgO1ko&#AugTv(vqt;lq>@-wYzSJvu)eoI*By@E zH;a7V95vrFNAme5d6(=D#Ki9s!A8UJUKg-r7T%`?^0-_Do{jVkAm>TH0Qvj$-5|%= zUqROQu-mZC70=^2&t7+U0oU$S?iYBk+Zewc*#G=pFy|AW9)WePNay&<`;ECHin&S9 z3&2g&u+DWvhWjkem*Ktve@40cz_r+iGsa?j7t6nn;q#|mBRb^rx#up}Tf)8<@mbz3 za1b=d>k;A@@lMa*uLE8Sd0p-2_eick=XLhe^g})8iVMXRBF}G}SFr1JyFOnF`{Bd# z>lwe#55FV(4e4FL-Z%%5hmG?*TFe$}iN|i`@5?&mwv>JV^Gnnnq^}U4RQd)5-VTr^=Z=GrJG8BP}bW!N%s+lh?B%e z#nID!dlyQ-A-*eqDgGp8-0tHaDV7qC7t4uN#fIWLr}=VPNnarL5N{GkiT8`oihR!| zx65Mb)#4}Ox8ecu@Cm-2CyEusdg7U4N3omOPaGtU7pI7`#C=$Q$@(mjenK9A z1t|?| zyiB}atRla14She{qV&7Psp33wh4_KEOU$@a^$|}MtBFm-R^m&a`SLnQ_Z1Jc_Hl}L z@LY-OcW$4Nvfo$6r@z(5^G>Dzpm-mNnL19NmVKG{zPL^7D!*Re`*McrxZNjv$-8_x zHO2n&KYp6`zgWzX{e1Oj&Z*wsOuDV?-Na$yC9+SH=KT-b`-Jo>;s@fl;vti~-?3t4 z@ki&=bEG?n-NYNjJh8v}aia8t;tcV5@eT3(t9|@Wr1yx&EB&y$z5QgdrudGw%Nf!a ziG9VP;skL}Js)SP^c-=Cn1T6g_S1;RJl87yOL4at+~ec?{E+u6C4I73TWl#lrv0sx zbT4tBI8K}@E)?Guw~712!uR^}PZH~jt;HVV5OJdTgt%0EPuwc*5erZD@lO$tuI+WM z*hXw1Hk4m$v5VMUyhhw|n2+;|cw%9%Z{Q45y(+y~+$k2k&)Z9j*J=N+ zBHcplB=!*pi{r%y#aZGq@jdZd(cSOMD`T}nsq4aBpdp%TqRBWg7(f#s!N?atqE^ZLN5HEVq zm$O59ugEVYa{sthwjA zKZwzz-v3B38)SL)M1G6(OVo$=`P)Hzj%V#X_DkO`&Zn|n^#5M|KPCLlZw>Yz_5;_u z(x2}IuzUyLe-6qG@-WYNgL4JIKP%7Hop**m^LGciz4-h!8|3fmE$(56!?;Bi_ozf% ztCz*I=aJSPKKEsu)aUJ-kLCQ}!JfA>pFRJz=e+j&M)uQjs?SM@`lR-2YWw=39o#<5 zf2#6l{|EU~`zIOibj7Oy4n{fkz|mlnM11Qnd;gO4lfD1J-Ungr<@0%N7uI*M;^!*< zt!d)g_DQ6?dZI-VL(e52T5ox_uvlAM3~WH8B1Y(sy9~g6YZn zzoT;2tDFzg#J6<;e6I!L*?TRXMO+@2?1zsPXKNz=Uu}18H`XV)y}nYM??7&^A3?Tz zZz8U3FMEHMZ7+L27JtXVxP0#ixd{2WewU0Dc@lo2KzMKN~MMpg*|XZCtW-HOc+# zOvO6~vXa1@6 zuyKg_`@x_4<@JetR-Waf-yr$jobWSy>iA*%pS3Ibewu%Bez1PB^;oP=9_sN4+Iw4~ zK2~pASH*VS4!hOQ)>qlO1zS(Uc$45q|NGL!v+;|556SPbgrC{d{jQkD)%7L)@%1Fg z`C0z1nEk+bPbuE4L_BN9cC?Sz1@xN>JFkNlr17)ooVHHfeiy@hOO)@GH2Lg(1*!R1 z&g%*PeW(YIhg83zm|tN!{Z}Xat^S8RmS6w1s>gegn<$sM&_R{_&X@p-^#BEJ2mTH2!2hWk4X4iy={N9>u35OCI4gprvFK4 z{21rdH0iBS5B5Lp*?(a_9rh0JuaU;j+R5h~?05bi&92+(!k_Q|Xp|-&?<-jTrK-o3 zp!HL8_z!??@i+1fg`Zt-oD2W4&~5)lzA5nIe)pKjez*|%N|wic8p!Q*Imq`d_e>Md z`tJ>_)8u-`r{K@ydJf2b;J2#To|mKf@%tR<^jmyk{`S8Ee%~Pd9_4!=O+MQ{e}W&|`wPhW zCgVJ!{7)Ptf8l99|50LTkoCzH8;j?N7lQ29bmh%dd2`Z~XZ7Omc35Bb%M0>fd=P*8 z{SEzJIf&mCs^8V(ATdv5{?}FB>Vw2N@6i17#ya`Ge-MAJPv(AQ`xndkNclcJNWN}~ za<<9;+k^P`mH&<69cUMimj}ehKhw*T9H z#rhOc{v*@mPv?J({7*QD|5%jE{oTsp@6p*mcD=-M%OXFoYqHYBvGa$$PriJ8ACLZ( z;cs@nr-c2(c-4{4{-^_T+-R64uJwo2>mK;CUX>$XzbVk{XU1!;I4#n|;dLDS(zWY6 zB)^;g!tYl3jY;D- z`DovdzsFtTe+S6;6P54oH2Hq_hu;J8oB9`iPsne^U--?D-~7MuTP(k2;3L=%UQ6R| z+x;2XIUX+%mx?PvUN_kFDBsIZzjd;+A6BcJwJK*rnsRLa{!sb8759PM@BT@-n^o>7 zD));t)orOK4w)>X^b%re@ig(BsxG zSE2b{G`6P}$ar>ra{%`l?1yD#JwHbNWItKGikAqmCa-`S*2uYcz%SwV9?17`a69sS z93m(xdVRWPax}K#~HWxrqTKRVB-eUKSny&%WMVRbiDTQ}JY|oGXpdD84KdTqx?m=Ak(=XudV0c^pcCdc1{<3xZw(j2g!OF4w*_LP*_mh9R zuK%xoNAOp_L$G$8r7{X1y(+fE!;tT&G@(!Q&+ z7k1X4{wJmJFPP>1`Fw);-oQKqnap=;ntc2&PBzjxf53Lx`OQ7$_y0pd?!To)`+iS0 zG|%(Qe|jSSW7qh8uK{}vr1SouF35S2M)G4j^YC5<#&*ecsmd@KikjJT^9_M|A@coKPru%Jy&M=<6wUt^|~YBXLfrZ z?FzNyZSjT={P@2Sn)_d_G{3Jy&F}A!cAT)BdsNN?Y061{cZd0s-{qm^_j*XinTq`D z`#JYG_%Coqnt1#!5BFPp4=TUU!~AwXZOOr1nQ@Kcv2I z)%t^R7b@<{Y2yAT?O%cX++W^E#IgNktF{Nrds}|*Cj6`&>HIg!|D%Mz`Pp}izD~sd z41PaCZ%g=Fe0xsJdVDLt9}<3M=XU|PUF?3G*HzT^oXDOt|DEpwFrR%Fz@A65{GV0+ zfkgS~>KTmj?I{4J9*0(6#yd=YML|9{JnA6+_MELV?r&JX?s{I5d|r4g@^gEhn22Nj zZO?VneJ3i}Pxkzl--%*6zY|5;dD@<<)3;Mn<|U_b>=VFpLzbF{an}& zeHzaJKs(>0uCuWCc3oQx{_I~HCys|^xol5I#9`cv!PNcB;#>YK#YyJBJWW2v?WwqZ z(%3C7*VXg9!}9yX&+2VhwtTJ{h9BEL_XWEdg6YS*EjZDk@xX~;kQ8N zd*-wD=OUfE2I4`(M4EqCCo{AL~6y^}Y|RiS76h*btm{kanC2JGYPRzqUOX?`g$*_8|G~ zeH`?kC;t~gmj4pS@>d)r|G~;%rFidvZ4hVu--y#0e!Tu+eKw`>=YH`q(qGT;e%;{D z_OFBHcKS%^Hz0j0{OJD`xT>E&K5d?i@pmAd`_(Qmb-%LxgnoM!=hrlTw*8a-(O6$@ zCU~&8hs&=x$a)-|#^2)GI)h<$MaqeT&EPd#n7b74N!4JUhRdzm;$6Dy_VG(LaoPuySrvIm6P# zx45<*hxNKe{-YEAseZ|IK;z-Z?RjUy-|BDq824WJO*x34U8hV%yB>j`wTt@6gibxr z(*8`sPCYlF?RuW|coFHT$1BrcN|Qbdah4<9&Vx1|$n=$I(w|2K#{UBGgBf@SV4@tWza3Y0+}eDny>HTo#cr33eWL`@zDf zha30r+t13i>kMm$eW#%W^4WF9A!+inoI*%H1%5}QvDF*`H00@Ynxr*G#o*PNH2UQE%?&R^I>Zb|t?v{@-fX3u@Qm zM7!)fe6re?+OG0Qw{h_m<$pa*e%r29;LrW0zIcY1jPsV_tVJdnhTh-yE8B0F|7Ybt@DKBcSftD2t{|9t zonhM{wH_?@aQL&{#na?7fBKbD{NoSeXUCn*=X60_?%%yd#yMH#odym-dZk1>E6?Ka zz5hIphQg0D`=9lrZ5Q+VZ;c24H;$X?Xg9Z4okaU>f3fykd)RM{4&qP0 z>tW}2y9UYs<~07iAL9A#HuO8MldK#o_rKMDwjFJJ`)`~#^VF`}4$>}b5BuYG`QMes z-`Z>ak<2$)`5sJ@&-}SP9);cJ!zy6>=W|7S4$1PLgq_#LGeJJ*o0BG<-M5U__P7t^ z`OW(8$+iCa{7Knu9UOoE_yXdYpM9T%^jQ&)%yE?^Zxaw`fUx!>(}?xf1Cav_TQgfCv!V*LA~C^ z_V^s+c=~mkdfNVB{m*?8%c(UhB|3B@owbi}` zY1)^1UbOzS`~;-F5^0tGZ6fM7ou0&jIcCc<;lH^O2v4KY(u_pKT92E`C8ew|9YA zo?or;^I`OV8~%KsHQQtU$@A~Kuyg&##x(V@K9D-_w$F)ju~;|No@@w<`Y_@Ct0F35hs=w;$|$ z`TKbl^}1Ve?@z@0PwMrs@=pUxVe*^87x$yzjqceV;{qjuZ1h z-Y317C@;0%Htw_kUy}cF@EX)}Wg?%|)BK0P&hcvu$noqB@nMkloFTp_z6$buvQFB* zM{eII|4`|y$J;2E^?z6O*_f!u!Rr5!{67V^A>NnZ9&mdi|6jG^&+2dO3!e4uDIJK0YM6epPY@8^v&D&N{`^Dxi>7cA$b zMBLQ=p#4@U7|$F3JTs+@}x@l*RNS+C3C$L-cL;h$QcD`97R ztB+l$upj#-@*S+4YvITKx-sFOT8_2P%6Txc{f8#c``W^%(&__V1{J_*;DI zSL;tJ-}-fgelIi}@x~*b^_%U#yw1Eck#6l74}Uvv-J7N!tmhP@^F0HPq_Nw31yb)< z>^_wFpH%*tY4TgXr2ljBe<6)O%j0or&$;dW1uSQY^1X79eD+=f%Xe?0{VUVtW8AkA z>8a~QY`ymp`rVVQ2e)-1QxSh%BER*!jUSeu_q&hM_*+~%zHL3ZjT2TL<9wDT zKhw7%o%5I9ChWF<+IFz#6wjjGybu4YdBN2ElI8q>_&4JBt3Ru}18K@zjQBhbR;ir# zL5`pQt$MJX;T`$ox5Z`s3L>5LD-6=FSi;Zx!=6Xl^T{t%U*%BmD>Xl}Xt5 zt6c?V`{V3bk^bf6Um@Xd<)`MOe--$hg#0xV{#lAwGZD95!fx?wUcr8MX6rE+w=w+r zzQ>$IKJ%Z4@3?S0eNjB;2tU5&h_?QiaatmO4(f4!BFA>P9+m;I{MMr7D~tAV|F_@e@%Lub{Qd`74YYB*H{x>K zy*d&9uiAYz+QWWL&YNAQI0He}cW5G>)z|W|-ptQ>lQtgSh`1adhl1@w-@h5RT{FuHIWc~MwtmjO`=k}ZfT0QxGQr3g(o9J)buL0(x zsBPYd`KTFZKJs(CT9k-m?X~%DHz)r(bQ%2O=SFG#Z9KGj-v8Clb5MWI|F22Yjz60p zw{hF%_3XK&?ay`{#ovX$hq&y2?k7dje;-1p{!WtpzXj>+|IgFZ!_Mms4)x>2@9(cc zJjVTB_kNnc@tlyy+3)Wo!url~*uU+&;OvjD)gL?3^oQ+_?0?2d?#H{8Z(o{xr=q{; zZ`*_AxI2Bn9|GF(le*vAdPw>oCjX*o{B1n2^=dtf1nwyKRY$qUfy{pr$nll+Xf3uC z>%x!Ehq)e-wE8e#Ipk{ydj*j1U#kL|-Rk>S?~${1*!ok(t(hhc_rrQfw|4y5@ym5< zyzlzE>*ZRY{v4N5*TZ!{I{Tx$I9Rmz&)fse{zx5H?78%cO8$JAdi*_sd>r3qi@ZLk zX8W3;eW}~au21cF`=7SU>i=i;WB;FldT?EO%QV};*3bXd?<1C9_?w^EncgXpZuu=P>wPKg3(&9Kz|{TF&Nr5B$0_G$SpH0H zhnKZoR)SX|4#|4G19DuWz9x~*atEX-?-8_zlU8M6mtqI8c3u_PakAZ(nq)$kb&wh_;?~kMZq%?j^ zzYpnrkNQJt>`PAc&zD|Z>(`xLi1OIK{0B0`aJR6T~yY)l7 zxL>s%Hubz`?}@YX2jlX%<~lI8<3{8s|F@kN?R@~Zpnk0Hu-bk+vVNLA#_I{P+jZ=H z()Qkzc{s1If9$xlU~dV(eWye7IG8JPd%UIXu`bQ_u>P}p(SM`-KT6|o z+t1c7TYl#IO!>B@$!GDcU$`B=gP+BF74_W(o%;R=?teUw*!v(X4&T?X7yj#z?^ng) z`N@ulq+fKGFDGf|dmS>7&g1@Y@FVa@kjMWq@@K!>asNHiSq~dO?f7?d@g6An7Xr&B z^8Gs1|4yO*OaAw!LqU#PZKa!wmxCNnjz<10At`HSVAhTpexzqQ|i{%`p`tbL!|zSrIk{m$*vOSJE_bG)vD z?ZSDshTu@xn}cJ)v%$&W`5@mHasfF0Dd#$ak0Jds(8fi3|EZln?fUK+`0+TNFTN~t z{APOD=R7NjHN@B8$NJj&ZXGoH+1@kz0W`-;JAc~w)Xs}v$=`lAWA9hpjdUIlYzMdh zZ_pgqY`)U2qf+M=Yi0ZMmK`^T&+~DP2ASX9mvSOB<5m^z{-6E4;BWL7{g(UJnz|}q`y8Y1kL!zf}f%M za^SaMHSn=(OUCcvDK)8pv-K~dV}H!Wfc$>y^I*2C)F)!FOD(0R-eHITc<`#-?#w_8!1ON4OhWi!#?CBaV zdJ*r_y0V5lGG_kwE(b#&GowT9Xz@OAy0}PuOWY#v5ckGJf8+ef{i(=8-)~2Q$IQsD zM;Yi7X5^R420fqky~mQGdR(>r&fqQ#G%TSpL1p&+R&0 zoCk7yEde=RtOPlpy${m=W0Btny%FWvIzu}Szma_x_y+9P;5zb@nON_&2;V=R>D$Ba zlV1(JbSA#bE)EfI7atX8$IQRZUIfkhz7BGn-UOCIy}lK#y_`2(%Z0+4{wP7i+(heF@_U>pw@d>+j1Ehv|QI zJ;UpImdEROlJi$&ALL`d*tj_mn%i-NIQ?kv$Lrx?8Q9+1{=A=OKk@#awCAI@BOlL4 zS782$aqm<7M?jYMg7gaUZPAZcn9m&O^Ko8deG#l9fSt7Wad6&(aXv#j&r>@fi?;-yb>VD!gx`hI9XdJ_G5DdmhL*9YlUdnYyzy z-&f9l=KVAK;|itQ^?qOJ>%}q1&-(FxjPZH?B!|FG=E-lYI7xh1d|I3*E*0MvH-n6m zx?k9HP`l6FA-}!Km-&+4p2vw5!5`2MjYZzKF)rV;&Gz#>+vH;+-?L54_iU4V&o;^T zY?FM?Hp%yFlYGxM$@grNe9tz?_iU4VuQ$u%`?jh1zHO54+a~$D4chtr^q*1B)N#qq z_jWwm@n^?lYqX2o!Jdb3d-TTlnK^HKQ5V1d_&+)BZ9Ce2+6MPM%+L9NV$a~cdMK|X z*c)WMQ^yxR5ATNZ`JI+aQNHcpe2*3DIaHjedh_~$>GpfqMR<^K0rK(vd#9ir?#~sT zDdz5nKhMvvy^MLvSq0qNAdizCKl}du0J;j&9~y@5inYM}FVepU`CPL}u?+VU?Auyo zxZmP@8Sc=f7|+kna7TgJF2kJ+R+yFHDu6A(nqbwQc&8qC?ySIF2)3QoA-CBw-|n{H zCX{yx_%Zw~eh=uTQHH*oZE>-tFwR%Z4FtC$-X?G;w$Xq$@tq*l@ypmAxbMZbNI$W9 zF?RsE3Hq7ePhfxZeZJ&*%P~JT8{;gC+SDh z5AlBYdlTtfkp3Z9q*yWc4aj=r;X0D#=e+9cQ3xD02fx3NK3}{*>D};sQ~F?z~8;2Mz*9fjr-j7w;196CVay{uAOe;yiH?$o$Jeen)*R$m7ZGzql@({bT1* zewSri3;$h~UFZAfIV+CD^)HSG`tkVef_Rqy671(myXCiecst*kzuoVpmdEEt$vAn< zu+Cs^e!WudoG)TK`mX$Ad-&c)rvKS<$${{1jktV%!SfBDH`3ppL)!C7dw$91lC*CE zIbPm|{5)^o1&&4>8z1evME3q5`#zER^E!n6x4gSAcadn{r{edKxSi}hR+Vwz%j1gk z?DcQJaR)ogwfPIaH;eV+JVI62ZCoza!*3_62j6?u1oj`0pXJ+owK)IA{CvL_uP6Ba zEovK2ZJuJF@|9LxYi|K*o7dJaQ^AB_6AJ6-szBX>#{E5x`*nCjx ze2mQx+52lae^v`|_ABl+s2{iY5V1MZ*4QqHQ1RH`_k8 zJ#0ISfyOm-+x~CIq1`vwdx&_R zdj83AL{{D@;y|4T%jy+$z0qLxd&EMF2kIc`;Kl3-5o$Cfzu5CxN4@O+}yTu);a`+u! z*4NrKLFtySqpt6)Tr0=?El#Sx`8|kujL&r+B;R{Z-i-Z@$2-^GP(LX@yS{uDx()i* z)?wuw;oHS^TWlZKZIN8JMY6mb;cwq_d>Q$f{)YIz_@%gCEV?Q`{}ANo`*m2K6Omq_ zI<8A_USPi&Z9l94JN;^b++Jp9Jw_vrY5U!e>E`ffJWF4_$oGfcC$&+$OT@nDH~RB^ zM=bBJ-kZetB^`@#wjKC>r4!(1?@j8f@@yTE?YGwY>c#`a@5tHqJ>-zfcwXy<*4a|ismeGa_i>&f{M>U)v?G2%ZCmOD59`r$d~ACS)P zDbQ~bG|y)%K-O=aG{3LF^iQSjI}6*T_lgDH^yllNK;}OgWWFk5W3iRk5ln99zR;}4 zAaT6-pg3E6SzIT6C~gH=?oR29)xP}0#iPYCAj_#G-9$V`>;N)OSMf@a{x?bACf+YT zCcAAvd;hEbZe%{}4W9q^?+@E~#NKOX$LXJakJ!#Xc0I!1IkKL8K<>{OgMGd2J%z8S zeyR21cQ*$l>XZ7NPb`q?C?@h<7P>elRCd)_x-#cnvHU8f0~GLc)xG{b{%Ki z(ejx;_k)Irf4}n05MKa$Al>$#_n>*6|3(~$d{gHabHUqjdGY-(=VQx{a<2Oe9dbEe zL2{mgya|3}C(Lhjear@lH;1jNWZcFh(v76Xm91;`HcR-eB+worLDTr_V zZpTsTJg!~0a-4Vs{*N&pczi3rAK7tc$Cn*%e>UHHAI`&k4$XPa8HmGq&elP;9JB?kjA3qO!2kUwgawfYN7(i^MlP|FC~wu%JWk`$#7@i(AF7#a%J|etx!&i;LhNtz$hp zVE zccDLQyta8+n}7YQdEM0cTRRV=&iC59u8rHN~7K__v`oA zueIDRkjJY}$NmZXz9xSDt^)dz=T*)RT(!ZEBmG6rukyI&{3dxL(!oC*w}t0-$Q^=o za+EkxykC4+d_tThz97CLzA3I1H;SK%Ux`18`^4~lmjB0kbzayZ_q8x^WRJ@|KZtd{ zU)>3KE(?1m@{>o1$HdIvA9(()g8hNdd&qg{Px3`^nfQjdR^)kxemow@%$`0Uual^G z-mdauo7_`TUbbtKTQz0@*9d$9&jI}WY=&zUr)RkKAm{VDiUYujL53S9-VPpJKEpjI zJq_$pH^a>VyD!Xei=*aFze(=j*W>qmQg`E>yq?;5ZQ{CWRVCs97HySQK2b=OVs zW1L~k4?l}{tKy6k?-D1AybfeJwjS(3q;o%fQsn;967jg7wgcxN{UVUxsVxW2hu+=9 zp2K1Or32m@*B|SA3OaWg>@{z~a~zQMzY6?gybSj}@~<6{;SPYy7G=1M4{^T%T?EW_ z#av17$197ulfcZ2u?@i27NKv>4BVTD_d4|25!j!>AwlFegV`9@zYxC{!_7XusCa^y zE!Gm7f<=l2u9b8Lv72~}I08I&F}@8BmIdzzx3$2vtyr+QFYiU@9@X)Vb+8exe>dIZ zT*)jvgM1k8v0jXK{UCid>bptY0?x0BHB#b!knJh@k!LxO&zUNN8O^azfRz^`Ud#;F z8LYlI!}SImWo5WQU>)dNL5_2Gi%)`V=Nzyh@-GwDg3X}60?z{XfUUsHf8jb3JPEu6 ztOoW3TY>$+{@_jE-5}Rs%m>GU?}3xRpTGyfBR3h? z=c5~6?vVTQ4vf!Ww9~VgSVkQ5rBAOReOAo;I5V*i3_<=5NGCZzJLKhjd-<{W?mW^j zg`Mmzo`1I2pCCWe2Ppj}@#dI+j588`w~P)PISO`?aY@D{nU7?Aa-uZL8JVaT-+M9^ z_J?36uRuM=ChY8=iAdkE4dVmY>?_ad@TY!Wd`;XaekZ!`y|OPEJYn7u>EtKkw(1-Y%f;jL#Fxvt zok*wtyu45M^RMMxKa`X0%DH1uFVgfyjlA~f-EwZ2{LEe+<95>s`F`*`S*#$MpOse& z>5R|&j^U_}#Xmy+&1JWI=S!R4z34yYzg+1&|BOYPtEJ7~@~7tW^S=4*OINRviF*B6 zd8zU5LHX>5$Hn<#LmYqX?`6$Sc`e4!T z2l&3H^e4CuU_NellG~l+b|=}dB)2B7?Tm8HL7YKgd$2w7 zcLFa5F9$ha+7nEz&lT}_g82_|*_XcGj@NU(-;`bm<1g!dvRGNH2lhc+s~5iuNy^LpqrY7n(bzP(a+LNUkW?>vxoBe`IgAtByD~tVZGd|DED@xuL8|(`hKLp zgY-@4|MlP^`15{%`Cmb~7Psen_?>HA@3#+rUt`|&2^YB^LDsWB>}Qvc+)&Wk$NWPV z`0Z}>{1)Z0oCDw?DD6dPmqJj_ zU9pZ_i_^S)CUj5S9Zr*85^F5&#nl4hWv+$pkGs__(pzI)&@GVO2R%3|)0N2b{sr!% zKGgM-J_`EQtU_+Jbh%g`=E`S#|9a39vI@IA>DIA6+-;HW4Sj!B5!axC_wN_$Biv-^ zLD18(in?9W6JlM=wZ^YIS^p=YpUo=nW=b!N^^q>KlDDscUYJ$Fb(8)g)wi`Rwv; zlJu-tXStoRUJ<+rT|GP7m8ePo6~TJwX4w^79qG@Y+hkXCU8HwGcg?Qka;1NTz9ze} znoMrEw@5?40J|?+HRZleb7f$sN)LP_T@bbU9Li1S4H|2=-L(P zx%ScYL4c)0i12;uFdJs>CD>QUVV?8qSIOydC8o8Cyr%A7ot|`4y`fTWz z;lD-t0_Yt8JT&nbf)xl>7vq$rAtY_C4G|g zW@wgQUixe4D$3e;Qgszu5gCSOX!sq zTDXjc`SuShoa^!$dEFCd;kgw$xJe29bA^s>Yh!P}1@__c9XVoR?dhkmu$Q_Vg0bM&BP)`Q(f>F;Ab#1(Gk@Hf)^3jLHD>PnxRuRpGs>nfh-^|6mQcVx+1TrcU`(6z&n zZngAvW1ah^;z(R7dVlJj6-T+P(qrKNYQ+hzRBLai&a8BYE7iv9N1?x|c)x3r(5F;- zz@60A+n2=ON$ADFY&TB26zu0!n&Vou_xa017q2+qO_Oc}-K)|IuKWew z-X*rb=%z{YSC}IzEp#iTC&qfQ+b;bO^j(!+a(g=X{Bxjdhf7`Ng^2ki}(K-_7RoVyPS)?J^@#uM^xV6N?qc04d~L9-*+pe&x6jY zywMG~)Z4FwF61`3&C-LUr*-xA5zx&lZ*rwC^ZHTf^DBSorbw@WzP$3sZnN}f&{tLd z)Xluy`yY?1$l;a0a#ODG`eNwf6?eLfZeI6-o>KXHw9u>DIwL6G%j?3iE)X1$J}K6j!NA_M4|lapa&c z)`f$9S9*KbSQiPl#X8RojCIkV#8p22$XFK-y7uwtli%SNr&dpP;>Tuq)Pi?lkDll}`+Y^!NE|$GS|Ad7ani#rl+BbgYNFUeIrxeriy5 zfRFbW^!n4YgDTPsp*x>mG1wLBJhwj1e|oU_dLQqr*j_a#eS_DXB|V^tDwQ2BnAk{Bxl$fA$4%Wol?jKqPt#6LY%gmd>AcI#@5g zFSfT1wn%5pWc}L&+og*^S8{EFJ<=z{_O?N0u5WLJ*xoiMC0!@Bw+qTkH;?V@f;!UY z#rF0=3+Ya=y?xM8x?60&Am}B1O>Dm)7$`j`ws#0dOOJ}}9fHZylVbaY!F1_|WBY}{ z0_mq?d&gj<^mDPjW3W+rVQlXdY?EFd+dBn&q*urGi-OGI4u2yvKaA}c1*N3Fj_sX; z^3p%W_Rc{a>F^o$Z(9727Wj7Dx|@?OlVF(qm(L*I=Xcl-Pb*uub}z*nU~CNBX7MetD2N!ngme z*nW9XN_ul_zal6v{Y`AYBB&$1FSd6JT1Xe1#rAg#I!c#-t{rv{dP$!g+q(w?rK`mD z9>Hkoy0N`SFj=};Z0{LNmu?%|dj<=nFOTiLf|b(!VtcP(qx7)Y-aFVPJt4OD4)#b- zjqO(knYZ}%KO5Vx3`$AA6x*)~PLf_7+ph{HNpFIFxj>&_iu88qwysYwP5L+JLo@nd ziqpq0{w({WZ%|aataK^qdeD_z-=J))hr8C$h1}IajPaN<1pkqQ;a@Pj~68g}pHv~m--N5no5%`~2bzo3& z4E1mq&Bj}Ks@@VbkUko^dDXmNfOI+NLT+R*TDlH&`6EUK8)NOq*FtVoP-<)(Kl6g3 zydN1A@M$oQzlZ1Weq>ZoNBaH3w2uy2NY9Mzql1pppT_pvf?m=u#P-{Qfzmr-`Ty;`VO8QsC>t6NVpqtn6{MC(B9|#tEow@pXw7=@KV1@Lt1$jR= zEm$qR3HCc-UoZXPp?K>q^k(UAV4niLReB#Z^KX|fIG^{A(}G>nC8Q5X`|UF=$QU2j zKd#>r#B1+$rmxS;po{eL$iE|)8FZ6g5yzVu^pRd8JwV#uAI}ViNc;QanL(cPNAPd! zW(MP=zk+_J>dau0*KvJ5hF&eZ@2}^A_0s)cVEdj6HcJnY-YV_u`&_VHdKBzCg6D!= z(hop?SM|BzfY)((d!TFF?)O)pe?ibd+P7~(kR$E;b3xEb`ZvU@9WDskOZ)y?5Ok3) zx`5>`2)cP4mzP;>K`=!2O0XBJwlK((_U&C5j7#_*nz1mLBDU|FzLy8ZF2-?Cu)AM!5?c1gbl|F&*fa6tNB(iszcfBXQwBUly`_ByVAxoXP- z+#=#{r1qB;K@I8qPsGhsf^tmsLTYwBKJ=1>>aGApi0L ztAa_=pF-~lRs~a}zlR=-pS(?z4i|Lt88LUXyuZ7+vJCC>A zYHNZ6()YlBd4V-S#zf!VY0`zIpM@?|Y)w!?dI{}^tO-hc9hW~5@oLCkd=ZcTbwLB^ zQ>1ee{`Xf~7xaemsI;O zXn%+Azjt6?Uf}bfi}c6R-K72e+2=tYX@C5E9t@E7$KU6{5NSW2eIDdVe}j01ihUl8 zlim$|2g;iy&F%YcwaQkuLk3m=I51`8z{4tm+y*0M) z3Z_ec8{2mU+oXSr?Yo1W(!a&_-9eQ}K7QuQjQ>+mN4hw4c|3|9C|x?X{~Y8>pBmeL z4wgz+j_rGbmD2TM`<@{4ZXf^5*uFO?D&0D^?+sc@UliN-1rw#a#rAzc(R zx&1-;gl<-Of3R4(U?GeT!GU1Nz4R|u>XQ}ty3ip9f&mXx-{ZDH@2_?sSRZS<|Ad}O zyZQeTtbdexWM;>em>;kHOHk!8ulvRN*I=CVSm^7k{}ybMo*HWx=1lYc3!rnW2jNud zRk04k1JWNukF6es9Wigf^7h6$Bb*oO6+y{2Q0wZ4gd3$#gMPAlf$)HIJ?I713x+4* zKA+D!T0*~3Ju}RS^~lUl(6z%u!}eag-q3~Ip<%~_t_0mh`nK3!DCE2Y>f@*@xk6zE z?&GPSj_rqqU8R>w@0srH?^4$|EG+w!*IS`W)hHacNa!jx4i6_k?d^xHqPMZEmVcBpg z#wqIh(0yx_4a?#p7c=YskKfE%i=hp{k}MV`LNVduOEkAQ>%Q~WSQ5q zp?B2E3a3iH4t=0jc35J$x4#cv$YqCRu^%$t_tN8}4`0pui|lZ+^r_Gf)~*ni$9ASa z_1xN(!v<(4=kHoVZ?0T5ECo{ch;{X_oAiiS*9`Z>dbpbg9$lw)*y=6%4|o3lt8U1* z3i0?|3j2w5>WA)auQx(huG1jQk=_N}uuj7;Pr4BD<~i*>&Lq!c|Rp)27j`An}f{rSFWI4@x@Ua@JoLiUxY&+-Dz z!qo|T+pK0`jkPR)WM($nQOPwAyGS>Nt{vut-K5(?4?QF&93Xuq^ymU-ghOII+~q9}Z+u_$bt-`I+$3WK( z&kgrTp9)>P?zy3RpZSNobD)o{dw#fH`f}*)Ra%GJqz6E+KfP_ZGuF2K+J}2${Ymf? z>=o;_59@4<>l2^f3%L$qH?K1fN58d&9uVtWGEap*G^0b9_XqzA!^tUnW{O^#qE{yL zwRJBHcP4b(tj=NHrno+t=cC`3*6k8*k?tDni^B#VdiwzAH|t&!PL>`S>r2C3(htPC zYuI|T_n#H(%fgw`E1);jy*$kP$lE`N^%Y?^>F=RGsoO1FDqRTM^^>~Y!_xnv|B9d- z^!B{dT=k;Zo^+uorS;!qu_9 z#T}0Q@`HL~!cw1m|I?ti)EgUiN$8#R#)ktEdVjr%;pl`uwEm=U(w9De6XegTe_z;f zo7a2`ev|qSgxeFkb^S-f!e8avJJp{SR!r#b^`8t|NsmPS;uU9vU1EKUyAS%>`ZL3M zu^#T;i{n2Vj{b)6hP!Rh6YI|pCvEq7KlG#ZUkKMo7r}A#LA?dx#_zm68~T;{FNP&{ zP~-Us^ybQo!l~bT-96Sz!g0I29vthJ!@|40zAx6x!fDboW4%0V^^>>18tYfXu6w-R z66@E)%>7>f6zexacYxX-pHmyW85Z?A^9mfNPc~Q`mP*(^sJA*SFZ&?a=QemNtdg)t zCEp5L$o?AaJA!w@*3uiKJ0|?Et^ZCqPq4mge;-^~6N}LeSG> z_xH=|!qUIQ?aB1_%j?2P(*FKwU3k)O-tO;**M+69VwC5bg(&aG2J6BcuCc=TZW(le zhU>!BSRu;mA#Z;-oRpDoZ`$zPu+Jf}J@c6lI9{#~he*E!UCFHv=Sja4+usXUN^gqo z?}fXhKacGj!i)kw-p{dpL)bw2P>e&h!}r5h(xsp)x%b07>C z`LW&+c9mWQeMO_4;bQ5JWBq+ts)YCd8T#r*KZJbi9rGW$h5E;Ejr0l7H#OQ7Ry@kv z>%@9@I9mDw=)6Whg5NlE&z2u4FsXtXEnCVfBj)JA*5(bCUA&uO$ToGHBo z`jtle!!^?Dq2FzEAlxOr9eQh{U&2yH`}pn?><^884I4<8fG*JZx3H^pHuTYrU6d!? z7`lApAet_H9(3KtVYFKMGU%3#qiCmef9TGQGoliu0>}2;2HmIeAyJ)Jk8}@17q3_# znku~@)&-;O(yO3vYn&PFJSIT?k?xb&erVM3Sg%8z*B)zJC|Vj`z8#G_#oMFL82`j*QdzG{$GS{Z@l>yC#`=_~4%UpaK4-`J z)M&BvWwAajauvM&hFE7sdD3^qxEPWkx zHgpNEsLFfAw3WNt((@48YKL?K)3&cf8D5y^d|UsZ(29%mhc}0J>(Dm z^`kuLe#bjEs%iabT*7}E^t3Dh$X?kYVC*hyb?96DI?3{l*vRSKWrnG-v z(<+)LeN7y%RkT=o2y};1t)dmu6QBzfYZa}Qo+AJCUdQ{x@rYmIbie=j{jXhATH2S_ zE-EYS%WD@^l=kJdi)u)Jh4`m8YZo<;_T{&Wa-@Cv?V?s*$K}_Bf1d2VyiUlDqD_T_bo=6M~LcXYu{QQ>NA?{K#e`MWl|D5??b zk?t+%tD9XMt&si{I=9)S(Z=d=|2SSZPi}TuRJdmT{!+R?kElVcZN9Eo)Y02BSKzw1 zt?L!#O0SU~?X~+5x_rT2(E{nup(~W=9c@eKmz!M`m8#{--wQjQ4@XU;5BVDF@0wj5 z9gxm~E?)84s7h_`Uk&=bX4gfnr5ivODmEa>m2Lrj&(Q;-+0yNxKWuh=v_<+-=q=4| zh_*{#1zn@m4bdLyfzWN;4N*oNU)~7lmkZnw6_p+jT?GE+r6)sgMZBfbGoY6ixhX1L z*XLgXy}ZDnsB5f;yOq$Tp_|mB9rqW|50xAe6|PTxOT0acG#?t(i1onxVsU$kQ*NLY3$1z1$|oc;n9{RUOyY# z^CH*O>s8QAn&(ADn^EV*^}+M+s8p=)apiEIb6N9|QF-aQ(7l?EiZYwi{~p&AdSdg@ zQ7P$`(36|r7Uf8HfquOCn5dO>Z|GUg$41k0nEwuU3-rI5kB?@z@cIep-I)_281eVo z;XCoat($22kn@hk{+07bT{~ye?{+_5J^6S25#r_KOpf}T?dyAPCayQ2TU_Kd>(e>s z{%GTM`MO)q15x|2)c$-}^3aE(nF-yl>ci32gdUpnNOaP;eE-{W9*+hl^qo0RMjK;o z$JbL)mGQBEW`l3}eB`O9j`Ug3B@cZn>L}edwm%(pmF^PTpN?{+d&Kq`(P-&@v3*7~ zU3yS#pBc@T&Wr6cqcvW;+o21&XQExwlcA^PJQEeYJ+7al9$w+usA59T%$Xexk@o8k z=0t0x{rZFFqOucwe!u=;ZZuHZuRoXQ#Q?O75vxg*XW@6T7CF=p0PA4I?3B3+{Yhz#{F94 z8s=jdhWQvq<1@*p;rlx8*Xw-mJD-0(kEhp<_m6w-c6K}WoV1q6Qt~wBHzGU93&2Tf z2P4Pq!2I>hZ$?&3<{{X%wtu->2 ze4P2+$R_5N2n*g&xoPi3c9Bm9uS`1}DOS7nEfME~H>b5l#*-7l_oTfanL$ng*QI?B zSxBA&elhLC$V&1|@WHh9$VT!4@W*K%MRqc85mtbE(*7OU&H2}~Pa^v`A4~f*viyFw z9^nzl*C&1+S;hIJiC;!$K7jH45RaeuO=KSD3nq3)7IPjuu_rRN2J?@zem_Mfa?Y4| zB(jaH!{;>m#9t!|cVhmT-~)1hWDVz>iT#m>IRBdVTVy}y8zvr&tbY*er$GJMi35?% zoHtGUE3)h%jORoA$An0+m%ItQbD}8b*ShgC!TsE*bCh39d>H)-vnKYD-viISz!2*m z!T5J9Zi~5(qW@$bEZTMGlYVvcqr~#Z&?CT|qfQl@9!Fo!JVdP8g}$2kbg`=*y@>e? zvGEDl-skyeiLL)|*FW6<4=Yc)^;?9S;B&4c5od{|%;A2O|8V_3@)Msrar_`N{=9Ar zoh4?Wm3HX=aVS>I;o`ku_o>)0zJlkoL&XxZ4WG095gIDGPdWSlpa1DY#hMfH9VrC*+?ewvz9J{3+?@iS1ne5^y)g-ShdI($5!rx%k~+v4NlOFi|JJ z2mKyOA0|ej+0VNsaKZ`sBg7=K{yY48X8H&*h0FgOoI&v*#HXYuh*?}*6%xc8&PO3$ z!C4h96q~93BKTZ#I`|NI64)_F4`%OzqL=jp>P5&L)J{#E`Dj)zIf zV&-$`Cz;2H4deshuP2QamFF@3G4rKj9{FeRPm{)p&E!b<-1VnPDPqhEn14F>*rdzE zV)BK|my7M>$>7Mz>Xu&%kk$)5Pq(=--$pihGz_A_l|fsuxTSi5=wgz^Rkd#R2jd@YRziiLo!a^(_%s zf#*-2EC$KfgKwOCm6%Vy30yWgL#!a*3ch#p6md6sC;0KnQ^j`XEy9c7mnKgW-KVd) z@Bd%HsxU(=CjUh)C)@BjuN$u-$ARCRJVVTW8S8Hce=>QdsJw!H6dZX)fyk@*I(pZpuRDPn=>-Z{ygZ{%OD7m6L^DDdEfMPl4* z7#|K+g?w=gc?>y&JP{mqRlZob5A)vupMBLzv7apd4ZqK>DiTXy$M{Ha(pAM`UNd?P zSQSdeX7X*|iC2}1DgVOw6D+=2EFtd$Zyvc>>?MD|Tqfr1$NX=Yw}>s|Uzy9rgaa5C z1-J{;$lJwAaujogIKT|wzW{fRx>L+*ar4WB3C!EX@z`NMC)S~r!IALv9-&%nAP)s=8P(#R6Y{IY))Vp{5Zh14e?aWy^3Tb5KpdcW zA@qA)eoz$OVdE=j!OxrN!h@ntUJvmLG9DD8&}@F^fRiYW^$&|FC)7VI2Fb6m`iDjL zZsp$Zk8?5}77I?OuM>+-sIL=C$ltU2Iw}c0j*&Evtkl?1pK?l z0r^=mg^c_4tQaJZgLv|wXT=OO+u!NKo)z=a!a9gA%GfQscjjD4c=zH971 z`+{b1fcz))pMAjrvE>7Pyn|xOhb*7XKXJ;N;%??GN*DaQ3|zk{Hj?q*r`{Hu$?M>F zYl?VVY$bmW`N@Oc5!=Z}!6Sut#4d6q{JT!_pjNSmdUi3 zT``tCg~i_!m}{+^gbUdQ5xMfYy0u;0oya*$j{&LHmtr%X94R*>7l>EI^v4=mm$ z4v_z3@isBxBe%bIe)qmu!;GJQOds~XnEo-2f5Z=WL7DP_=-!>vosXcp{!kP;&{53o zVh;H{=8wci@;K&yi&39o{&eP##X@oc_~|JfVk^0X`4iE->!ds0UEszkpNeJV$Cy78 zyU6>%2c~q2DW75fN6ep#RpcY!_ojRy_LCLO^_OC1C+5e2Kbg`cHju|Me<4#_`cq8*54w~2Z!z;b%>SJ^LJIb{-Xd6rn;$7PGj9^k2S-hl zq(eVoK7L=&C)NGP^4a@+@ibl9gI1a#zi^r%HF5Djt}vulisR?$rqs^GUmsyg{S?RR zTLaPnxf}W&i3mtyFB?z6>tO?uj%MSRObbW}6vz4~DT$2rQBn%oHr<~eQBshre_=$F zlygG;DN^1E^`}S$Tz=WKQ>2O$@`p&3^B;l#`(7C$WifAJ{%hK4QaSS$VVVVZH;z1AYG(F6 zzdS=agmGm)#9x=skUGfA$US77{~1#B5qCWN{hju# z^kHX6xqWPWipU=@pDneKyTLh`L#2dYG5=TQ zbEI-|WB`7@X2wa~Z0zZ^FT*@PF0`JZoA(fNw0RJm9L26*$qC5;%10$t9-_b=BUfDcF`rB<}i1^ys&q?Gv^iwj4=-I=2#_by=W`+M+UxVvsW^JLU8ySe;X-~o!yg7^VBTM{GP^=(n`{gy51%-+v~Y$@s=j`@e< zuwJ){ps*fXC0cUMe9sGUrMi|+xzB}Uv zsh1qXoF}Dgm_HVrJ7a-VN1n>OP!e>SFL>#UMN$sgVa}Ht$&Z3>p0QYpGBE#T<|R@g z`2+B#8B3*B@^{PyQoM=ze={$W%E%|3>EyDHi6BV=k1c$kSN;8Nym*P*s__^TQ#@{BDxVQg=pMR+=e!J97 zo(0aCxK*l+#`tpP3Mpp@x|I12Df%>YHS?WPCAk5-YTR8?-02uU563@i=TJX$k9+Xnt zKh$A8cYqgO^N^Ghi>?Oek9=6_B0mXUcg>?x&)FCs5A!R(rcUY^ik=M4ANjb{aSpl( z^0!}8FO|ii-(h}AN<0_+5qNOIGg1}#C+24*;XI7{hr;oA&2A}|JZlKt4fdMnrKs~U zelElZC+v|*n9GDj@azj-l)B>Gc$qK*+&QXIiW!Dp%;K*|1>`L({+iS=9ODl$zb-Y5 zKsPb}ODax4w=*A*%0{7knBS0gC!zHR681d7V}$D9r<$RccgmqEarEmtR&1| z%Y0bcO}?A?ed!pvp7}#5^c5iO$P1vp_PVd64zB(n_}B^c-4dL1yX#YM{BB7hZ-@F%uj`g< zH2eJ(ncXcVQXJ?1odjRm;Of7VQpvAFeN^^$QaV?EAvpJh{O_fF@;8uwY4-P0A(uZ9 zyzPYiUa5+V->>MEYRUNh$zG|RtKU4bS86_?{%7gX3H3iqZCpP5y(o2^kbgw#;o{e2 zACZJH{Ca*M@OY>GJb#j zsFX{_^&OS+$$0(HQK^u;9Qr2@Iw}>DZ#3NNFOEuO%sYfeh*xI+E;W!3f-@qINv-5| z7XP25jCI$yL+EDl<5D8IAN)x6pHd20Jm0PVOG+o(;9c2*TuzP$KbI}aIhVTq?h(d= z_hw6S%Q);m7yM?nBEwg9*m!H0H96*TbQ$=oY*Vf!9|!-PeWtvdvpn-GxoSM-pBo<` zoHg@oxtBZ^e9_FIa(ybsL*O|x&ymMm;oAHADNfGd+#eYy=W_Oo=gLKB`uz1gxeP4~ zg45(V!g+Eh`BS)(<2PTtyln#OFT7>K_4hM}$>~>yeYQ3n9&?U9F2VQR?GbVf=SzJF zGJGY+ouA;w?@>p}ZR7~}&wC?A$z9~1;P2O~jSJ*HW=C*;t$iAiD5p+z>m9f=gquHF zu43MzxId=%4!TJ0!?tU(5>1Ma)~2Ao$3vG`XBS1NA7jfP&dx~5}{vPt1BBshM?&E0S_~-}EHmAu=S;Hy0nAaGl)4IV~q!F1gm7&%p@yy3@3rS#l>@z|T{1DHO?7T>jvMo8)@VX*oB`O_Xnq ziV)W36w7VoGr**OTPgA>-vLC$G88{}-x zgA+>S0?uhUo8(f?gA*LNl5<*4nOx6#aKaY3iE~=ct#TV$naAdTo7_phiOv5uxrfUi zoN&85z&R~vt88D-)~DPC`L#KB$T8&m!HHpBzobs=U~}$^atvDN07rq#$zOx>M>fiF1uS21J$mjdvbYTGzX+b* zHn&MGC!YsiId{JtyBy;w;Ig@I%26xOQ^AkVJtUWrH-PueZIu%WF}?%bKKHOZK;8}Z zUH_q+x)S5A1J{2fmyzFO^&Rpy@)zKk>pzp5R$;yy&mZ}v+C=S!pK{wSxG zVE#=ISB0PC4DzkyZ01eE-QXXt|4FV{kNMAnhvxn)H*+47dsMF3fbpLpeqHY0ay{qk zb0d5M8!_&`816csEBaDP!`_~&`HpQukAnEF+>?B{o5OC(J;hha`B3fW)>C3(a?OsPee%@%`wk_yg;OL}eUnBWtaAMLJ z-yzO9^Tzrr%Q3$d;y2G5=c~94{T+DIyvu!+x1%F2apMzw6+`1h@;JXYZ-%do^Oy6oeJR^8e>>#=m~g!>pYtE{a(%(=7=I1o+Wb6U z^gZZK@R{=$`8vrF$*v20Irn1xRB+P#mA>5j&?CTU^KbOERiRVBKPKGl>*c(3{%T)V zHO8-o_?r1^eC=fSdjVVLulJ?jkMT`S)e3S4a z_~rTKzCC2$7OLJQMus{5yP! zwb*|d_{aHo`HGmg3wMBz&fo5fdKmlFfd8If=_{zmeEj#wdwo$2=thX2f8~9?)@RW8 z@00iYnw~|sv-m^4f#=b`FhAmp-s`$dh#KpD{_~hGmpqzzm#?e|<5QWR@MXP@Ucvm7 zuY+99{Isv&0LC9>e%7bIf!@dboG*{u0iJ!q3%+`0JimNAZ?CTht>E9+uloAP`1kdz zz5(+0m%4u+H2K7XZvQRHQSjh|CZA1?90xxSN5AHaCL7>Ad9V3m$#_4b*L?Bh(;*Jm zi~ADMbbj%gFO}jr-acPC7mrTb=gX$}Fqp<0d9V9&x%i{wU-uPLd?WOS`-k~T$>m_U zKbfzb%YQ%bU%p0)7yRH$_Lmp zR9Ze~X8SRHSgf+`OJ*hV$_U}bMQ1C$$yo84sKp_j*>^doH(fLXxxr{kp=_B6@{(R9eCF5(%-^Dy!sV6sqdlrpQ z#BVVEE^~sCOa2P{-$f&pCh~90qm<}w%-4ev!e5InP>RTBFefT)He%+FMgkyp9(`O}q- z|6=?B@cCC}DFsJe?+~5?uad4)YRIpV%YS#{EfFnXW$|@N1NnXMkj2?b8~Jna@WnHg ze)3P?af@du(Z{fU0GzRSwvs}2pC&wKagLHpJ_Edb@f@X$JRH1n@m!^zd5dy6_;vYu zWjA>$7|w5%Ch}Zx#f7;_3warM!l+!Ojof&)`~9>p9R;(z0qKA_AkQ2ej7Z)oze_?zY*jTbwDdZfrWS!FX zH^#Fe9=~M0k}J4h!E}U$;PFc~C?(`uz!OGoQmUBY{%T-V*sLh zbLpc>wB>q}FcE&=H$~Jb{mk2iTOoe#(#Mok+l_A*D!~^meO##^KMcNN=`N*%8P~IO zalO)qR(&vjwP@1^>s3k8b?I*-vR65D{dcLT1bNLfSy{Pn4ybbzQT)0;mI3d1Q z(Fe2rqwBj~QlilG`}!rN{v?dgoeEF%UfQULQRo%SFDtoZ2i(8(6{U$>#r&!geKO|n z2LHXZNhud|R%5L(r;7bY)D*6zN?_+*b$tSmguP8XAw2;4LeoKix z4fFp5XB51xl#s1V*Y7AD%qu@xIKSXsCH8c;936ht9Z!b8k zYVa~Jg zeIM)JN+$CbxHd9E__E+*rHgzR{8PavO63`BeZqHOVcBO&=9%aL@F~l_QYy&$)o%Sa zN)_jGmwl_mpN07&AfB|WM``1nw(LixlROsUQaEhrMdq?@A~6 zCN|!2C3h&s%fM;N{!|9Yl`Q_Zl5h^jUGG>H;qQq<*Mgs4=JzY-hTXEv^4G#GYuw+D zueg5;tQ`{Tl!g#a6KNVc!?;h(;{5Qd07EJNm7ok4@ z|5Px|zlYofKCt|1e+%b#muLBV$VVam#qw-_bQ0FP^ZjA@9DgfWp8@B`%jfxvF2=Y# z1U^q$vA`dD33>>`&t8%5?h9-_;6*En{SD;%!RuF)_%klW_+Ie6D>nKI#Tyj`n$ECl7kwA4M)D$B?&!lcJyZ$DyOIgjsw6^%)e$ z-`9KnS>%r)|A&=({W&Mp@Ac=AalF0$0yOJ)9P-O3j{O?_6=e7ROwy`Ge&Q6XA%6pTEyQnw_#QMH@5_Qi{#J_PcyIgL$xlN5>+;+FPA)%X<=cL7B_2PR z|DInbv8&4HF`~#eOR(1GeR)vp`Bdb2~kKsJ9>N9^f=Mhm~_=}lagi)u! z@qJ^LzlzyApYQVTVcsF!4RIUd&CK|Hx%&fM{w}IN4sliZ#vi;9U!U@saDG4N8-E`2 zf9U)4-}vj8z3<0-;~(IBW#AisZjoDGCM-D_o`)0o&L4l1Ye#5@eyZ@JKZ$u0+?>We zU-=Q<74H99BzOMj4(j#C-R$PW{f?kMC(!F}V|Il9Lj2FbPyU$IY<_G#p9GHh?P6wS z@GSTBJ>oAR$B}EuJU`pw^g7S4ir z@}S@RaqHZE-gv+H8<`#9YKX6acn^6M_}oE9{YfR^@m1ldKZ~;CjNkUxd8-+X`j6F0E&>H0cB zZRC8m7NMqY#CQb!nZGw;keW%x>*XTVT=MA<|1?5W%gI~dbaiiptTv(PdO4rkN_Ib= z{xm{S`ze1b45JFFT2_kVx&Q38RZ-O{X7Bx>s(H7%@g2hVu>Q-7R5hv`?ay(otJ|2j z3ul09B22ZwZ47_!j%Bvh&K>A1=D}*|edq6zTF=`+A z-^`b)aSvhtpP5tCZ1SMF?s_g)tH`G^r>Z^Vc;*ReYc1A~VGgP#52LSQo~SmEZ(vSW zd&xI5PgWBi!Tj5qGt^x2gUnOaTJnp`nQ9mLAoFxJ_ED_=j5$lqCHFC3t5%W+UGJ_Z zTP=SK^G{`-r8bc-WX@6h$dj4ps&S8F{te8zYBqTd^L({}T)~{DHj`_a7pnc_-OTxF z(k|@R%)CS`B7eeMpw^RrW?ruLkRx*4`4_4&^;mxr^C~rid=7JwTJr?P$1&fm3QwV@ zf{zpxt2N{snAfT)4Hz$B`6X%<`8MVaY7e=Fxm1N)jIsCQbIhC7%4g86%w_5!^5@K3 z)B*C(%;jq0vzRZ;bJugbT1q~Zxk7DW-XRPF&%5$YHTyX?e}^yzTyoQ0YSi;sKMCyI zv`wwsgI>sdkJ`T%y$1aHO*_J18NWRLHhT-8a3}V78fGn z{O9=M8nwR}9lgl?{PRII|6k$y>BAmU?E}opOZjlUz|FO40lAg=Vf7HX8~p9fkEn4i zn177OE>dxfxuz`b9PRZMR=b zLb+_T`B(7Wt6x%c$^NDA_xI{XwTyfYc+cvW)p~LY_>I-CsIAOfgsZ`W6JAx5 z-eL01^@@e=U1;$F3ddPuzH!FoyXIE%!6@H1O;T&eDV~bODPG)f&G--^Su`TJhKDdKN!l8z3KI z9;O}p2IF5bkI>q?(MOp_YDwR^#-9(ruem_WLMum>yVnnPA&vb7shIx z$_Y_BD>GWdtJUt_9Jo|0-|}#c@5US{~UdgzKl*rfLOT{^Q_^6Y{UrD#=-p|LWQ+wHk6R_)Tyf zSN{XJ<%If)S}VB@@_%1DQEMkZ4^AF5QS0RDed{J_{U_9?YXjsS$PcVb*TnC_$HN)m zBsA^c6fK23Vx{}{_Y^Hi9s^ETH$}@Jr-Mg>v&ioA_td}?EeFl^Zz{ygn7#Am=~@fM zg?^~NZryZE>|yhv=L1aF%9-)`2y-AF`@I|YexJ?I%E)*<^bDAIO(J=U}NtHNw;H}iiYUbEqODAsJP z_k?(k)_+1gM@#&XjZgJ+v@x9DUN=Xp@5TB32=n=1-St}ePht13%hh^03nlZk{GT!Y zU&vR58?;*HO~L@!F1bO=?{nij1pUSc;igj-XvM#{hUYbbn<5rz(Z|q5kU!hZ*P5B} z=fU)0i?zJ}xpD9HS)x@jZ&7xycHfUnv|8pep&8scYKhj0@#rg|>g|#Otz^Kh-=g60 zyh1xf{&O9ipOmc7^gmf#&`R9nwNT4KE2o2hE-BP<$oTKqg<2kYIK=xQUO>Jad_XSL zipZ0wUkS7K_idq8!F-VZo-Wkvzi|AY&W35OU#Z!G=+0MI4E3t8N-HK8gPS5&X?6t0 ze}nvy!i`!lc_7ctFVgY{VZ4mh7irz(t>B^Si?qB*jN`wDuhzOm^h*%Ge0{NYOmgiA zo#5%~OSB{(#*edp>orkv?H%vywNx@5@9VWpG9K^iHTV~3$ZrwE_3-)H`VCsHj(#{D z{yk&;My-K)lW-Emrwg03py9?h2{B-}KeKksL=OkYTbs0O3q6i`vlg_`Q<)ttmw5+! z|NOGPOxs3w-#@>s-=ftpd*`F&S{qtO-w4-JY`9I^7I6D{$KUN*&R}NccZg?f*s3*> z{iUuew5XFXekS<34R>gTMk>3U1zu{i3p4KCOt1^WCSFkg@+ht&EJwc|*>;wD7{aP*AVDST51NkHtKcF=;d*iieDQDn#hasN1u|-Qg6a5poVBc`$r{_Q1yXw2ZSc?)uq{A85_wGgt1U`{f2z+Vj5iKPi^V`9p(*J5n!!X_lo>}_4RyQ2u@Mv{mP3ix% zJtM-tuk=r?B_Zs`N(H@lB>GgyKUb3Ulu_tW)E5-{7u4l%(|{$gg(k_={6Z21rI-8 z2J0zF;qlMe6r~rS>F31|y@-s*;}E@sjK|*)y^K5u`oaCO^a}D)@CBQO=#^;pewsdP zh@N#ZuIKFA-2Bt@JhX5TSOphe!s3E^eV6M!$vFRU5Fb4DG(B-F#%F?4$HnMfmtx#~ z9^3X!=jin*7%y`36XNyO%Q0Tg`VZ4fQ_=T<%(o(bqzz{=*~dhwO6%Y;sF=co~S zX%Kysd8D46j`rW~#xKzGufqD%!1rvvP;VxW0xyoZNRQ6I_+{YU#3Vg|oCR*b;1WHF z*?a$w(Nq56AhY*=9-|jA?-1&se*fk%`Znh6!pqE;>NVuU;I}uY=zEy4zhAseZ{^&x z>T+wdt8u&n z$UoCb*9*}sKLuRNSrw+}^_-g`rsz#n?>>(qy4bNoq2jE^Fak}7Z2~3JU#YWcl?6_K7S%l@8Fyq%-3_T!#F;FqCn5iM&t7* z3iJYIZ~Owih;zs((91BN##^qJQ@uN0$XTunGsFEuPN5#n?Dbov$8ruitMo+7r+!6x z64hhBB0YW<-|uFa}GKC^lZ$h@tXAkE4S?^ei{cu0`>nY1zd;MDU2F@X;MQ`I=?HttmnZ5md zOOIR5ujehjjB|4EUA>-+>v>-jf2PwSD4I;zL@NJeZ4zaF1a!0h$&8%3N$j^8N5eCnqej-@oHz9k;LrH zce;^>ru~_2v~W%iUTgG_-T9YB%rbUw!|`!{W*IHa-u}!oS~-WDSw<)3(|U4@E~>}% zd-#5NMhCOkZ=sP}8QzbOv(PBx zTEH#4nVn4V4h~QE~xG(JF;0mLnDm-3k#EnM9{b<~u8;z!&uD$VZG+H=^ zoEwdHW^cTkj1Dv%KQ|fi4~F}PoYh7uv)6BpkdYQfT+;8-uX+8HFsk^Wr?oW-8&FuAi(8%Qs=i^2p z=F|LZjUuYY{jN1y$k^`@qm!$L^Kqk_Gn|hb{g_Yv9yikK!|M+@j~gXV@bjxTil5}y z`=lX06?VvZ(un6=?KBwhNDtT_Z~f02t!Vmr@~jd4H1>DrpB#L_NO}g1`~8y9@hlqm z`z52`dDq_lykrz{4mmFwWz61qFB|1(+V7W*4l?e~t41GJuL`dj$2fxPb|eyfwF}M&e81{vqeEk;S>%dEY2z_WHLQZD@M^ z+KswKoG-q99Y*lw@cc_7I*sC2(D?dw8reJH$mJYzI*meRZ@e#zA~db%3!{aM z>*+E&xq4Oj+UVvSa=teDF`xFk+c-w`xZmAI`fK6&hMfNxxy;_{*JI>!4mmwWG3Hah zAB?oX5nkG$c2oQ!O9+0HrSj5oV6pI*N!O#R>C`G%Y; z%nCC0yVC4o_TGPKX5Po)`G%Y{vz&9a6EYi^z4=ZyJJGa1lg*Tl@Oa6=sb((O9j`QE zx*7io#&Lh9n<>oR_|wfG=a4hq%))$HPnMZY^>{pHnN4I|&$VVhSFZ}$<^boAlWpps zvhk_kEYn8Qe$O&<$=EN)EN1rRH`nap9CGHG`e)(&s&;bCL}qV)ZZLDvv_ChP&76~i zi_C5^?$1)Qp_AXArDij;H~v!d5a*Dy)a<}~TF)}Glj?DQmYE5kV?SKa3Ny&;^;>CX za1J>u%^b|9em9zjs2=;>Xcl$x{cbYzz7DTn6;_+=oZ)=mJjS`&S!2e0!|JJjiJ5_> z{V6dUI41{7%{DUbPnlWOjpO6-Q)V_Wd+RAP_izq5Wo8TJ(|B9VLsXCJ*(I16_nP7l*xwy5IaqDRlW~7`ntf#4pPi=oV|YAO*lFsVL(Wb!hS?kMAu|?D z?}vxXGBO@N51UO~y(&Cvwr~zPkDBe6Py6$j*+KQVKaZL5y*PjDx64dr_V(uqb2sOZ z^Mu*Xx!QTkJcjku{~0s>r|^D^2tH$$b50IEZ#Ix|fA*S1KVv@b&t9{f*&Bbaxs7wk z*=yEfK8@FC)=@pKr_of7@auWSOl9`^HJRz0Lr#;Kjrr7XpP57T*l(ZNOve3bHji=j zaJ`0E)aQHW^euM>}U4+cbOSSv7bBN5y37q_V=)pgWYB` z8TY5h>_3KaJbrr2_W$wY_n4iW;e6ceW%kDV!R$lRdVVldk7GYvPp_HH?Ctl@W-ezq zA2$mzpZ2@YETVec?>@7IjQxH!JGpvQ=r_ALhn#-1AM>f-Q8Q*Byngun-OT)xpWiXl z{)=Dl|I7-`A?JVQZqC)tfZ5LMt^aRR{5#x#MDTAjk8^S`(kdt8e*3IU0dCX=|Ne~o z?X&Wjz5Vf71)Sl0+$zC*T94lY+haAI7V)o{5S!2-j z`dL;B8T$pSKCWIBPO^#yh5Lt`ldLMv)y~OQ6SLPp+KP(A_2TguZS`gm{0viS>05R{YF{Eetv$5Ru8i` zztL8<8eV_M8Euttu6B~FT4rzk$yOVht$#!?*-F%~zdK%XaGaGz#{C{|#poEv{T^>6 zGJE5Xx5jXW^KmO3^JzU-SQ%80>$$?(O~(DX((2*rRUysl;|%BHmSC{)sb9zv(e(O- ztSmD2n`9L*d-J=>>fsEZzgxN)-mhwBij~Oh?N6qai>Cd_w3<052eYhhGVV{d)nM`a zlWjFKd*f$Yhd9IexYdFAw4Pa3C)MNr%(4<}?1$^gv4YHAzqwWhXE-0XaxkCz$%rzUOChHhyI3Kr^ zc)s60D;-V!_E{yvaDLdY*{T}O&u_n_j0hXf$E^g;a6WFqBS5+NzG;=B>G*lm>f#LN zV&{W)xPF?+A~VXKEToR3?_FrW74eQSW~@%4V+${iW*A96mls+hfg zA6d1W;e6cMjrr8?V`~r9W516raTMS06Dx+<>-U*e!5PlSt=*jAeB5fsdg|Y0i5Fl$ zJbt>YJkD@FZk3bq{ncZ^BTm`*3hqyjmB;Lj-(wYUhVyZ&1oLUUAFNWU$MyVRb(8V+ z?zLhrbo+b#ezxK`!}++C#Oxi9ebyK>9Y1~69y0d()e=VY{ras!&Tu|%RdTL&j#`b( zUjIL=9yA?4e^}`kh4(8t_@`As#{G$~lal!TiLld|z4b)cnVjMCaXT0DX@4T^JgUe2 ziL?)qaXpePT+FY>XDgiHeB6#^_U7-mW6-oeep|c*=ZF0?JCoU)pJDIe4Cmu^2j^^`*WI|G=|@w)9iF+Z~W8jOwRE6xSfmnG+vCI zNA71*bi|qntZ#`q|8Z@nEj6J|PIhbO{!Xt;hzduSNQtcixt|!$VVD`pOwZ-xL z_^Eajvp3!ZI~q;L+XOqGjK^EhF6HV~VWM5mIpj>Vt1zGTC*5wQdfcCMJ3lo%-;gue zZejN3mtn_W!Ot(l&fr|_OtlM{z4=~kZ$s1mTy1xAP7YpU50LTrooUxk!0~Z^X4*~6 z-uN@^7S17OrrnPDw4T}a0M+AqX4`#1em!$+VPbgxs&Kts%o(m9w`(}V_2YIkv$vi+ zJ355@-2Nkid3G;nxPIKONDq%!8c|?3PeS8*3hdge`0)$udd_hDxZTL?jknxxLeuNL z+>Xr%_lN7p?QCXme^%MKoZl5)vZJQ({cg4kn7w|*b`fW|e%vm@ zeCoH>E~k3zx7O|;Au))rn8eV_M*X*geZ zyyW1mc03u6pRIN~8TWgu-NWpyXRF=E8Ln5cg-q6u)^mp~qG`YHu$#!Zp1bUrtHbkG zh3$4J=a94AuH#(o++!bN_SUn*?m^RfcGxM?`SsjyXOVF|58A>EjN^J9w4<24^*m_D zaE9wu>;%lG_0-ylRFAJutzAjR^*my?a`kY%ik+AhULRbqVrOxN>&NY4W^X-D*i~p+ z&l7epXSjac7O%ni<9eR6caw2F&)F@^-g=(1TRFq^<8~+J(|TU8yQm)5^MajyZMc8P zdC@Lp_WHeKcXEd7Rczt9@cOEqm+d%aZ#_+R0h-p+WG7~0e>~or?G`ewr^W7^iE&&{ zi(NZA++P)1?0U{{{kYx8?2UKO?n2Y?cF@kv!G8Gq9I~63z4g3pw{Q+QZ`ojAoy!@nAGZscz45-Zi_o+`U)p_ST+df_N*>?u8#~B3 zKwX@OG?_0Z`jQzf|o4I;b_})%f5bhsxzPB?uS35u2Ma*9RpY0|z9X~(Y zr3-QWc>MfoM=e6Tm*bI2L6doiE-{bl!2J-)yGvQw9a=Noc_KsK}2Z&09#bI2JK=;B=M zhyk&HpRX?vho=4U1&TQ*2erU9GVYHRNLhyCP>&FAzIK%bhfj!LL>wQ|F9Zl;wEfBu~=ZmlRnSoR? zu4ibVmyGKf8W0Nk@rMQ!&T##BAez}5FD?*+rq??z&`ieloEOkn^8Mlig`DB~@jxZ# zYG-($k=g4%GSGph^^6Q8tm4;mVIWAx^;{h2Bjb854v07M<6j)mIftB!12N3rc*%iS zG_5B&&_c%bj1AaDe7|vl3eF*CTwpinYUi>*JG0k6H6Y#;p8tqoY9NnuaxfSuC*yk3 z1DQ8tKCUM{kjLyDAL)St&LJl~P=fh%yiE?2Qav7TlLOskTu(+IW;MT_sew4o@cqg_ z60vB_9rtCTa5F=e$xXD%-;O60`Y6Y{XZJ5duBjb zi~aHVofC*7qUO?d-a^?l1nZ5CD2*jXiJvRiJ$+(^c0lkFp zw(TdwtdhYB`6TwSnE3PveyY_E0?@KP7?e zQtXH8*$}8>_WG3u8aRiX(m)gDQ@_oDW~#@2n*$k}_pwZ#?=bk_-vp4=dfp*Rz=bk_}=F@ua z4fIewuIJuBMH#=I`vM)zUcc%<7w3>u9q7Y+>i0mPpX#yS1A&HH_L!h47 zTTeq^H|LPk5NO7H8t<7v3)SO#o(Ysxg!_k_-GNSKuix{5Zq6a+`9MGBQ@=fdV^oj* z_5`x;;QQ?jR4{w}8UvM_Lr!C$4)dwsD}h$3$9}H_f_L)$ngR{XUcY^TJ)GhDoPie1 zr+&?WLsXCbngdaH@%{D(l9;`IErI`I>ipyCo$vpDqS4Np)%E-5xvuNT#JkbQ+WR#6 zSmSUqArtyc2+f+sr)`-==GYZNXoQY6i#77mrjZG4VzCelAr?Xiv5;wm@9Vst&)4^Q z{&~M$ujk|WdOWVzdEcJzbGtg%2w^slm(CJqf6rOE2KA`_aH-P|dU^eA>4!_Z3A4ZF zEFDIM^Zi6=+pl0f+`lJEyE%*gPn7l$W`ECFIsogj-&3W7SPy=lD&0bc&;Qe?PUgZX}- z&;FiMY9X8pzaaH+7Wbz}8UaQ>MbakWRJvFy$wm2P3reIZWbjiW&2tuhN~A@?nXp7! zh4tu1lGd;u{76#Ab&)=MzFV5*Ec7&~_Se*pCbbgIg@)A2S@^M~d0_NoO9MlopYNAS zds6vtqJG(eU8UOVfx*wNQsHpaFCN=fDkhu>ca)!SQYAe;;TOX}n-^sA&f zV9cjV8vY&lhkUA~+7Vzlzco_l?|~to8maN-s9!u*BQ+Dwgf&t-XVGtesRJ1O>@Te$ zgP&TddX(xNAk`Aiga=3soP}OmY6M2Tw6u&2dIw9zw@|%0Ng>SUajA^6(EE;54vc!= zk%o~$uU?uY_3_x@Qsw_e`fMJT8VTpZ2C0j)&_7C=2FARPl6r2<*Te6Nq|(Pq#uzZ< zeVkPJ2VltiIBDaLQ9t&3iP9Ef_WLJN@ojuPe!h;EN`TSN@lyAAq|d&;mInSr^-hw8 z2(x)y8sjYXe~L5?jC!X?<+oG4?@P6u#pm@0(j;Lvk4sC0bKwuA*d27g?NS{u=F=_} zPk=t0#|~*28S?3rChvsnkWZ)7eOI1E|4ylga3<`O1~>~pKa&Q5(a+DMEo8XgT~gH~ z)jM0NAy{dTQLkHCLI%BGNJV#3y{wca%;s@vgm5nWr8LV~=wBd}+yj2| zd2CBxAT1D1r7xD+?uF}+&t+0}3K;UaOiKTi_P!06`+X$Bem z{7Tv)_3_wMQsI4(KAXoSg|pDRS~7r9?`mlj8T77|7D#Ss)9C!7oaDD`s|e*Ppa0;8WlNkb1(KX*!%4@Ld5 z1$Rqze+LFXcT2?&NB!clyCsEiCcIlJ<1G5!E0qJ|{kd1_Lk2&8k!DDJJa(TnM>rGS zCoREx%;$b-8S5dR`=z!=qW!YJx0HrBi+moGlt-ieX2J)hYQnkj?@}{ovEN6e5n#;c z5vgqs^x=L#E^Q&h{eDtX9*66Y&y&*PKcar|*pt#S;Y|3Xw9Z-dTaY$@F`osgX&&?- zpJ$|g&ce^4G)OoTE=r@Y9`ku#TETkA=Xq)N397dwbw5e>_oB2xI1|1o8BaymbK$a7 z!&&V2RjCIU^LbUOTL68?=M8BI8S;5s+ISkSLq2aylg~!_?0qoOG~rD6wlvRK^m|8I z0LFaYk*XI#5Ayk!)WKQg^Pbd2I1|1n^}>40=L4w^>mi>HB;`4(_n}nBS?GNvO%u+9 zA4w~ObK!raqUU)%>TgL6z?jdLr2G@~A)lB$iVXP_%F|159r7uZdtS`5=wB%J5zd5# z@(^c{&rb3%Fy^z9T=){`K|V!t4QHVjm(zqZVO(y6^|=3Hxe4nbpJKW3WvaJ}-1sWp zUx_?Nn9bwzI^kR>$;t|^M}1Xp2F83;*?$f6As$yUGoO**q?{zHhYR*9fzDTrOFQuIIvSausK>-@W8MV9aMPx#b>8O|c_1LQfvY#x`FU_I)kf}|zY#x`3H=;ap z;dkUp&cgp;au+b>eVAPHA?QQiN6Pcaa2}7ASN{#yA@8H*vCT+79y?l|Ae;%0mS;GN ze#gqQz?k>3a{51@2YLUG+|OC~IZhrV%;s@<6xL%t$ID|_5BVG~mwin2PLyjn3%!%% z3Bqh1mlp}=!c*ies7L)%<@6_@m)GBxW-pN6ia3=%O&&sqe9n+3K85R$&lz&p=Xn}Ir|1)_6>mi?? z$?XMHuS=fbEcDKnD|g6W2WIoQ+(Nh-Lb(DN^0`Rf zK!$uSl8XwXe(~5vatYx~c#-UL7X2=k%YZSTi{)Nq$mdddn$*W*m&vn)**q>U!g|c- z3V8|ZA)hPcrZ3QZekG4^7WrHyD?3H|W%IaPO*j``EjM!(`yG_Kfia&!d7f}8JtVIp zLq5auz|PPg@)?##Ig9?o@;Kp4I4n=Ydh~OnJcIS%=SI1*i250kJ2(ryo8%3`Y#x`5 zFGl`y;iz20S@^kC9sou^x5{mC(1-hdn_Tpzs9(0=4!Ncn82sEJJG(^s@z@=58R1NL zhg`*3^t)582FCk+r#yrV_xmn+fz-2kTwWr~=5cuq)?+^R%IjDU`P?hleI?p2`~4HS zle5U@KDnDPo5$roSdV)5%l%jndiTq1B~>JeJg7(eWxszSFLM_8yeKyrbbl|(-GtdZ zE)R1S`+Zej1;%_{mB&obhkV|UYptkXw%~2K$p(ge-j*FV>c{4Bxr{KI$K@){qTf4m zH8AG$jy!}6`TR>>AocOsd-4)tHjm3|upaaIKvojbely_*@)R=YeJC3q-QP!YKVdeH z%M*mzJT5PC7W>_jeLvFQmfn(A2&d99r7M8z`F`1gLZv?m4EYo)jb*fdq0&s4&ErZt zXVGsbr2`oA*-2SI20ukg@orQvt|)}rJg$^+7J9`>JuvDOD;vn5w~Ny7RjOB_%o1kv zxUxo=&ErbR?%W^duPRNzcz#sHDd*QYr_!b}jtu#@%IqF+9rAINzHPL>s|*lk^SCm? zS@`jkQDF4rDa93_2Yv!2%~^aNc2(*Lvw2);hV{7r-INxrhtJn;it;t8x4Tl$S?KMd z%n)YtxUx!^&Erb(Uc4Ul_fi^xF`vB@V{g!h&(}W67&7FuU74wb>yXcOrFWk^i~ie{ ze!^@XSB5!@e5#cZV9cjlDf&9-K|cE`wVZ`sjZ#OL&ErZFtjGQDuQX#lrBfDC%I z${ML>zxS=QRz>?|^SIJWI2WdsG0tMY8D#?)^T{Za-+=u>K8Gsx+oSzw3yx4)Q^1hV z5lZAEy-V7wwnL<4QT`PIou;e+V?L)T&9$Hh`Lrt|oQ0n=lrh3= z9#^JdJ?7J)Ok+Ld)1fqco9g{U>Er zJ_Poc*WZ@DQkf^5N?)V2eka<0w%|IY`%qxW=Q^eKFxvk*rH(NBeQ>3Tv*p2-KZ$QsCT2%hYWfn$_S~C$8J(ej-YxsDOH5o zJgzix7W%g;!@zicZdFyXbK%ED1mKQ@mmON7}xuB>qu z{q9uOfzi*MN@FAFfuFmSKF;F&+^q}{X7ji*0_*Yo+^dXYJ)EC=75`|e_ZOv_v(URw z86nK(ab=cpF1%k^gL>4TQL2ssJvcuz$|m7ddRFN>HtLrxm{UfYfFYkbrR{rp7X9ax z4#MpDZY9fEM^|@{XxxKZyFVd0cI31BSc{)#}rte(_kLT1%MC<7xwE(QhZU z5g7gKq)sA(pCWag)U)@6tDA(`Jgye~i1)|OQ?XhMjC#fD3^M5LqL#JO{gtQ{gxNf< z)^Ha4lhj&Z)RR>Ibnpv$iaN$wc^f}QQLnE40-RW*8eo>$DUVF8ws;{Ty5nn`t7E+0i&PY)H!7Ev%6Z@N%i(n ziwU!NTy;1Ly=|%wjC$MDL1fVTnmSJE+4CyuB;icBw>k^!@&5gnI*0Xn|LpHC)v+@p z|C#XXYW2_P{=T735N6MhtBZtlVM^WNEcUyvT5%TW<@L9v_f`7{r_%eY(yCO&z@IN(`QF{vFBCPHp1+A6}6AE$mb|^3K-AhQL1xJloxwm zMXg1Ke2!C#x@kVgsSao1=Qy>DFq_BKDp-$xj#sO(9{e1y4k3e|6V(M$&z>Jwmk6`( z$JI4hk9w!5>sSwZr>ITm(!9T~_H!2d`+-{g3!2Xl)Jnqac@?#hv&g4i?E%Jo+SL`p zsdR^0bY9diThOV_Bg6UWR985Q{+;R?VK$GeTd*Ge{7j8yK@a@=Ol?Jme7e*j&O+~O zb%Zeceq5b^^{CgaPGUXib*n|^NBd=eZ>jp6gj14fFYmD)aDEGEc#!jwi0IZxZ25C+>a~NE@1rk=L&TT z8S?p++IA7uyGrdK%)TF2vz&$A)oKqg>RqiaAcNku>KdtM&#S0iy^%h9eq0?Q%$`?K zr#TD#>($ze!EZi)_PmPPcS*#l^o{E1rNH@q*@BzY`pbYJpPSU>EAlMzxk+6m%)TF2 zH#v)bqv{qg`WaPQ`Xhbz`{3#zXQ4Ny4ije2kE`Rb9`ElT)d{SJ^Ycfw`d3tMTrS?Eow>x9|!<7(_Gz8>}NQ44|5?>%ZG zGTgr@wVkuj`>Q%nm_0wPZV=9e)2cB*_5Y?;19Sat>A$Icgj4Cit0Ty8{~lEvt_DAF z{~lFaIg9>}s_ld`;iGCdtVchOsadRtd>&I*kipMCROgz!zR-I@%@StMkE5nU(a$q#&9$)Ke7{usd9@K4{Jf~f2C1JHRfV(Y|Dx&;X3wjr6|f%tEUT4R z4}O-_0c7y=iaJN?T_DWnadidOquzhi z;-P52neabqCo<@LqE2xZ`}538&IKX`9H9 zPh1~$JI8G;q&Nf#WzO%;xSiK2($0UwKC44pQn`r z^M0Ao)B2FXPoT|^dNz-1bA;JEt}VfO%x5=k8S5dR-L&@K(R_B-204p-_Rxw)qW!XY zT&pC^z8}{bIg9=7rS$+~K6_~^gj4B#w4&cf{n+y=+B`Dkvt3)^Ec$QP)(Erj$F(h3 zkAAAP*iE1ZeyX)rWXNY8THhEj{V3%z5tW?(#z z$7&4|RPTSZAHbdA8VIv_Tx;Ph z_IHZb3XJex!AB7J8>^ ztAyF#b85x+MEhrd^%7W@5))&h*@;V0TOVfOc&+6prKdvdlmb}#gY^KiB{%~|w6 zTbm`!=5cKi)}x*6f*vRalfo5!_&SdV(Y)CRB~^nR&T|Ap%H zXg!>T-i2D>U!y$O-*al^gxTM7YW18&K9_3Uz?jda+7e;*_ncbnzNlZe;3{nv8S=SG zTjDJGU!|=OX7jkV0qfDv)!HW3gP*Il=IKa36JDzga29$wZHO?N$F(t7k9xn>jQgP; z^nR^PJV5n+qqWTBS?K*%nSW(%>JHJGalsis6V2$0AoHQTG>NUKlb;W+9WcZ zpD}Iz?{FRR8Pf(Hrv1mXA;N4P*Ty)D`|(F@0T@4Df7EIo0X_Klc3kV>Ed1QA^$}+C zxHbgqasLzABGyAb6I#ckRPWE)I%lCbskP2U`(^XE)=M}S-lL6i7W@5+wgim%{6(vI z4D|E;QtA7(7G%ihL9P68xDNR|sMT;5{U6lQgxT{dS|hASKY!Pnupa#UT^mJ)d>+=O zNqs!_s5VQO&Ewi4tVg}awAeqQ{bs_)v|eP;`-is1S?uo#t$Cj2^MsZq%;s@zgtN%! z8EqLD^La)ad?M<{=5ft`5*YG%QFERGhJ0SsrWc}q@z{&nEMYc}Ym1ykzh!L+7|+kL zHu7|&&)(OgDbG;76|I{vo5!_b!fYPbW;hG|H?s%*KObu2q@K;=TG?}vKAXq2I>PMxajl)R z(BIPffYHyEwoI5kucB`vgP%fueGbT_v89JtjF`VlfHoUaDI2v z%l-*^;HOBh;Vksx`Uqh*kL$C9b78T*2KA`_6}@-~^z!=K(qGYA2&dAr-h~W)biM2a z>POeBIg9?fUQ0L=>UsmL$9|^XkM-ck)JI>Wer$c}r92BgSFc`R= z{v`E9V7xy`ee7k>hx7JTz5bP`U$$URJ^Ly!+@C%50nVcTp862sOt_~$2J6vJg+7k; z;HN@gUWxSC`!n_0*YYg%D)lQ(C#$e_2cK1b@=^W%Ee8<9Sn$Mq({xp05Io3qgWwmt-md4F49C!9(j zq!+D5d1MO?(I=20??d!i&LW>f^m)RW@DP0&)??m>>MK|ec^|6Ry&37V_h;%^&O+}9 zz4$Ha=Lo%$a4tMjZ{#feH0u4p=%-PSy$$+sewy?eWcWNZ>;4*C2S3ev6=%`ES+60S z37hqLSdV^A&>OHG{G6aqAjAD>(bq_QJa)3aK{ykhtQWq+`=ef~UIC2vyH%h17wix8 zPSva4%d^;Dn_fehJ+GqIa~64=ruPA(-f8;M`&6%8AN+voouL~W5wqu2^cupsutRU* zEcAb>_XA_zKh@U>r_yKX%7;ov)7*X3wkW)36@(LVXqM;r@mC!e+Ez_Wn$L^gmG^?D=uM>f?yn z^D251;aqsJ-pyI$)2B}YV?KR)`6r+c=doXJMTYY@px14|b;xHxZ{{rg4Ct+dGvR>V z3G30%HTp2tgP&{klFva8@)^{t3U(&v=Q_QHFneA_ujefGKcqJRW8OphFf!;}uTPSC z_PmNdO*j({>+`T4_jjXSwnM%@{QYz$yisr65g7DF^mHNJ-%a`qVfOvFzDk%quc8-! zf!Cw{t$GbG=6$O^L^zecO`k@FyzkI^cY^+q_Z|8WXOZ_E`Uqk6yox>n>#^UR`Xtsv z-goNG&eYFcdLw6{cemb5m_4tex5IkWyI1ePdeFO9Uqyy|{-VcGpZG_qLDtaGb z_PmNd&RN{g8GRlY^O@1hz6kq;^Ej*5AVWTL`YJNyGpBEH7JlaR!g#bF_PmO&a2EX@ z*9~AiKacBuU!wWU>q>D{&z>LGy9u-BRrF!Pxo|J7-? z=Ouj$8T`DYm+V6OzoZ+4GvP~mIcL%DWxWCz{k*KFze4@Is*iCN`MjnVl|=gNc@@2a za4vj9Z{RHS-_l!w(a&4@FyU1CU40B0{JgK%ltO>-^S<7|S@eHjpCOzH-`7_O=fVxW zSmO0~{yx$xfU*BadX{i1{fRz^4E;aX(=zSzcv>VVNt+!!L9O7CJ!AcG&t zXwj)3$>`)P`b$PP;Y=tQeXt(=D8>ZVgCE7HGN~WUh*{Bo<1xeNB%BEiV~}tzw2Udv z!jEe#0iz$+sI);JKEHuchYWspGd7UneC%cvIkf+7MhRi|`zMCaS@hf8CPMz zH%1ez$9zsTvRDuKoN8<$!~JeES}N%NPBYpFXTsBrF3w_q?M62+?yudLMFzbyj8#$} zk98PLUyJnF?|B>Dgmd9fjA70~|4d^Q81p{U7~2c{L*73(YWI%v$QGPyG*tpa-sc+5 zK2g7T>|CRaFnj-vQN>yGJI|;FMnC5ny~yC_d}El@$77)}N;ngS#w4uAye}}OupaWh zz^MCrv|lza8(Gfc{#|UW63&Dd8^u-8{&V4_MkQyl-^+~#V9e)oV}x)jeWfvl444`}al-GWfa0SVe~WeT%WhS@^ldD6Ee5!`^>mD4a#V zTMYvk@As`n8#4I$gOMfm@z`y~I^j%so1uI&($9r|GO9TX{RtxrjD9AJ^uE;3q_Kz$ zex{7|{op$InKCB+JJM(GzcHo=v-jT^bDTxLzZ&zv=;yCS^ZuX*ex{9H&LW=&jDEuG z{Wr!itjGI3V~k)u-0vB~`4-iC$f)8h^k$7w!kKW^m?NAEA2HUU9`zqH{94e<>u*ax zW@HJc(oYy8$dJ#|M*Fv6J>>JWk>xDj0Iry^B<$?5bEbsqX`-O6qx>Z;5zsz zFsnF={sm?YVfOwTvmVyt{n^oMzav7OBg!tDJwX5pc{Kk9wa zECR-SzGx00gWi|SY0hGQUpA}iX+B>zn+UV_-phI}k@ z6B+Wc%;LkNe(e45rb3v#|HdriEc!WSIWYQh%syoBlQ3sUJ$oOeIY*ei|HfQ`^_Wl6 zT*i9HJ88Bb0s9BNGINl#$mgqOtRdPjdmp7)MmQIin{}MUez%!zz?jcAbBb^(y|=l5 z4EcQB%pM8-A)l|C1Dr+wubV@J+4I=u7_3J>-!R9q9{ha6toSbVlQO$F3%zfen}pf> z;Z5hL$X_np&#dJv{OoUb0HdG%&3VG9^a17uGWa>zoNA2D9yd@+|be zYpxPz?}s;wzZYH4g^gwPBh1kgZ^;8Pc)}Fi~c8? zvxM322bznp9{rqTE@3_RImxVTrhZN_yEqHI@0(e|neh8&KdeW+ADAmx4|+c^%TAzr zKQs$ZjQq!AKQj9Wv-iWBE;4wkxz$N(E@sT{cY(EGj>wMsdT3~j12j7nF}Yw zb;zg7T;(kMbeZdf+52zI*eQHH`Z?Py1jc_a&NkbS^ZJ>v+Z^UB^nPKE5@ye1o0G5} z^|IzB)=^0?4!0LJ}YXpSO-Uaz@8>f^CX z%*G!?`s{s_W*6aH*k=xL7W!A1bHI2WuP`gxV88kOr_xuM4aku9wWjeyxDI(=YgTX; zey%mE2(#xu%rvaWd~#+T)7)}!8U&4$yW{j%pj z%-$aXgWe71YKO^dwN{^XoWXNaS zEdF1(4*86mK4;N?+$<-|e$U&ihV|&@cC!ZSA)njLVPx<#VJ?#TcUN^>37 zqu!*M?uhowp8qg=ehdtH_n56e$+Otsl(|Tl&Ew`4;avDv)Bh>2NB#TF24KwResi2~ zD*d3jfDHLOYz}oof5_)ybDXp2|FAhpI1@f>&cb@^_oz9C^^nh_rgJ9s^O#x1S?K-4 ztRc+aM`_l>denQu?8JJ|d%}$UjOsmQc5@bbPn+w6**tD4XXV$!^<4O@SAv-%gnaDF~9x6X_D#bckCh1rNR;U}iTS@iqV zG=OG&aEw-kBF`r_~2|*w7DY0si;ru98Q4d^)d=$&!Ecz=}8DaK& z-c}W?M?acXjrHJ1vxbl%AH!N8^=uxumI$+X+**V6sOMPgSPy!R)ph~RCt+ndi~af5 z24OajTgHV^UhI98Rt;y7&u&&bFy^zHHAk4ekJ4I4hJ3zeO_mALp|ty!&<(S>ZPo; z%knJrzG<~w9x@YRZE!7<5mN#M?ZB|Bi4hTI%^Uc&d+zOby6RX)mxi{**tC){fhTTy~C|yVEnuu zZuKC8UV}BnS?uq-R>_q#pYK{#gxNf9HE|aC9BcIgV?M`PtAyD+ZWUhzc|blVS_{aK z&xzJ5XVL#eYn?Eg$F0}^^>dO{2#kJCvf7Zr&neb0XQB6fYm_jX$E`_NkNNz-n! z`v+Fl)zN-4;Sa5P&O+};)*N9rk6Y`6**tD3*UOqFQueIub1M4C0YpoW}qW`s48(}t&TV1do z{p74}tOq|iYYrLm{e)PQtr2GPxU~iAQSY}__w~{K**tFb4FiMT4OZWcc^3Qo zofZ3C#B3h7$_TT0+^XX&@)@}J z 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�$|`yu|llUWu;aPw}xR5y9fM=qCOW-NhTx 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�(HV>L$&J3%2wRFOI^pw7!AHiT+A>BJm0vv^c# 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 K`uqPb2mUYDU~nh^ literal 1712128 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