BLENDER_v241REND pSceneSRtϮ m8 SR1-Animation8Ү (Ӯ Xٮ ٮ x @  DATA8nDATAnf8 DATAfnp DATApn`fDATA`nЮ pDATAЮ nЮ `DATAЮ n0Ѯ Ю DATA0Ѯ nxѮ Ю DATAxѮ nѮ 0Ѯ DATAѮ nҮ xѮ DATAҮ nPҮ Ѯ DATAPҮ nҮ Ү DATAҮ nҮ PҮ DATAҮ nҮ DATA(Ӯ opӮ fDATApӮ oӮ (Ӯ 8pDATAӮ oԮ pӮ Ю DATAԮ oHԮ Ӯ fЮ DATAHԮ oԮ Ԯ Ю Ю DATAԮ oԮ HԮ `0Ѯ DATAԮ o ծ Ԯ Ю xѮ DATA ծ ohծ Ԯ 0Ѯ xѮ DATAhծ oծ ծ `Ю DATAծ oծ hծ 8Ѯ DATAծ o@֮ ծ `Ү DATA@֮ o֮ ծ pҮ DATA֮ o֮ @֮ Ѯ Ү DATA֮ o׮ ֮ 0Ѯ PҮ DATA׮ o`׮ ֮ Ю Ү DATA`׮ o׮ ׮ xѮ Ү DATA׮ o׮ `׮ PҮ Ү DATA׮ o8خ ׮ Ѯ Ү DATA8خ oخ ׮ Ү Ү DATAخ oخ 8خ `PҮ DATAخ oٮ خ PҮ Ү DATAٮ oXٮ خ Ю Ѯ DATAXٮ oٮ Ү Ү DATAٮ q 8Ѯ Ү pO  X8 DATAXpLink and MaterialsEditing>DATApXMeshEditingF>DATApڮ Anim settingsObject>DATAڮ pxۮ DrawObjectF>DATAxۮ pPܮ ڮ ConstraintsObject>DATAPܮ p(ݮ xۮ EffectsObjectDATA(ݮ pޮ Pܮ HooksObjectF>ڮ DATAޮ pޮ (ݮ Particle InteractionObject>xۮ DATAޮ p߮ ޮ SoftbodyObject>xۮ DATA߮ p ޮ OutputRender>DATA p` ߮ RenderRenderF>DATA` p8 AnimRender>DATA8 p` FormatRender>DATA ^ 333?V,@DhCDhCC(BDC?z?DATAT ` 333?V,/9DATA q ٮ Ю fЮ  !  DATA q PҮ Ү xѮ 0Ѯ G==o?+P x DATA px Transform PropertiesView3d>DATAx p 3D Viewport propertiesView3d>"DATA+YP 333?V<????????G==o? A*A?G==o??????*A  B??=C ݢM@ݢM@ݢM@?DATATP `+333?V</9DATA q 0Ѯ xѮ Ю `??PףH  DATA pTransform PropertiesIpo!>DATA( ] 333?V\zC̽̌?zC@ #< #<`jFzD OBzC̽̌?DATA a 333?V\CC|||??l|DATA   333?V\zCCHBC|||?CFC= ADATAx dx 333?V\X  =rttDATAx cP 333?V\?zDzDBCl||ll|zDzD=HB DATAP 0 x 333?V\BCBCl|llFzD #<HB DATA0 Y P 333?V\??? ???? A???PA A!O?j?}GCHB? A  B? #<CDATAT `0 333?V\/9DATA qx Ү PҮ `Ү  P x DATA px Link and MaterialsEditing>DATAx p MeshEditingF>DATAP f 333?VLzCB{ µCB ?BFB= ADATA  P 333?VLzCCHBC$?CFC= ADATA ^  333?VL#DhC`DpJgChCC(BDC?z?DATAT ` 333?VL/9DATAx q Ѯ Ю Ү Ү } ?=o?.(  x P DATAx pP Transform PropertiesView3d>DATAP px 3D Viewport propertiesView3d>"DATA( a 333?YDATAp pH  LampLampF>DATAH p  p SpotLamp>DATA  p H Texture and InputLamp>DATA p  Map ToLamp>  DATA p  PreviewMaterial>DATA p  MaterialMaterialF>DATA pX  PreviewWorld>DATAX p0  WorldWorldF>DATA0 p X Mist Stars PhysicsWorld>DATA p 0 Texture and InputWorld>DATA p  Map ToWorld> DATA p  OutputRender>DATA ph  RenderRenderF>DATAh p@  AnimRender>DATA@ p h FormatRender>DATA p @ Link and MaterialsEditing>DATA p  MeshEditingF>DATA p  Mesh ToolsEditing>DATA px!  Mesh Tools 1Editing>DATAx! pP" CameraEditingF>DATAP" p(# x! ShadersMaterial>. DATA(# p$ P" TextureMaterial>DATA$ p$ (# Anim settingsObject>DATA$ p% $ DrawObjectF>DATA% p& $ ConstraintsObject>DATA& p`' % ScriptlinksScript>DATA`' p8( & EffectsObject% DATA8( p) `' Map InputMaterial>(# DATA) p) 8( Map ToMaterial>(# DATA) p* ) AnimAnim>DATA* p+ ) SoundSound>DATA+ pp, * ListenerSoundF>DATAp, pH- + SequencerSound>DATAH- p . p, ArmatureEditingF>DATA . p. H- RampsMaterialF> DATA. p/ . Mirror TranspMaterial>DATA/ p0 . Mist / Stars / PhysicsWorld>DATA0 p1 / Amb OccWorld>/ DATA1 pX2 0 Shadow and SpotLamp>DATAX2 p03 1 ModifiersEditing>DATA03 p4 X2 ShapesEditing>X2 DATA4 p4 03 PreviewTexture>DATA4 p5 4 TextureTextureF>DATA5 p6 4 ColorsTextureF>4 DATA6 ph7 5 ImageTexture>DATAh7 p@8 6 Anim and MovieTexture>DATA@8 p9 h7 PaintEditing>DATA9 p9 @8 Texture faceEditing>ODATA9 p: 9 UV CalculationEditing>O9 DATA: p; 9 Armature BonesEditing>DATA; p: ConstraintsEditing>DATAx< ^= 333? DhCDhCC(BDC?z? mDATA= Yh@ x< 333? ??? ???? A??@PA Aj?c3>}GCHB? A  B? #<CDATAh@ a`A = 333? @̌AR|B1@lA A@CC #<@DATAT`A `h@ 333? /9DATAB qC   ( p  llDATAC q@O B H K@~;@o?9O99O TF M  D E DATAD pE Transform PropertiesView3d,>DATAE pD View PropertiesView3dT>"DATAF YI 333?C ?d6C4d?'5𝀴8?ļ_̽T4??d𝀴d6?8C4'5?<_=4<?K@} 7~~;@^^ to:L8?{[>ph\O-5\#>z:ȳ5{~y<_=4<?K@~;@o??d6C4d?'5𝀴8?ļ_̽T4??4 U6{[>  B??ov:=Cļ_̽47?X<e=e=e=87c9?DATAI `J F 333?C ?zDzDBC 0T  TFzD #<HB DATA(`J ]K I 333?C zC̽̌?zC@22 #< #<`jFzD OBzC̽̌?DATAK aL `J 333?C AffzAK_tK_tB33 33 B22 A@CC #<@2DATAL ^M K 333?C DdC8CnD fCC(BDC?z?DATATM `L 333?C LSave FileNT PICTURES/Users/ton/Desktop/umpbug Folder/ender.app/Contents/Resources/untitled.blend DATA@O q] C   h Bw6Co?777 8Q \ yy@P Q DATA@P pQ Transform PropertiesView3d,>"DATAQ p@P View PropertiesView3dT>"DATAQ YU 333?@O ???+%:+????+%;+=?Bw6Co >509?yK<;y+%;+=?Bw6Co????+%:+??yK<  B? #<ޥ7=C+%:+7?X<a:a:a:87c9?DATA U eU Q 333?@O DATAU bT U 333?@O CCtQ.?D?89 @@?DATAxT dV U 333?@O 7 e9 MY?DATA(V ]X T 333?@O zC̽̌?zC@22 #< #<`jFzD OBzC̽̌?DATAX a(Z V 333?@O AffzAK_tK_tB33 33 B22 A@CC #<@2Y Y DATA,Y hY BO`ADATA,hY Y Y BOp=A DATA,Y hY CS@ff@ DATA(Z [ X 333?@O ?zDzDBD22FzD #<HB DATA[ ^\ (Z 333?@O DdC8CnD fCC(BDC?z?DATAT\ `[ 333?@O Export DirectXICTURESc:\vcprojects\grace\Test\Data\Main\2__Meshes\lender\scripts\race\Test\Milkshap_7__Butterfly.x41.py 0C{DATA] q@O h  ]CDCo?9Q9Qk9l @H` hg ̬ ̬ ^ p_ DATA^ pp_ Transform PropertiesView3d,>DATAp_ p^ View PropertiesView3dT>"DATAH` Y0c 333?] ?3?3U??3?3U8bZ9?]Cām7n;CC祼Fz-?0a;. u;zCU8aZ9?]CDCo??3?3U?5?5/a;  B? #<}7=CUaZ07?X<:::87c9?DATA(0c ]d H` 333?] zC̽̌?zC@22 #< #<`jFzD OBzC̽̌?DATAd ae 0c 333?] AffzAK_tK_tB33 33 B22 A@CC #<@2DATAe `f d 333?] ?zDzDBD22FzD #<HB DATA`f ^hg e 333?] DdC8CnD fCC(BDC?z?DATAThg ``f 333?] LSave FileNT PICTURES/Users/ton/Desktop/umpbug Folder/ender.app/Contents/Resources/untitled.blend SRth mȪ 8 SR3-Materialodel Singi @m m s t @ 7DATAi ni DATAi n(j i DATA(j npj i DATApj nj (j DATAj nk pj LDATAk nHk j LDATAHk nk k DATAk nk Hk DATAk n l k LDATA l nhl k DATAhl nl l DATAl nl hl  DATAl n@m l  DATA@m nl DATAm om i (j DATAm on m i pj DATAn o`n m i j DATA`n on n pj k DATAn on `n j k DATAn o8o n i Hk DATA8o oo n (j k DATAo oo 8o Hk k DATAo op o k k DATAp oXp o j k DATAXp op p k k DATAp op Xp k l DATAp o0q p k l DATA0q oxq p j hl DATAxq oq 0q Hk hl DATAq or xq l l DATAr oPr q k l DATAPr or r hl l DATAr or Pr hl l DATAr o(s r l l DATA(s ops r Hk @m DATAps os (s l @m DATAs ops l @m DATAt qh i j k pj ?@PףKK1`x ~ u w DATAu pu OutputRender>DATAu pv u RenderRenderF>DATAv pw u AnimRender>DATAw pv FormatRender>DATA`x f(y 333?/ ~CA~CA1?AFA= ADATA(y y `x 333?/ zCCHBC ?CFC= ADATAy ^{ (y 333?/ DhC?DhCC(BDC?z?mDATA{ Y} y 333?/ ??? ???? A??@PA Aj?c3>}GCHB? A  B? #<CDATA} a~ { 333?/ @̌AR|B1@lA A@CC #<@DATAT~ `} 333?/ /9DATAh qh t Hk i (j k DATAh qX h k l k k G@? JLMMghD~ Б h DATAh p@ OutputRender>DATA@ p h RenderRender>DATA p @ AnimRender0>DATA pȅ  FormatRenderH>DATAȅ p PreviewMaterial>DATA px ȅ MaterialMaterial>DATAx pP ShadersMaterial0>DATAP p( x TextureMaterialD>DATA( p P Map InputMaterial\>DATA p؊ ( Map ToMaterial`>DATA؊ p RampsMaterial> DATA p؊ Mirror TranspMaterialH>DATA ^ 333?x< ChCCo$XLCC(BDC?z?DDATA Yx 333?x< J>H!?)xu?i6>Pbܗ=(?^L?a?滎z?J>#xu?ܗ=Hi6>(? ?Pb^L?\FAA?4[?[!?@jG>gb>Pb>4Im>k&?]M^L<0@AzA=>Kc<2֍7&> ?:x¸A1vB,jB~@G@? JLJ>H!?)xu?i6>Pbܗ=(?^L?a?滎z?@?$$OA   B?=Ch?j(4?t'>dDATA(x ]Б 333?x< zC AzC A #< #<`jFzD OBDATATБ `x 333?x< ;SAVE FILE/usr/home/intrr/blender/blend/untitled.blendDATAX q( h j hl l k U.=E=o?M Mgh X DATAX Y@ 333?hN ???h?j(4?t'>????hj(4t'?U.=E=o??OA   B??m8==Ch?j(4?t'>d X@ X@ X@FW\;g:?DATA@ ^H X 333?hN DdC>9C,DeCC(BDC?z?DATA(H ] @ 333?hN zC AzC A #< #<`jFzD OBDATAT `H 333?hN SAVE FILE/Users/ton/Desktop/der/blend/untitled.blendDATA( q X l @m l l e?P?AHM    S( p DATA( Y 333?8V ݕ/?V~'?3F:?>T8175e?4>Z& 4?ߕ/?7F:?81X~>75e?'?T3>ne@>N@?4z?q5 ''䷄?  ??T?w|\? l4:%11A 4Atp>?@ǫ=:>?4xB֟&BĭeA(@e?P?AHMݕ/?V~'?3F:?>T8175e?4>Z& 4?H?N+Z#OA   B?? U8;=Ch?j(4?t'>d@@@FW\;g:?DATA ^ ( 333?8V DdC>9C,DeCC(BDC?z?DATA( ]p  333?8V zC AzC A #< #<`jFzD OBDATATp ` 333?8V SAVE FILE/Users/ton/Desktop/der/blend/untitled.blendDATA q( hl Hk @m l &==o?    S @ DATA Yয 333?^ ?3?3:-vl(4??3?3;@k(40v@?&={a1n;=ø;zP{8;?JXAz(54v&AzC;@l(4.v@?&==o??3?3:-vl(4?5?5IXA   B??M==C:j(4?.vdp@p@p@FW\;g:?DATAয ^觯 333?^ DdC>9C,DeCC(BDC?z?DATA(觯 ]@ য 333?^ zC AzC A #< #<`jFzD OBDATAT@ `觯 333?^ SAVE FILE/Users/ton/Desktop/der/blend/untitled.blendSRtȪ mׯ h SR4-Sequencep  ` H Xѯ @  DATAp n DATA n p DATA nH  DATAH n DATA nج H DATAج n DATA nh ج DATAh n DATA n h DATA n@ DATA@ n TDATA nЮ @ TDATAЮ n DATA nЮ DATA` o DATA o ` p H DATA o8 p DATA8 o H ج DATA oȰ 8 ج DATAȰ o DATA oX Ȱ h DATAX o  h DATA o豯 X DATA豯 o0 h DATA0 ox 豯 DATAx o 0 @ DATA o x @ DATA oP DATAP o  h DATA o೯ P @ DATA೯ o( Ю DATA( op ೯ Ю DATAp o (  DATA o p ج  DATA o Ю  DATAH q8 p ج H  H и DATAH p OutputRender>DATA p H RenderRenderF>DATA pи AnimRender>DATAи p FormatRender>DATA ^ 333?WDhCvDhCC(BDC?z?DATAT ` 333?W/9DATA8 q8 H h  !  DATA8 qHį 8 Ю  ج 8=i>o? 8 ¯ DATA8 f 333?W&~CB~CB ?BFB= ADATA _ؿ 8 333?W&zCAzCA  A@FB= A DATAؿ Y¯ 333?W&????????8=i>o?fffAD&@??fffA  B? #<CDATAT¯ `ؿ 333?W&AVE TARGA/t1.blend9DATAHį qʯ 8 @ h 8=H>o?UUU Hů ɯ DATAHů _ Ư 333?W*zCAzCA1||1 A@FB= A DATA Ư Yɯ Hů 333?W*????????8=H>o?fffA*@??fffA  B? #<CDATATɯ ` Ư 333?W*AVE TARGA/t1.blend9DATAʯ qXѯ Hį @ 8=>o?SSST˯ ϯ DATA(˯ ]̯ 333?W.B̽̌?B̽̌? #< #<`jFzD SQB̽̌?DATA̯ Yϯ ˯ 333?W.????????8=>o?fffA@??fffA  B? #<CDATATϯ `̯ 333?W.OAD FILE/9DATAXѯ qʯ Ю  8=i>o? Xү ֯ DATAXү _0ӯ 333?W1zCAzCA A@FB= A DATA0ӯ Y֯ Xү 333?W1????????8=i>o?fffAD&@??fffA  B? #<CDATAT֯ `0ӯ 333?W1AVE TARGA/t1.blend9SRtׯ mȪ SR5-ScriptingHد گ ۯ ߯ P߯ @  DATAHد nد DATAد nد Hد DATAد n ٯ د  DATA ٯ nhٯ د DATAhٯ nٯ ٯ DATAٯ nٯ hٯ DATAٯ n@گ ٯ DATA@گ nگ ٯ DATAگ nگ @گ DATAگ nگ DATAۯ o`ۯ د د DATA`ۯ oۯ ۯ د ٯ DATAۯ oۯ `ۯ د ٯ DATAۯ o8ܯ ۯ ٯ ٯ DATA8ܯ oܯ ۯ hٯ @گ DATAܯ oܯ 8ܯ ٯ گ DATAܯ oݯ ܯ ٯ گ DATAݯ oXݯ ܯ @گ گ DATAXݯ oݯ ݯ hٯ ٯ DATAݯ oݯ Xݯ Hد hٯ DATAݯ o0ޯ ݯ Hد گ DATA0ޯ oxޯ ݯ ٯ گ DATAxޯ oޯ 0ޯ @گ گ DATAޯ o߯ xޯ گ گ DATA߯ oޯ ٯ ٯ DATAP߯ qP ٯ د د ٯ  !  DATAP qp P߯ hٯ ٯ گ @گ z==o? P ( DATAP p( Transform PropertiesView3d>DATA( pP 3D Viewport propertiesView3d>"DATA Y 333?Y.|????????z==o?&A*A?z==o??????*A  B??=C ?@?@?@?DATAT ` 333?Y.|/9DATAp q P گ گ ٯ ٯ ??Pף LH X p p DATAp pTransform PropertiesIpo!>DATAxH d 333?Y/|X > =DATA b H 333?Y/|CCx??|?DATA( ]0 333?Y/|zC̽̌?zC@;; #< #<`jFzD OBzC̽̌?DATA0 a 333?Y/|CC|||??l|( DATA,(  BO`ADATA, ( BOp=A DATA  0 333?Y/|zCCHBC|||?CFC= ADATA c 333?Y/|?zDzDBCl||ll|zDzD=HB DATA p 333?Y/|BCBCl|llFzD #<HB DATAp YX 333?Y/|??? ???? A???PA A!O?j?}GCHB? A  B? #<CDATATX `p 333?Y/|/9DATA qp Hد hٯ @گ گ O  DATA p Link and MaterialsEditing>DATA p MeshEditingF>DATA ph Anim settingsObject>DATAh p@ DrawObjectF>DATA@ p h ConstraintsObject>DATA p @ EffectsObjectDATA p  HooksObjectF>h DATA p Particle InteractionObject>@ DATA px SoftbodyObject>@ DATAx pP OutputRender>DATAP p( x RenderRenderF>DATA( p P AnimRender>DATA p ( FormatRender>DATA p ScriptlinksScript>DATA ^ 333?Y0|ChC#DhCC(BDC?z?DATAT ` 333?Y0|/9SC@ WSCScenetageain `X~ P->4Ko:=87c98)ʷ|9,808!9= dd??< d Xdd??Z @????L?fff??@ A//backbuf/tmp\//ftype@&#@^@&^#D DATA`Of (DATAf OP`DATAPO* f h DATA* Oh" PDATAh" OX~ * .DATAX~ Oh" . DATA( N,d'=A@DATA VZ ?o: IM09 IM_5__butterfly.jpg//_5__butterfly.jpg(T j/CAt 0] CACameraamera.001L>=B B@?CAt0]  CAUVCameraL>=BA??LALASpot ?????AB>??@ .?A4B?@@???IPPp" IPActIpo.001 ?zC@ACDATAT ,(7 ] ACDATAT(7 ,  @^ ACDATAT , (7 H" ACDATAT , " AC?DATA8] %???DATA8@^ %???DATA8H" %???DATA8" %??????IPP"  6 pIPActIpo.002P ?zC@ACDATATP , " ACDATAT ,P P 4 ACDATATP , P5 ACDATAT ,P 5 AC?DATA8" %???DATA84 %???DATA8P5 %???DATA85 %??????IPP 6 赲 " IPActIpo.003ۻ ?zC@ACDATAT,8» X ACDATAT8» , xY ACDATAT ,ۻ 8» ACDATATۻ , W AC?DATAX % ? |@C@3> A3>zHTA3>A"A"8A"DATAxY % ?/|@\@fT> AfT>GTAfT>nA]HA]H9A]HDATA % ?8&|@@F AFKGTAFޅAA;ADATAW % ???$|@?@#p? A#p?ZGTA#p?ޅA?A?t;A?IPP赲 h 6 IPkeyipo fff?zC̽ff@KEDATAT ,Ѓ KE?DATApЃ %?@malx2ViewzC{C?|C@malx2ViewIPPh 赲 IPActIpox ` ?zC@ACDATATx ,h` P ACDATATh` ,x x  ACDATATx ,` h` } ACDATAT` ,x | AC?DATAP % ? |@B@>> A>>yHTA>>A 9A 98A 9DATA % ?'|@\@xT AxTGTAxTlAlXAlX9AlXDATA} % ?4&|@@j>-2 AHen2KGTANg2ޅAb12Ab12;Ab12DATA| % ???$|@?@p? Ap?ZGTAp?ޅA?A?t;A?KEt趲 KEKeyn  n pm 赲 DATAhn pm ̰ؽ BasisDATA ؽ  1XP 6XP=somXP=somXPsomXPso(XP 1XPso((XP=somXP= 6XP=somXP=so((XP=so(XPsomXPso((XP=soY@XP=~soY@XPso(XPsoY@XP=Ys@XP=Ys@XP~soY@XP~soY@XPYs@XPso(XPYs@XP=soY@XP=so((XP= @.(XP @[@XP @U@XP= @N(XP= @[@XP @.(XPso(XP @N(XP= @U@XP=so((XP= @N(XP=OoiXP=OfiXP @.(XPOoiXP= 6XP= 1XPOfiXP @.(XPOfiXPso(XPOfiXP 1XPso(XP 6XP=OoiXP=so((XP=OoiXP= @N(XP=so((XP=Ys@XP=D<#?3@XP=4<#?3@XPYs@XP @[@XP4<#?3@XPD<#?3@XP= @U@XP=Ys@XP4<#?3@XPso(XP4<#?3@XP @[@XPso(XP @U@XP=D<#?3@XP=so((XP=D<#?3@XP=Ys@XP=so((XP=soY@XP=~soY@XPz_ħU@?|_U@(?|_U@(?z_ħU@?leOY@?leKY@(?leKY@(?leOY@?{!@jxsoY@XP=|_U@(?leKY@(?{!@jx~soY@XP{!@jxleOY@?z_ħU@?somXP=somXPsomXPsomXP=somXP=somXP{ۛXso((XP={ۛX<{|o#2&*>so(XP{#n{!@jxso(XP{ۛX<{#n (XP{ۛXP{#n (XP{#n{!@jx ((XP={ۛX<{|o#2&*> ((XP={!@jx{|o#2&*> (XP{ۛXP mXP Y@XP (XP{!@jx ((XP= mXP={ۛX< Y@XP={!@jx ((XP= mXP= mXP{ۛXP{ۛX< mXP= mXP mXP mXP= Y@XP{!@jx] OY@?ħU@? Y@XP=U@(?[ KY@(?{!@jx[ KY@(?] OY@?{!@jxU@(?ħU@?] OY@?[ KY@(? Y@XP= Y@XPħU@?U@(?03@XP=ʬYs@XP= ((XP=X!U@XP=03@XP= ((XP=03@XPV![@XP (XPʬYs@XP03@XP (XP03@XP=X!U@XP=V![@XP03@XPʬYs@XP=03@XP=03@XPʬYs@XPoiXP=V!N(XP= ((XP=6XP=oiXP= ((XP=fiXP1XP (XPV!.(XPfiXP (XPoiXP=6XP=1XPfiXPV!N(XP=oiXP=fiXPV!.(XPV!N(XP=X!U@XP= ((XP=V![@XPV!.(XP (XPX!U@XP=V!N(XP=V!.(XPV![@XPʬYs@XP= Y@XP= ((XP= Y@XPʬYs@XP (XP Y@XP=ʬYs@XP=ʬYs@XP Y@XP ((XP= Y@XP= Y@XP (XP mXP= ((XP= (XP mXP ((XP= mXP=6XP= mXP (XP1XP1XP6XP= mXP= mXPDATAhpm n =?? Key 1DATA ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????WO MWOWorldg=pb>>===??A@pA A?L=TXdX 7 TXText. . . . (# DATA. j EERFDATAj TXd7 X TXDirectXExporter241.pyb P n n DATATb c:\program files\blender foundation\blender\.blender\scripts\DirectXExporter241.pyDATAP ](H DATA]j P 3 DATAj  ] (DATA  j x DATA = w DATA= # P DATA# x` = 1DATAx`  # ~DATA ! x` hP @ yDATA! h] ( M\4DATAh] ` ! ?DATA` h] C DATA! ` xջ ǘDATA!  ջ IDATA X ! 8ݼ WingDATAX P!  u&?DATAP! 膲 X g DATA膲 c P! @ֻ JDATAc e 膲 DATAe  c xξ DATA & e ` DATA& @̱  ֻ =DATA@̱  & TODATA  @̱ 0׻ F DATA n FDATAn J  (!C//baDATAJ x` n %DATAx` P7J 4 DATAP7  x` !Aū DATA  H8P7"@DATAH8G  "?fff?DATAG @ H8Q .DATA@  G pDATA  @ HR HDATA pq  R LPDATApq g  (7 GBDATAg E pq HS 3?DATAE X g DATAX ( E Hÿ DATA( М X S @DATAМ  (  DATA 8 М `  DATA8 h>  0 DATAh>  8 x DATA k h> N DATAk  @ 3DATA  k MDATA   u DATA @D D DATA@D " p DATA"  @D ( CDATA " (DATA_  () @^DATA_   (pDATA x _ DATAx pM  8 FREEDATApM J x $CDATAJ  pM  eb-0DATA P J  DATAP  Q  H DATA Q . P ȫ DATA. ($ Q ---DATA($ J . v DATAJ @y ($  15 DATA@y n J 00DATAn pm @y  DATApm n n h 0DATAn pm  DATA3 n  DATA3 X x 3eb-0DATAX  3  DATA PZ X ׻ xTDATAPZ   DATAH~PZ _ ?DATAH~Pq൱ 3eDATAPq` H~Pa DATA`  Pq DATA X ` H DATAX ` ( DATA` p X h 8 DATAp | ` ) Z DATA| ( p  'DATA(  | m(DATA ( @ h *DATA  ض N*DATA hĮ hݹ -DATAhĮ   Pʷ 0DATA hĮ ޹ roupDATA  X DATA L  ?DATAL P 0 ?DATAP ( L ޹ DATA(  P ߹ ƫ DATA  (  ?DATA   DATA  " DATA0  DATA0&   DATA& 0h DATA8u & `?DATA8u h  DATAp 8u  DATAp X `I DATAX  p 4DATA  X  DATA  @ teAnDATA {  me DATA{  `  DATA P {  Key DATAP @9   bon,DATA@9  P P1  seDATA hܼ @9 P riteDATAhܼ (  1 int_DATA( x hܼ 1  AniDATAx  ( poinDATA Hl x @[ ointDATAHl @ (2 ***#DATA@  Hl p2 DATA p; @ g DATAp; E \ DATAE I p; 2 DATAI 0 E 3 DATA0 n I H3 DATAn  0  DATA  n 3 DATA  pt ?DATAU \ IPAcDATAU  DATA  Ut DATA xr u DATAxrP^  Hͫ DATAP^ PB xrP ,DATAPB  P^ Hu ?DATA  PB u ?DATA Hd  u DATAHd h UDATAh X[ Hd v DATAX[ l h hv GTADATAl @ X[ hQ DATA@ x l + DATAx 8_ @ v %DATA8_  x hά TDATA p@ 8_  ,DATAp@  ά DATA p@  DATA8 ά *b DATA8  XϬ Cd DATA Ϋ 8 I g DATAΫ 6  Ϭ *h DATA6  Ϋ 0Ь Gj DATA @ 6 h 6m DATA@ ` H zn DATA`L @ uo DATAL Ѭ `h p DATAѬ  L x) 0r DATA o Ѭ Ь )s DATAo xl Odv DATAxl k o 8, w DATAk 0xl P; "y DATA0H@ k / :| DATAH@ w 0, ~ DATAw ȫ H@ 0!  DATAȫ R w Ϸ  DATAR x' ȫ ?  DATAx' & R x! ! DATA& X0 x' & [ DATAX0  & Pr  DATA F X0 ! Ɋ DATAF {   p DATA{ { F 0t ⍮ DATA{ H { " 2 DATAH xG { F DATAxG 8 H DataDATA8  xG P" ScriDATA X 8 ? EffDATAX l bRaDATAl X0 X " bIpoDATAX0 / l aturDATA/ l X0 HonCoDATAl  / " 4DATA  l P? DATA g ߫ DATAg xf ( DATAxf e g `߫ (;DATAe , xf ߫ *oDATA, ) e GDATA) H , IDATAH  )  DATA p H g CDATAp H  ` (DATAH x_ p ? DATAx_ H H h  DATAH N x_ Z,DATAN  H pZDATA  N Z"DATA   [HDATA S  [L_DATAS d  \DATAd @ S P\DATA@ | d I DATA| `@ > DATA`J | XI d6DATAJ g `P "o\DATAg  J I qDATA ȫ g I DATAȫ  c WDATA )ȫ 8J ODATA). J 7DATA.  )! DATA 8+. K DATA8+ݰ  > QDATAݰ p 8+  zDATAp 0- ݰ PK DATA0- 4p h DATA4k 0- DATAk ` 4 > VDATA` p8 k F"DATAp8 D ` x DATAD p p8  DATAp ! D DATA! B p p> _DATAB  ! = DATA H B   DATAH E ` "DATAE Я H DATAЯ x E Pp UNDATAx > Я g IDATA> x? x hh @@DATAx? > ` DATA+ x? h DATA+ p  ]DATADATAp PN + 8> DATAPN ( p ( DATA( P PN ! DATAP x( i DATAxE P Pi ѫ DATAE  x@ _DATA ȅ E С \"DATAȅ  i DATA X ȅ ?DATAX   0 cDATA ؉ X @ [DATA؉ Ȩ i  |@DATAȨ  ؉ (j DATA X Ȩ ((cKGTADATAX ` )mDATA` 8X 0 ra.0DATA8W ` *?DATAW W 8@ [(iDATAW X W Х XDATAX `X W u WDATA`X X X x <DATAX X `X  DATAX P9 X Q %@DATAP9 9 X 0 DATA9 9 P9 x )roupDATA9 (: 9  DATA(: p: 9  DATAp: : (: > ?DATA: p p: p DATAp  : 0 DATA  p x DATA H DATAH   DATA ؅ H X ?DATA؅  X DATA  ؅ = DATA   ?DATA `  DATA`   @ DATA  ` DATA PA  DATAPA A   DATAA A PA C DATAA (B A = 4CDATA(B pB A X= /$DATApB B (B = DATAB e pB p ($DATAe e B < ft wDATAe (f e < tureDATA(f pf e x< DATApf f (f @< DATAf g pf  0?DATAg ̱ f p 0DATA̱ @ͱ g  DATA@ͱ ͱ ̱  0DATAͱ ͱ @ͱ @ 0DATAͱ α ͱ < DATAα `α ͱ ]@DATA`α  α  ?DATA H `α G !?DATAH  ; DATA  H q DATA   1\4DATA h ` սDATAh   1 DATA  h  DATA 8 ` DATA8   ?t?DATA  8 @ DATA   }e{^?DATA  DATAH DATAH( ACDATAH; DATA x ?DATA h`; DATAhz  @DATAz z h ,DATAz  { z X ?DATA { h{ z ?DATAh{ { { DATA{ { h{ h޸ DATA{  { 8 DATA  { (; ]HDATA P ` ADATAP   DATA  P DATA (  DATA( в  DATAв `в ( : DATA`в в в X DATAв в `в  Hen2DATAв 8Ѳ в  ?DATA8Ѳ Ѳ в @ :_LDATAѲ  8Ѳ > DATA  Ѳ  DATA 8  V4DATA8  P ?DATA ȱ 8  DATAȱ  "?DATA  ȱ  dDATA   ( DATA (  ^ \;DATA( p  : DATAp  ( p DATA  p  DATA 0   DATA0 x  X DATAx  0  DATA  x  DATA P   RADATAP   ` DATA %P %?DATA%P%  'DATAP%%%( 'DATA%%P%` DATA%(&% DATA(&p&%0&DATAp&`*(& :DATA`**p&h P DATA**`*: %սDATA*8+*H: h DATA8++* \4DATA++8+ 0-DATA+X; + DATAX; ; +t &DATA; ; X; H  DATA; 0< ;  4DATA0< x< ;  DATAx< < 0< 0  DATA< ѭ x< Q !DATAѭ  ҭ < x DATA ҭ hҭ ѭ  DATAhҭ ҭ ҭ * ?DATAҭ ҭ hҭ : DATAҭ @ӭ ҭ 9 =DATA@ӭ xް ҭ + DATAxް ް @ӭ h+ DATAް ߰ xް 0 ߕ/DATA߰ P߰ ް + DATAP߰ ߰ ߰   DATA߰ ߰ P߰ , MtureDATA߰  ߰ RDATA H ߰ , LTDATAH   H GDATA ؎ H - (?DATA؎    h- DATA  h ؎ - .DATAh E   h9DATAE E h . DDATAE 0F E . DATA0F xF E . 4?DATAxF F 0F 6 XDATAF G xF 6 4DATAG x F @7 `ѲDATAx  G 7 DATA  x ® 4DATA P  7 0-DATAP   7 DATA  P (8 ^DATA (  x8 DATA( p  8 DATAp  ( 9 )numDATA  p p9 rm[4DATA H  9 ]syDATAH   8 ir[1DATA  H : nuthDATA    X: "xsiDATA  h  : Gad_sDATAh   ؟ eq3DATA  h staDATA @  h oup_DATA@ `  () 42]mDATA`  @ @ elenDATA  ` ) &butsDATA 8 ) tdamDATA8  0 ndsgDATA ȧ 8 8) lassDATAȧ  ) BlideDATA  ȧ ) loatDATA 8 P) olorDATA8  ) "taSDATA Ȕ 8 ) ,bPoDATAȔ  X) SpaDATA bȔ ) rEdgDATAb`b ) tySeDATA`bbbP) eActDATAbb`b) ectKDATAb8cbh#ackCDATA8ccb DATAc 8ch18DATA  c(; DATA  Xi9$DATA h ( UDATAh  h DATA  h iDATA  ӫ DATA  j+DATA H xj%%DATAH  j*DATA  H ~ DATA   k10DATA  p kpDATAp   k1 DATA  p @lDATA H  ' DATAH   l/DATA  H l QDATA   o ,DATA H  xo ,DATAH   0m"DATA  H o (DATA   8p @NDATA h  ~ RDATAh 0 `~ sDATA0 x h p 1DATAx  0 q 7DATA  x hq 1DATA P q !DATAP   r TDATA H P hr DATAH  r DATA  H b DATA    r DATA  h  Hs DATAh   s $"DATA P h !DATAP   X - DATA  P -DATA (   #DATA( p  p )qDATAp  (  DATA hn p DATAhn n  p DATAn n hn DATAn @o n  DATA@o o n X 'DATAo o @o DATAo o W&DATA8o P DATA8 DATA8 ,DATA( DATAXp 1DATAXp ؍ DATAp  X( 1DATA  p +SDATA H  K DATAH   ?DATA  H @ #DATA *  (DATA* +  //DATA+ X+ * X %DATADATAX+ + + +DATA+ + X+  !DATA+ 0, + h DDATA0, - + DDATA- @. 0, (~ DATA@. . - h 1 DATA. . @. DATA. / . 1DATA/ `/ . 8 /h DATA`/  /  DATA H `/ DATAH  0 $DATA  H !pDATA  ?DATA h HyDATAh  f DATA H h ( DATAH   ë DATA ح H p 1 DATAح    IpoDATA  h ح ( !DATADATAh (  $DATA( p h DATAp  ( 3 DATA  p H4 EDATA H 4 /DATAH  } ?DATA  H 5 1CDATA  5 DATA ` 5 1DATA`   @6  DATA  ` ¿  andDATA 8 6 ,DATA8  6 DATA ȏ 8 87 !>DATAȏ ޸ 7 $DATA޸ ߸ ȏ } DATA߸ P߸ ޸ } DATAP߸ ߸ ߸ 7 DATA߸ ߸ P߸ 88 >DATA߸ ( ߸ J ` DATA( p ߸ * DATAp  ( 8 DATA  p 8 DATA    HDATA  h  DATAh   ū DATA  h 0DATA @  DATA@ ʻ  H} DATAʻ ʻ @ p{ DATAʻ 8˻ ʻ @z DATA8˻ ˻ ʻ жDATA˻ ˻ 8˻ DATA˻ ̻ ˻ DATA̻ X̻ ˻ H DATAX̻ : ̻ h'DATA:  ; X̻ DATA ; h; : v DATAh; ; ; r DATA; ; h; pr DATA; @< ; 1DATA@< < ; H DATA< HL @< x1DATAHL L < !DATAL L HL 8DATAL  M L DATA M hM L йDATAhM M M DATAM M hM pDATAM  M ¾ DATA  M 8þ DATA @ ݲ DATA@  8r DATA Ш @ p DATAШ  þ 1DATA ` Ш þ DATA` 05  0ľ 1DATA05 x5 ` ľ "DATAx5 5 05 ľ DATA5 6 x5 o DATA6 P6 5 8ž DATAP6 6 6 ž DATA6 6 P6 ž DATA6 R6 (ƾ DATAR S6 xƾ DATA ShSRƾ DATAhSS SǾ DATASShS`Ǿ DATAS@TSn DATA@TTSm DATAT˷ @TǾ IDATA˷ 0̷ T0Ⱦ DATA0̷ x̷ ˷ xȾ DATAx̷ ̷ 0̷ x) DATA̷ ͷ x̷ l DATAͷ Pͷ ̷ `D DATAPͷ ͷ ͷ ) 1DATAͷ " Pͷ (* DATA" `" ͷ p* 1DATA`" " " * *DATA" " `" 8+ DATA" 8# " + DATA8# # " + DATA# # 8# , DATA# Hk # p, DATAHk k # , DATAk k Hk - DATAk  l k P- DATA l hl k - DATAhl l l @l DATAl l hl k DATAl : l - IDATA: ; l x. DATA; H; : . DATAH; ; ; / DATA; ; H; i DATA;  < ; N DATA < h< ; 8h DATAh<  V < Pg DATA V hV h< X DATAhV V V W1DATAV V hV 0XDATAV @W V xX1DATA@W W V X'DATAW W @W 8YDATAW PW  DATAP@QW YDATA@QQPY*DATAQQ@Q(3 DATAQRQ0Z DATAR`RQZDATA`RRRk DATAR0{ `RZ/DATA0{ x{ R0[DATAx{ { 0{ [2DATA{ | x{ [DATA| P| { 8\DATAP| | | \DATA| | P| hb DATA| а |  DATAа Xа | h  DATAXа а а 0b DATAа а Xа \,DATAа 0Ѱ а 8]0DATA0Ѱ xѰ а ];DATAxѰ Ѱ 0Ѱ ^DATAѰ V xѰ a DATAV V Ѱ `^ DATAV @W V L DATA@W W V X) DATAW W @W ) DATAW X W ) DATAX `X W % DATA`X  X @* .DATA H `X PU DATAH  * DATA ؚ H * 1DATAؚ  дDATA h ؚ X+ DATAh  DATA  h + %DATA Ѐ , DATAЀ  P, DATA ` Ѐ , DATA`   , DATA  ` a DATA 8 `J DATA8  (- DATA  8  DATA ( x- DATA( p h DATAp  ( - DATA  p . DATA H a DATAH H ] DATAH  H h. (DATA  H . .DATA  (/ )DATA h 8 DATAh  / DATA  h Xw DATA ~ / DATA~ 8 X +DATA8  ~ ܲ DATA  8 HY +DATA   լ DATA X  (0 DATAX   } DATA Г" X [ DATAГ" " Y DATA" `" Г" Z 5DATA`" " " X DATA" " `" hZ 5DATA" 8" " hS DATA8" " " 0S DATA" G 8" Z %DATAG G " ([ $DATAG (H G  DATA(H pH G 0 DATApH H (H [ 4DATAH I pH xP DATAI HI H M DATAHI m I [ 1DATAm n HI P\ DATAn Pn m \ 1DATAPn n n ] &DATAn n Pn ТDATAn (o n 0( DATA(o po n X] 'DATApo  (o ] DATA @ po ^ &DATA@   X^ 'DATA  @ ^ /DATA   _ DATA `  `L DATA`   X_ 1DATA , ` 0h DATA,  -  _ 1DATA - h- , ĩ 'DATAh- - -  DATA- - h- ĩ DATA- @. - K DATA@. . - (ũ 2DATA.  @. ܴ DATA 8 . ũ 1DATA8  ũ DATA ȷ 8 P_ DATAȷ  HƩ 'DATA X ȷ Ʃ (DATAX    YDATA P X ǩ 'DATAP  Xǩ (DATA  P X YDATA (  ǩ (DATA( p  ȩ (DATAp  ( YDATA  p xȩ 'DATA (i  ȩ )DATA(i pi  YDATApi i (i 0ɩ 'DATAi j pi ɩ DATAj Hj i  DATAHj j j G DATAj j Hj ɩ 1DATAj V j l DATAV 8W j @ʩ 3DATA8W W V ʩ DATAW W 8W ʩ +DATAW X W P˩ :DATAX XX W  *DATAXX X X h DATAX  XX DATA  X "DATA 8 DATA8  X DATA ȅ 8 *DATAȅ   "DATA X ȅ ` DATAX M  DATAM N X DATAN `N M DATA`N N N P *DATAN N `N DATAN 8O N DATA8O O N H (DATAO  8O "DATA X O DATAX   DATA  X p DATA 0  P 1DATA0 x  DATAx  0 1DATA @] x DATA@] ]  h DATA] ] @] DATA] ^ ] P. DATA^ `^ ] " DATA`^ ^ ^ (` 1DATA^ ^ `^ DATA^ K ^ ` 1DATAK PK ^ ` #DATAPK K K Pa DATAK K PK a DATAK (L K a 0DATA(L pL K Pb DATApL L (L p DATAL ! pL Ҿ DATA! @" L $DATA@" " ! b 1DATA" " @" c DATA" # " `c 1DATA# `# " c *DATA`# # # (d DATA# " `# xd DATA" " # d DATA"  # " e #DATA # h# " he "DATAh# # # e )DATA# # h# f !DATA# @$ # xf DATA@$ i # f DATAi  j @$  DATA j hj i g DATAhj j j (@"DATAj j hj @&DATAj @k j `g DATA@k k j > VDATAk  # @k @DATA # h# k y DATAh# # # ADATA# # h# ) DATA# @$ # pADATA@$ $ # A&DATA$ $ @$ BODATA$  $ ݴ DATA й $ B DATAй  H DATA ` й BDATA`   Hڭ mDATA  ` @CDATA 8 CDATA8 ຿ CDATA຿ ( 8 8) DATA( p ຿ 0DDATAp  ( p DATA  p DDATA H Hk DATAH  DDATA M H EDATAM 0N 8Ҿ DATA0N xN M hEDATAxN N 0N EDATAN O xN Ѿ DATAO PO N FDATAPO O O HF(DATAO H& PO FDATAH& & O FDATA& & H& @r DATA&  ' & @GDATA ' h' & x- DATAh' ' ' VDATA' ' h' - DATA' g ' . DATAg g '  hDATAg 0h g `. DATA0h xh g . DATAxh h 0h . ADATAh i xh p/ 5DATAi Pi h ͩ DATAPi p; i Ѿ DATAp; ; Pi / DATA; < p; ! VDATA< H< ; (0 DATAH< < < p0 DATA< < H< H hDATA<  = < 0 DATA =   < 1 DATA  h = X1 ADATAh   1 5DATA  h pDATA @   DATA@   82 1DATA Ѐ @ 2 DATAЀ R 2 1DATAR R Ѐ P3 1DATAR  S R 3 +DATA S hS R 4 DATAhS S S I DATAS S hS h4 !DATAS @T S x DATA@T x S 4 3DATAx  @T ( DATA  x x DATA P Ƞ +DATAP   ( "DATA  P  DATA (  DATA(  hDATA  ( С DATA H   DATAH   p .DATA  H Т IDATA     DATA  h  P ,DATAh H  `H DATAH  h  .DATA ؋ H  HDATA؋   DATA h ؋  +DATAh  XDATA  h  DATA $ 8 !DATA$ `$  DATA`$ $ $  DATA$ $ `$ 0 "DATA$ 8% $  $DATA8% % $  DATA% % 8% 0 =DATA% n %  *DATAn @o %  ,DATA@o o n LDATAo o @o 0 +DATAo p o /DATAp `p o  DATA`p p p DATAp ͭ `p 8 $DATAͭ ͭ p %DATAͭ έ ͭ 菽 DATAέ `έ ͭ 8 0DATA`έ έ έ DATAέ έ `έ +DATAέ 8ϭ έ X +DATA8ϭ ) έ )DATA) (* 8ϭ  &DATA(* p* ) p DATAp* * (* /DATA* + p* 7DATA+ H+ * DATAH+ + + 1DATA+ , H+ ؝ DATA, P, + 1DATAP, , , X &DATA, , P, 6DATA, (- , DATA(- p- ,  &DATAp- - (- p DATA- X p- DATAX  - ( DATA  X x "DATA 0 &DATA0 x ( DATAx  0 x DATA  x ̩ DATA   DATA   8 DATA H  DATAH   > DATA  H  $DATA    ` DATA  h  $DATAh F  g DATAFGh DATAGPGFT DATAPGGGDATAGGPGDATAG(HGXp DATA(HpHGX DATApHPK (H DATAPK K pHDATAK K PK DATAK (L K 8 DATA(L pL K `DATApL L (L DATAL M pL )DATAM  L 0 DATA  M x DATA H ͩ DATAH  DATA  H  DATA  VDATA h ` DATAh 9 8+ DATA9 `9 h `C hDATA`9 9 9 DATA9 9 `9 p7 DATA9 8: 9 (DATA8: : 9 DATA: : 8: < VDATA: 0 : @ DATA0 81 : Xo DATA81 1 0 hE hDATA1 1 81 DATA1 2 1 .DATA2 X2 1 DATAX2 2 2 S 'DATA2  X2 xS DATA   2 S DATA  h   DATAh   T DATA  h `T DATA @  T DATA@   U *DATA  @ HH dDATA &  `U DATA& 0'  U DATA0' x' & V DATAx' ' 0'  DATA' ( x' PV DATA( P( ' X DATAP( ( ( V DATA( ( P( DATA( pL ( V &DATApL L ( HW DATAL M pL W DATAM HM L 8 DATAHM M M W DATAM M HM 0X DATAM  N M X DATA N hN M ( DATAhN  N X DATA  hN Y DATA  pY %DATA X Y DATAX   Z DATA  X hZ DATA 0 DATA0 x Z DATAx  7 0 DATA 7 h7 x Hj DATAh7 7 7 [ DATA7 7 h7 P[ DATA7 @8 7 X DATA@8 8 7 x DATA8 8 @8 լ DATA8 9 8 #DATA9  8 DATA X 9  *DATAX   x NDATA  X DATA 0  H DATA0 x  DATAx  0 w DATA  x 芰 DATA =  `w DATA= 0>  8 DATA0> x> = H DATAx> > 0> #DATA> ? x> DATA? P? > F DATAP? ? ? 0 DATA? ? P? DATA? (" ? p DATA(" p" ? Ȍ DATAp" " (" 0 DATA" " p" *DATA" H" " ? UDATAH" " "  DATA" ؑ" H" ؎ DATAؑ"  " " DATA " F ؑ" Ѝ DATAF PF " DATAPF F F IJ DATAF F PF p DATAF (G F X DATA(G pG F DATApG G (G  1DATAG H pG x DATAH  G 1DATA  H ( .DATA P  DATAP   , +DATA  P А DATA (  @> DATA( p  , DATAp  ( H- DATA  p - 'DATA 8  ( DATA8   - DATA  8 0 DATA    DATA X  @. DATAX   . DATA  X ̩ DATA #  . DATA# $  ^DATA$ `$ # 0/ DATA`$ $ $ / DATA$ $ `$ / DATA$ 8% $ ( DATA8% % $ 0 DATA% % 8% X DATA% n% p0 DATAno% DATAoPon0 5DATAPooox,DATAooPo(1 1DATAo(po8ǿ DATA(pppo1 1DATAppp(p1 DATAp pph DATA X pH2 "DATAX   YDATA 褿 X 2 "DATA褿 0 ZDATA0 x 褿 2 "DATAx  0 YDATA  x P3 #DATA  YDATA (  0 DATA( p  DATAp  ( DATA  p DATA H  DATAH   3 1DATA  H 4 DATA   X4 1DATA h  4 !DATAh  5 DATA  h h5 DATA @ 5 DATA@  6 #DATA  @ `6 !DATA  6 DATA x X}DATAx   }!DATA  x X DATA P }!DATAP   P~*DATA ഭ P Pw DATAഭ ( ~)DATA( p ഭ DATAp ( ( w DATA( p p `!DATAp  ( DATA  p !DATA H XDATAH  h$ DATA ؁ H &DATA؁  +DATA  ؁ X*DATA  DATA H 4DATAH  DATA  H pDATA  WDATA h DATAh  Ѿ DATA З h о DATAЗ  1DATA ` З x&DATA`   ЃDATA  ` P DATA 8 /DATA8  ÿ DATA ș 8 %DATAș  ؄DATA  ș # DATA 0 (DATA0 x n DATAx  0 x,DATA  x ؅DATA P 0w DATAP   (DATA @ P xDATA@ A ȆDATAA `A @ DATA`A A A Ѳ DATAA A `A Ȳ DATAA 8B A m DATA8B B A m DATAB B 8B hm DATAB  B h1DATA  B DATA   1DATA X  8 "DATAX   DATA  X DATA 0  DATA0 x  h DATAx ̻ 0 DATA̻ 0ͻ x DATA0ͻ xͻ ̻ DATAxͻ ͻ 0ͻ P DATAͻ λ xͻ DATAλ Pλ ͻ #DATAPλ λ λ H DATAλ λ Pλ &DATAλ 0 λ )DATA0 x λ P DATAx  0 2DATA  x  DATA P P #DATAP   DATA  P DATA ( DATA(  H "DATA X ( DATAX   DATA  X X DATA 0  @ *DATA0 x  DATAx  0 ݴ DATA  x DATA Ȫ  @ DATAȪ   DATA X Ȫ  DATAX   ӫ DATA 諵 X 87 DATA諵 0  DATA0 x 諵 DATAx  0 DATA  x hdDATA  VDATA  DATA(H #!BPYEEDATA3 2DATA, """ Registration info for Blender menus:DATAx Name: 'DirectX(.x)...'?DATA wBlender: 241REEDATAP Group: 'Export'DATA4 Tip: 'Export to DirectX text file format format.'eDATA~"""DATA$hP __author__ = "Arben (Ben) Omari"DATAP( __url__ = ("blender", "elysiun", "Author's site, http://www.omariben.too.it")EDATA __version__ = "3.0"DATAC DATAxջ __bpydoc__ = """\XDATALջ This script exports a Blender mesh with armature to DirectX 8's text fileDATA8ݼ format.DATAuDATA g Notes:
DATAL@ֻ  Check author's site or the elYsiun forum for a new beta version of theDATA DX exporter.DATAxξ """DATA$` # DirectXExporter.py version 3.0?DATA@ֻ # Copyright (C) 2006 Arben OMARI -- omariarben@everyday.com DATAT#DATAH0׻ # This program is free software; you can redistribute it and/or modifyDATAH # it under the terms of the GNU General Public License as published byDATAD(!# the Free Software Foundation; either version 2 of the License, orDATA( # (at your option) any later version.DATA 4 #DATAD!# This program is distributed in the hope that it will be useful,DATAD"# but WITHOUT ANY WARRANTY; without even the implied warranty ofū DATA@"# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theDATA0Q # GNU General Public License for more details.DATAp:DATALHR # This script export meshes created with Blender in DirectX8 file formatDATAPR # it exports meshes,armatures,materials,normals,texturecoords and animations DATA(7 DATA4HS # Grab the latest version here :www.omariben.too.itDATA DATAHÿ import BlenderDATADS from Blender import Types, Object, NMesh, Material,Armature,MeshDATA  from Blender.Mathutils import *DATA ` from Blender import Draw, BGLDATA0 from Blender.BGL import *DATA x import mathDATAN DATA4@ global mat_flip,index_list,space,bone_list,mat_dictDATAP global anim,flip_norm,swap_zy,flip_z,speed,ticks,no_light,recalc_norm,Bl_normDATAu bone_list =[]DATAD index_list = []DATApmat_dict = {}WDATAD( space = 0;flip_z = 1;anim=0;swap_yz=0;flip_norm=0;speed=0;ticks= 25DATA, Bl_norm = 1;recalc_norm = 0;no_light = 0DATA() DATA toggle_val = 0DATA toggle1_val = 0DATA8 toggle2_val = 0DATA toggle3_val = 1DATA toggle4_val = 0DATA toggle5_val = 1DATAH toggle6_val = 0DATAȫ toggle7_val = 0DATA anim_tick = Draw.Create(25)DATAv --DATA DATA4 #*********************************************** DATA # MAINDATA4h #***********************************************DATA DATA def my_callback(filename):3DATA4x  if filename.find('.x', -2) <= 0: filename += '.x' DATA   xexport = xExport(filename)DATA׻  xexport.SelectObjs()DATA DATA _ def my_callback_sel(filename):DATA4൱  if filename.find('.x', -2) <= 0: filename += '.x' DATA Pa  xexport = xExport(filename)DATA  xexport.exportSelMesh()DATAH def event(evt, val): DATA(  if evt == Draw.ESCKEY:DATA h  Draw.Exit() DATA ) returnDATA 'DATA def button_event(evt): DATAl@  global toggle_val,toggle1_val,toggle2_val,toggle3_val,toggle4_val,toggle5_val,toggle6_val,toggle7_valpe\DATAPض  global flip_z,swap_yz,flip_norm,anim,ticks,speed,no_light,Bl_norm,recalc_normDATAhݹ  arg = __script__['arg'].DATAPʷ  if evt == 1:DATA ޹  toggle_val = 1 - toggle_val DATAX  anim = toggle_valDATA  Draw.Redraw(1)?DATA0  if evt == 2:DATA ޹  toggle1_val = 1 - toggle1_valDATA ߹  flip_norm = toggle1_valDATA  Draw.Redraw(1)/?DATA if evt == 3:DATA "  toggle2_val = 1 - toggle2_valDATA  swap_yz = toggle2_valDATA   Draw.Redraw(1)@@DATAh  if evt == 4:DATA ` toggle3_val = 1 - toggle3_valDATAh  flip_z = toggle3_val DATA  Draw.Redraw(1)4DATA`I  if evt == 5:ѲDATA  toggle4_val = 1 - toggle4_valDATA  speed = toggle4_valDATA@  Draw.Redraw(1)getDATA if evt == 10:iDATA `  toggle5_val = 1 - toggle5_valDATA  if toggle5_val==1: % DATA  toggle6_val = 0aDATAP1  toggle7_val = 0]DATA P  else :***DATA1  toggle6_val = 1iDATA1  toggle7_val = 1 DATA  no_light = toggle7_valBleDATA@[  recalc_norm = toggle6_valDATA(2  Bl_norm = toggle5_valDATAp2  Draw.Redraw(1)DATAg  if evt == 11:DATA \  toggle6_val = 1 - toggle6_valDATA2  if toggle6_val==1:DATA3  toggle5_val = 0DATAH3  toggle7_val = 0DATA   else :SDATA3  toggle5_val = 1=DATApt  toggle7_val = 1?DATA\  no_light = toggle7_valDATA  recalc_norm = toggle6_valDATAt  Bl_norm = toggle5_valDATAu  Draw.Redraw(1)?DATA if evt == 12:DATA P  toggle7_val = 1 - toggle7_valDATAHu  if toggle7_val==1:DATAu  toggle6_val = 0 DATAu  toggle5_val = 0DATA U else :DATA v  toggle6_val = 1DATAhv  toggle5_val = 1DATAhQ  no_light = toggle7_valDATA+  recalc_norm = toggle6_valDATAv  Bl_norm = toggle5_valDATAhά  Draw.Redraw(1)DATA if evt == 6:DATAά  ticks = anim_tick.valDATA if evt == 7:TDATA,ά  fname = Blender.sys.makename(ext = ".x") DATADXϬ  Blender.Window.FileSelector(my_callback, "Export DirectX", fname)DATAI  if evt == 8: DATA,Ϭ  fname = Blender.sys.makename(ext = ".x") DATAH0Ь  Blender.Window.FileSelector(my_callback_sel, "Export DirectX", fname)DATAh  if evt == 9: DATAH Draw.Exit() DATAu DATAh  DATA x) def draw():DATA,Ь  global animsg,flipmsg,swapmsg,anim_tick DATAP  global flip_z,swap_yz,flip_norm,anim,ticks,speed,recalc_norm,Bl_norm,no_lightDATA 8,  glClearColor(0.55,0.6,0.6,1) DATA$P;  glClear(BGL.GL_COLOR_BUFFER_BIT) DATA/  #external boxDATA,  glColor3f(0.2,0.3,0.3)~ DATA0!  rect(10,402,300,382) DATAϷ  #-- DATA?  #glColor3f(0.3,0.4,0.4) DATAx!  #rect(11,399,298,398)DATA&  #-- DATAPr  glColor3f(0.5,0.75,0.65) DATA!  rect(14,398,292,30) DATA  #-- DATA0t  glColor3f(0.5,0.75,0.65) DATA"  rect(14,366,292,160) DATA  #-- DATA glColor3f(0.5,0.75,0.65)cDATAP"  rect(14,202,292,60)heDATA?  #--psDATA glColor3f(0.5,0.75,0.65)bDATA"  rect(14,138,292,40)uaDATA  #--haDATAH glColor3f(0.5,0.75,0.65)tDATA"  rect(14,94,292,70)@DATAP?  DATA߫  glColor3f(0.8,.8,0.6)DATA(  glRasterPos2i(20, 380) DATA,`߫  Draw.Text("DirectX Exporter ",'large')JDATA,߫  Draw.Text("(for Blender 2.41)", 'small')DATAH  #-------Aniamtion toggle---------------------------------------------DATAL  Draw.Toggle("Anim", 1, 20, 330, 55, 20, toggle_val,"export animations")DATA  if toggle_val :*DATA g anim = 1DATA,`  animsg = "animation will be exported"0DATA?  else:DATA h   anim = 0DATA0Z animsg = "animation will be not exported"DATApZ glRasterPos2i(100,335)DATAZ Draw.Text(animsg)DATAL[ #---Flip normals toggle-----------------------------------------------+DATAP[ Draw.Toggle("Flip norm", 2, 20, 300, 55, 20, toggle1_val,"invert normals")bDATA\ if toggle1_val :DATAP\ flip_norm = 1DATA I  flipmsg = "flipped normals"DATA>  else:DATAXI  flip_norm = 0sDATA$P  flipmsg = "not flipped normals"DATAI  glRasterPos2i(100,305)DATAI  Draw.Text(flipmsg)DATAXc  #------Swap yz toggle----------------------------------------------------------------DATAP8J  Draw.Toggle("Swap zy", 3, 20, 270, 55, 20, toggle2_val,"swap z,y axis(y up)")DATAJ  if toggle2_val :DATA!  swap_yz = 1DATAK  swapmsg = "Y-axis up".DATA>  else:DATA   swap_yz = 0DATAPK  swapmsg = "Z-axis up"DATAh  glRasterPos2i(100,275)DATA  Draw.Text(swapmsg)DATAX >  #------Flip z toggle----------------------------------------------------------------DATAH  Draw.Toggle("Flip z", 4, 20, 240, 55, 20, toggle3_val,"flip z axis")DATAx  if toggle3_val :DATA flip_z = 1DATA  zmsg = "left handed system"DATAp>  else:DATA=  flip_z = 0=DATA   zmsg = "right handed system"DATA`  glRasterPos2i(100,245)DATA  Draw.Text(zmsg)DATAXPp  #------Speed toggle----------------------------------------------------------------DATALg  Draw.Toggle("Speed", 5, 20, 210, 55, 20, toggle4_val,"Animation speed")L>DATAhh  if toggle4_val :DATA`  speed = 1DATAh  spedmsg = "set speed"DATA`  anim_tick = Draw.Number("", 6,200, 210, 85, 20, anim_tick.val,1,100000,"ticks per second")DATA8>  else:DATA(  speed = 0DATA!  spedmsg = ""DATAi  glRasterPos2i(100,215)DATAPi  Draw.Text(spedmsg)DATA`@  #------Blender Normals toggle----------------------------------------------------------------DATA`С  Draw.Toggle("Bl.normals", 10, 20, 105, 75, 25, toggle5_val,"export normals as in Blender")T>DATAi  if toggle5_val :ADATA  Bl_norm = 1 DATAd0  #------Recalculute Normals toggle----------------------------------------------------------------DATA\@  Draw.Toggle("recalc.no", 11, 120, 105, 75, 25, toggle6_val,"export recalculated normals")DATAi  if toggle6_val :DATA(j  recalc_norm = 1DATAd(( #------Recalculute Normals toggle----------------------------------------------------------------DATAp) Draw.Toggle("no smooth", 12, 220, 105, 75, 25, toggle7_val,"every vertex has the face normal,no smoothing")DATA0  if toggle7_val :DATA no_light = 1DATA\@  #------Draw Button export----------------------------------------------------------------DATA\Х  exp_butt = Draw.Button("Export All",7,20, 155, 75, 30, "export all the scene objects")DATAXu  sel_butt = Draw.Button("Export Sel",8,120, 155, 75, 30, "export the selected object")DATA@x  exit_butt = Draw.Button("Exit",9,220, 155, 75, 30, "exit")DATA  glRasterPos2i(20,75)?DATA(Q  Draw.Text("(C) 2006 Arben OMARI ")DATA0  glRasterPos2i(20,55)DATA,x  Draw.Text("http://www.omariben.too.it")DATA  glRasterPos2i(20,35)DATA   Draw.Text("aromar@tin.it")?DATA>  DATAp def rect(x,y,width,height):DATA0  glBegin(GL_LINE_LOOP)DATAx  glVertex2i(x,y)DATA  glVertex2i(x+width,y)DATA   glVertex2i(x+width,y-height) DATAX  glVertex2i(x,y-height)-:DATA X glEnd()DATA=  ADATA def rectFill(x,y,width,height):DATA  glBegin(GL_POLYGON)DATA@  glVertex2i(x,y)4CDATA  glVertex2i(x+width,y)DATA  glVertex2i(x+width,y-height)DATA   glVertex2i(x,y-height)4DATA C  glEnd()DATA=  DATAX=  ?DATA =  DATA,p Draw.Register(draw, event, button_event)?DATA< eelDATA<  DATAx<  DATA@< DATA4 #***********************************************DATA4p #***********************************************DATA # EXPORTERDATA4 #***********************************************DATA4@ #***********************************************DATA< DATA class xExport:DATA   def __init__(self, filename):DATA$G  self.file = open(filename, "w")?DATA; DATAq #*********************************************************************************************************************************************DATA4  #***********************************************_LDATA`  #Select Scene objects?DATA4  #***********************************************DATA  def analyzeScene(self):DATA`  parent_list = []DATA  for obj in Object.Get():DATA@  mesh = obj.getData()DATAh} if type(mesh) == Types.ArmatureType or type(mesh) == Types.NMeshType or obj.getType() == "Empty":DATA  pare = obj.getParent()DATA  if pare == None :DATA (  parent_list.append(obj)DATA;  DATAx  return parent_listDATA`;  ?DATA  def getChildren(self,obj): CDATA  children_list = [] DATA X  for object in Object.Get():DATA  pare = object.parentDATA  if pare == obj :DATA$h޸  children_list.append(object)DATA8  return children_listDATA(;  DATA$`  def getArmChildren(self,obj): DATA  for object in Object.Get():DATA  pare = object.parentDATA  if pare == obj : DATA  return object DATA:  DATAX  def getLocMat(self, obj):DATA  pare = obj.getParent()DATA  mat = obj.matrixWorldDATA<@  mat_id = Matrix([1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1])DATA >  if pare:DATA  mat_p = pare.matrixWorldDATA  mat_c = Matrix(mat_p)BDATAP  mat_c.invert()DATA  mat_f = mat * mat_cDATA  else :?DATA  mat_id.invert()DATA(  mat_f = mat * mat_idDATA^  return mat_fDATA:  DATA p  def writeObjFrames(self,obj):DATA   global space,chld_obj,ch_listDATA  mesh = obj.getData()DATA X  if obj.getType() == "Empty" :DATA   mat = self.getLocMat(obj)DATA  mat_c = Matrix(mat)DATA  name = obj.nameDATA$` name_f = name.replace(".","")DATA(  self.writeArmFrames(mat_c, name_f)DATA(  if type(mesh) == Types.ArmatureType :DATA((  Child_obj = self.getArmChildren(obj)DATA`  chld_obj = obj#=DATA   ch_list.append(Child_obj)DATA(0 self.writeRootBone(obj, Child_obj) ?DATA<  if type(mesh) == Types.NMeshType and obj not in ch_list:DATAh  self.exportMesh(obj)DATA:  DATAH:  DATA   def writeChildObj(self,obj):DATA  global space,ch_listDATA  space += 1DATA t  if obj :DATAH  for ob in obj:ԵDATA  if ob not in ch_list:DATA   self.writeObjFrames(ob)DATA0  ch_list.append(ob)DATA$Q  ch_ob = self.getChildren(ob)DATA x  self.writeChildObj(ch_ob)3DATA  self.closeBrackets()DATA@*  self.file.write(" // End of the Object %s \n" % (ob.name))DATA:  >DATA9  DATA+  def writeRootFrame(self):DATA h+  global flip_z,swap_yz,speedDATA 0  if speed:DATA+  self.writeAnimTicks()DATA if flip_z: DATAP,  mat_flip = Matrix([1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1])DATA R else :DATAP,  mat_flip = Matrix([1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1])DATAH  if swap_yz :DATA,-  mat_rot = RotationMatrix(-90, 4, 'x')DATA$h-  mat_flip = mat_rot * mat_flip#=DATA0-  self.writeArmFrames(mat_flip, "RootFrame") DATA  DATAH .  ################################################################## DATA.  def SelectObjs(self):DATA8.  global space,chld_obj,ch_list,flip_z,swap_yz,speed?DATA6  print "exporting..."DATA6  self.writeHeader()DATA@7  self.writeRootFrame()DATA$7  obj_list = self.analyzeScene()DATA®  space += 1 DATA 7  ch_list = []=DATA7  for obj in obj_list: DATA(8  self.writeObjFrames(obj)DATA x8  ch_l = self.getChildren(obj)DATA8  for ch in ch_l:rDATA,9  if ch and ch.getType() == "Armature":u_DATAp9  ch_list.append(ch)DATA 9  self.writeObjFrames(ch)dtDATA 8  else : DATA :  self.writeChildObj(ch_l)b_DATA$X:  if obj.getType() != "Armature":DATAH:  self.file.write(" } // SI End of the Object %s \n" % (obj.name)) DATA؟  ldbDATA  rceDATAh  idDATA8()  self.file.write("} // End of the Root Frame\n") ]bDATA @  if anim :DATA()  self.file.write("AnimationSet {\n")_DATA)  for obj in Object.Get():DATA0  aseDATA8)  mesh = obj.getData()*DATAD)  if type(mesh) == Types.NMeshType or obj.getType() == "Empty":]DATA )  ip_list = obj.getIpo()c4fDATAP)  if ip_list != None :eDATA$)  self.writeAnimationObj(obj)dDATA0)  elif type(mesh) == Types.ArmatureType :gWDATA$X)  act_list = obj.getAction()torDATA)  if act_list != None :DATA )  self.writeAnimation(obj)DATA P)  #ip_list = obj.getIpo()ntDATA)  #if ip_list != None :DATA$h # self.writeAnimationObj(obj)DATA DATA4h self.file.write("} // End of Animation Set\n")LDATA(;  self.writeEnd() DATA<Xi #######################################################5DATA(  DATAh  DATAi def writeAnimTicks(self):DATAӫ  global ticksDATA,j self.file.write("AnimTicksPerSecond {\n")DATA(xj self.file.write("%d; \n" % (ticks))PDATAj self.file.write("}\n")\DATA~  ODATA4 k #***********************************************DATA k #Export Mesh without ArmatureDATA4k #***********************************************DATA@l def exportMesh(self, obj):DATA '  tex = []DATAl mesh = obj.getData()DATA$l self.writeTextures(obj, tex) DATA0o  self.writeMeshcoordArm(obj, arm_ob = None)DATA0xo  self.writeMeshMaterialList(obj, mesh, tex)DATA$0m self.writeMeshNormals(obj, mesh)DATA,o  self.writeMeshTextureCoords(obj, mesh)'DATAD8p  self.file.write(" } // End of the Frame %s \n" % (obj.name))HDATA~  DATA`~  DATA4p  #***********************************************DATAq  #Export the Selected MeshDATA4hq  #***********************************************DATAq  def exportSelMesh(self):1DATA r  print "exporting ..."DATAhr  self.writeHeader()DATAr  self.writeRootFrame()DATA b tex = []DATA r  obj = Object.GetSelected()[0]DATAHs  mesh = obj.getData()DATA(s  if type(mesh) == Types.NMeshType :DATA$  self.writeTextures(obj, tex) DATA0X  self.writeMeshcoordArm(obj, arm_ob = None) DATA0  self.writeMeshMaterialList(obj, mesh, tex)NDATA$  self.writeMeshNormals(obj, mesh)DATA,p  self.writeMeshTextureCoords(obj, mesh)}DATA  self.file.write(" }\n")DATA  self.file.write("}\n")DATAp  self.file.write("}\n")DATA  ip_list = obj.getIpo()DATA  if ip_list != None :DATA(X  self.file.write("AnimationSet {\n")DATA  self.writeAnimationObj(obj)DATA  self.file.write("}\n")DATAP  print "exporting ..."DATA   else : DATA0  print "The selected object is not a mesh"DATA(  print "...finished"@DATA4p  #***********************************************# max_infl :DATA\ max_infl = ln_inflDATAhb  DATA  except:DATA h   passDATA0b  DATA0\ self.file.write(" %d; \n" % (max_infl))DATA48] self.file.write(" %d; \n" % (max_infl * 3))DATA<] self.file.write(" %d; \n" % (len(arm.bones.values())))DATA^ self.file.write(" }\n")DATAa  DATA$`^ for bo in arm.bones.values() :DATAL  bo_list = []DATAX)  weight_list = []DATA)  name = bo.name DATA$)  f_name = name.replace(".","")DATA %  try :DATA0@*  vert_list = mesh.getVertsFromGroup(name,1)DATA PU le = 0DATA*  for indx in vert_list:DATA4*  ver_infl = mesh.getVertexInfluences(indx[0])DATAд infl = 0.0DATAX+  if len(ver_infl) != 0:DATA sum = 0.0DATA(+  for bone_n, weight in ver_infl:DATA,  if bone_n == name:DATAP,  infl = weightDATA,  sum += weightDATA,  infl /= sumDATAa  DATA `J  i = -1DATA(-  for el in index_list :DATA i += 1DATAx-  if el == indx[0] :DATAh  le +=1DATA-  bo_list.append(i)DATA .  weight_list.append(infl)DATAa DATA] DATA,h.  self.file.write(" SkinWeights {\n")DATA0.  self.file.write(' "%s"; \n' % (f_name))DATA,(/  self.file.write(' %d; \n' % (le))DATA8 count = 0DATA/  for ind in bo_list :DATAXw  count += 1DATA /  if count == len(bo_list):DATA,X  self.file.write(" %d; \n" % (ind))DATA ܲ  else :DATA,HY  self.file.write(" %d, \n" % (ind))DATA լ  cou = 0DATA (0  for wegh in weight_list :DATA}  cou += 1DATA[  DATA$Y  if cou == len(weight_list):DATA8Z  self.file.write(" %f; \n" % (round(wegh,6)))DATA X  else :DATA8hZ  self.file.write(" %f, \n" % (round(wegh,6)))DATAhS DATA0S  DATA(Z  matx = self.writeMatrixOffset(bo)DATA(([  self.writeOffsFrames(matx, name)DATA  except :DATA 0  passDATA8[  self.file.write(" } // End of XSkinMeshHeader\n")DATAxP  DATAM DATA4[  #***********************************************DATAP\  # Write MatricesDATA4\  #***********************************************DATA(]  def writeArmFrames(self, matx, name):DATAТ global spaceDATA0(  tab = " "DATA(X]  self.file.write("%s" % (tab * space))DATA ]  self.file.write("Frame ") DATA(^  self.file.write("%s {\n\n" % (name))DATA(X^  self.file.write("%s" % (tab * space))DATA0^  self.file.write(" FrameTransformMatrix {\n")DATA_  self.writeFrame(matx)DATA`L  DATA4X_  #***********************************************DATA0h  # Write FramesDATA4_  #***********************************************DATA(ĩ  def writeOffsFrames(self, matx, name):DATA  space = 1DATAĩ  self.writeFrame(matx)DATAK  DATA4(ũ  #***********************************************DATAܴ  # Write FramesDATA4ũ  #***********************************************DATA ũ  def writeFrame(self, matx):DATAP_  tab = " "DATA(HƩ  self.file.write("%s" % (tab * space))DATA,Ʃ  self.file.write(" %f,%f,%f,%f,\n" %DATA\  (round(matx[0][0],4),round(matx[0][1],4),round(matx[0][2],4),round(matx[0][3],4)))DATA(ǩ  self.file.write("%s" % (tab * space))DATA,Xǩ  self.file.write(" %f,%f,%f,%f,\n" %DATA\X  (round(matx[1][0],4),round(matx[1][1],4),round(matx[1][2],4),round(matx[1][3],4)))DATA,ǩ  self.file.write("%s" % (tab * space)) DATA,ȩ  self.file.write(" %f,%f,%f,%f,\n" %DATA\  (round(matx[2][0],4),round(matx[2][1],4),round(matx[2][2],4),round(matx[2][3],4)))DATA(xȩ  self.file.write("%s" % (tab * space))DATA,ȩ  self.file.write(" %f,%f,%f,%f;;\n" %DATA\  (round(matx[3][0],4),round(matx[3][1],4),round(matx[3][2],4),round(matx[3][3],4)))DATA(0ɩ  self.file.write("%s" % (tab * space))DATAɩ  self.file.write(" }\n")DATA #*********************************************************************************************************************************************DATAG  DATA4ɩ  #***********************************************DATA l  #HEADERDATA4@ʩ  #*********************************************** DATAʩ  def writeHeader(self):DATA,ʩ  self.file.write("xof 0303txt 0032\n\n\n")DATA<P˩  self.file.write("template VertexDuplicationIndices { \n\DATA,  \n\DATAh  DWORD nIndices;\n\DATA  DWORD nOriginalVertices;\n\DATA$  array DWORD indices[nIndices];\n\DATA}\n\DATA X template XSkinMeshHeader {\n\DATA,  <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>\n\DATA$  WORD nMaxSkinWeightsPerVertex;\n\DATA$`  WORD nMaxSkinWeightsPerFace;\n\DATA  WORD nBones;\n\DATA }\n\DATA template SkinWeights {\n\DATA,P  <6f0d123b-bad2-4167-a0d0-80224f25fabb>\n\DATA  STRING transformNodeName;\n\DATA  DWORD nWeights;\n\DATA,H  array DWORD vertexIndices[nWeights];\n\DATA$  array float weights[nWeights];\n\DATA  Matrix4x4 matrixOffset;\n\DATA }\n\n")DATAp  DATA4P  #***********************************************DATA  #CLOSE FILEDATA4  #***********************************************DATA  def writeEnd(self):DATAh  self.file.close()DATA  print "... finished"DATAP. DATA" DATA4(`  #***********************************************DATA  #EXPORT TEXTURESDATA4`  #***********************************************DATA$`  def writeTextures(self,name, tex):DATAPa  mesh = name.dataDATAa  for face in mesh.faces:DATA4a  if face.image and face.image.name not in tex:DATA Pb  tex.append(face.image.name)DATAp  DATAҾ DATA$DATA4b  #***********************************************DATA$c  #EXPORT MESH DATA with ArmatureDATA4`c  #***********************************************DATA,c  def writeMeshcoordArm(self, obj ,arm_ob):DATA(d  global index_list,flip_zDATAxd  #TransformMatrixDATAd  mat = self.getLocMat(obj)DATA$e  name_f = obj.name.replace(".","")DATA$he  self.writeArmFrames(mat, name_f)DATA,e  mesh = NMesh.GetRawFromObject(obj.name)DATA$ f  self.file.write("Mesh {\n") DATAxf  numface=len(mesh.faces)DATAf  #VERTICES NUMBERDATA numvert = 0DATAg  for face in mesh.faces:DATA$(@ numvert = numvert + len(face.v)DATA(@ self.file.write("%d;\n" % (numvert))DATA`g  if numvert == 0:DATAX>  print "Mesh named",mesh.name,"has no vertices.Problems may occur using the .x file"DATA@ #VERTICES COORDINATESDATAy  counter = 0DATA A for face in mesh.faces:DATA)  counter += 1DATA pA for n in range(len(face.v)):DATA(A index_list.append(face.v[n].index)DATAPB vec_vert = Vector([(face.v[n].co[0]), face.v[n].co[1], face.v[n].co[2], 1])DATAݴ  if arm_ob :DATA$B f_vec_vert = vec_vert * matDATA H else :DATAB f_vec_vert = vec_vertDATApHڭ  self.file.write("%f; %f; %f;" % (round(f_vec_vert[0],4), round(f_vec_vert[1],4), round(f_vec_vert[2],4)))DATA@C if counter == numface :DATA C if n == len(face.v)-1 :DATA C self.file.write(";\n")DATA 8)  else :DATA 0D self.file.write(",\n")DATA p else :DATAD self.file.write(",\n")DATAHk if flip_z:DATAD a3 = 0;b3 = 2;c3 = 1DATA E a4 = 0;b4 = 3;c4 = 2;d4 = 1DATA8Ҿ  else:DATAhE a3 = 0;b3 = 1;c3 = 2DATA E a4 = 0;b4 = 1;c4 = 2;d4 = 3DATAѾ DATAF #FACES NUMBER DATA,HF self.file.write("%s;\n" % (numface)) DATAF coun,counter = 0, 0DATAF for face in mesh.faces :DATA@r  coun += 1DATA@G if coun == numface:DATAx-  if len(face.v) == 3:DATAX  self.file.write("3; %d, %d, %d;;\n" % (counter + a3, counter + b3, counter + c3))DATA-  counter += 3DATA.  elif len(face.v) == 4:DATAl  self.file.write("4; %d, %d, %d, %d;;\n" % (counter + a4, counter + b4, counter + c4, counter + d4))DATA`.  counter += 4DATA.  elif len(face.v) < 3:DATAD.  print "WARNING:the mesh has faces with less then 3 vertices"DATA8p/  print " It my be not exported correctly."DATA ͩ  else:DATAѾ  DATA/  if len(face.v) == 3:DATAX!  self.file.write("3; %d, %d, %d;,\n" % (counter + a3, counter + b3, counter + c3))DATA(0  counter += 3DATAp0  elif len(face.v) == 4:DATAlH  self.file.write("4; %d, %d, %d, %d;,\n" % (counter + a4, counter + b4, counter + c4, counter + d4))DATA0  counter += 4DATA1  elif len(face.v) < 3:DATADX1  print "WARNING:the mesh has faces with less then 3 vertices"DATA81  print " It my be not exported correctly."DATApDATA  DATA482  #***********************************************DATA2  #MESH MATERIAL LISTDATA42  #***********************************************DATA4P3  def writeMeshMaterialList(self, obj, mesh, tex):DATA,3  self.file.write(" MeshMaterialList {\n")DATA 4  #HOW MANY MATERIALS ARE USEDDATA I  count = 0DATA$h4  for mat in mesh.getMaterials(): DATA x count+=1DATA44  self.file.write(" %d;\n" % (len(tex) + count))DATA(  #HOW MANY FACES IT HASDATAx  numfaces=len(mesh.faces)DATA,Ƞ  self.file.write(" %d;\n" % (numfaces))DATA$(  ##MATERIALS INDEX FOR EVERY FACEDATA  counter = 0DATA  for face in mesh.faces :DATAh counter += 1DATA С  mater = face.materialIndexDATA   if counter == numfaces:DATA0p  if face.image and face.image.name in tex :DATALТ  self.file.write(" %d;;\n" % (tex.index(face.image.name) + count))DATA  else :DATA0P  self.file.write(" %d;;\n" % (mater))DATA `H  else :DATA0  if face.image and face.image.name in tex :DATAL  self.file.write(" %d,\n" % (tex.index(face.image.name) + count))DATA   else :DATA,  self.file.write(" %d,\n" % (mater))DATAX DATA  ##MATERIAL NAMEDATA$8  for mat in mesh.getMaterials():DATA$  self.file.write(" Material")DATA  name_m = mat.nameDATA$0  name_f = name_m.replace(".","")DATA(  self.file.write(" %s "% (name_f))DATA  self.file.write("{\n")DATA@0  self.file.write(" %f; %f; %f;" % (mat.R, mat.G, mat.B))DATA,  self.file.write("%s;;\n" % (mat.alpha))DATA0  self.file.write(" %f;\n" % (mat.spec))DATAP  self.file.write(" %f; %f; %f;;\n" % (mat.specR, mat.specG, mat.specB))DATA,0  self.file.write(" 0.0; 0.0; 0.0;;\n")DATA0  self.file.write(" } //End of Material\n") DATA  DATA  for mat in tex:DATA(8  self.file.write(" Material Mat")DATA(  self.file.write("%s "% (len(tex)))DATA菽  self.file.write("{\n")DATA48  self.file.write(" 1.0; 1.0; 1.0; 1.0;;\n")DATA$  self.file.write(" 1.0;\n")DATA,  self.file.write(" 1.0; 1.0; 1.0;;\n")DATA,X  self.file.write(" 0.0; 0.0; 0.0;;\n")DATA,  self.file.write(" TextureFilename {")DATA(  self.file.write(' "%s";'% (mat))DATAp  self.file.write(" }\n")DATA0  self.file.write(" } // End of Material\n")DATA8  self.file.write(" } //End of MeshMaterialList\n")DATA DATA4  #***********************************************DATA؝  #MESH NORMALSDATA4  #***********************************************DATA(X  def writeMeshNormals(self,name,mesh):DATA8  global flip_norm,flip_z,no_light,recalc_norm,Bl_normDATA  DATA(  self.file.write(" MeshNormals {\n")DATAp  #VERTICES NUMBERDATA  numvert = 0DATA(  for face in mesh.faces:DATA$x  numvert = numvert + len(face.v)DATA(  self.file.write("%d;\n" % (numvert))DATA(  numfaces=len(mesh.faces)DATAx  if flip_norm :DATA ̩  fl = -1DATA   else :DATA 8  fl = 1DATA  #VERTICES NORMALDATA>  if Bl_norm:DATA(  self.writeBlenderNormals(mesh,fl)DATA`  if recalc_norm:DATA(  self.writeRecalcNormals(mesh,fl) DATAg  if no_light:DATA$  self.writeNoSmothing(mesh,fl)DATAT  DATA DATA DATAXp if flip_z:DATAX  a3 = 0;b3 = 2;c3 = 1DATA  a4 = 0;b4 = 3;c4 = 2;d4 = 1DATA else:DATA  a3 = 0;b3 = 1;c3 = 2DATA 8  a4 = 0;b4 = 1;c4 = 2;d4 = 3DATA`DATA  #FACES NUMBER DATA,  self.file.write("%s;\n" % (numfaces)) DATA0  coun,counter = 0, 0DATAx  for face in mesh.faces :DATAͩ  coun += 1DATA  if coun == numfaces:DATA  if len(face.v) == 3:DATAX  self.file.write("3; %d, %d, %d;;\n" % (counter + a3, counter + b3, counter + c3))DATA`  counter += 3DATA 8+  else :DATAl`C  self.file.write("4; %d, %d, %d, %d;;\n" % (counter + a4, counter + b4, counter + c4, counter + d4))DATA  counter += 4DATA p7  else:DATA( DATA  if len(face.v) == 3:DATAX<  self.file.write("3; %d, %d, %d;,\n" % (counter + a3, counter + b3, counter + c3))DATA@  counter += 3DATA Xo else :DATAlhE  self.file.write("4; %d, %d, %d, %d;,\n" % (counter + a4, counter + b4, counter + c4, counter + d4))DATA  counter += 4DATA0  self.file.write("} //End of MeshNormals\n")DATA  DATA( S  def writeBlenderNormals(self,mesh,fl):DATAxS  numfaces=len(mesh.faces)DATAS  #VERTICES NORMALDATA   counter = 0DATAT  for face in mesh.faces:DATA`T  counter += 1 DATA$T  for n in range(len(face.v)):DATA,U  self.file.write(" %f; %f; %f;" % (DATAhHH  (round(face.v[n].no[0],6)*fl),(round(face.v[n].no[1],6)*fl),(round(face.v[n].no[2],6)*fl)))DATA `U  if counter == numfaces :DATA U  if n == len(face.v)-1 :DATA V  self.file.write(";\n")DATA   else :DATA PV  self.file.write(",\n")DATA X  else :DATA V  self.file.write(",\n")DATA  DATA(V  def writeRecalcNormals(self,mesh,fl):DATAHW  numfaces=len(mesh.faces)DATAW  normal_list = {}DATA 8  idx = 0DATAW  for vertex in mesh.verts:DATA 0X  v_norm = Vector([0, 0, 0])DATA X  normal_list[idx] = v_normDATA ( idx += 1DATAX  for face in mesh.faces:DATA Y  for verts in face.v:DATA(pY  if verts.index == vertex.index :DATA Y  v_norm[0] += face.no[0]DATA Z  v_norm[1] += face.no[1]DATA hZ  v_norm[2] += face.no[2]DATA  DATAZ  v_norm.normalize()DATA  DATAHj counter = 0DATA[  for face in mesh.faces:DATAP[  counter += 1 DATA X n = 0 DATAx  for vert in face.v:DATA լ  n += 1DATA$  norm = normal_list[vert.index]DATA  DATA,  self.file.write(" %f; %f; %f;" % (DATAPx  (round(norm[0],6)*fl),(round(norm[1],6)*fl),(round(norm[2],6)*fl))) DATA  if counter == numfaces :DATAH  if n == len(face.v) :DATA  self.file.write(";\n")DATAw  else :DATA 芰  self.file.write(",\n")DATA `w else :DATA 8  self.file.write(",\n")DATAH  DATA$  def writeNoSmothing(self,mesh,fl):DATA  numfaces=len(mesh.faces)DATAF  counter = 0DATA0  for face in mesh.faces:DATA  counter += 1 DATA p  n = 0 DATA$Ȍ  for n in range(len(face.v)):DATA 0 n += 1DATA,  self.file.write(" %f; %f; %f;" % (DATAX?  (round(face.no[0],6)*fl),(round(face.no[1],6)*fl),(round(face.no[2],6)*fl)))DATA  DATA؎  DATA  if counter == numfaces :DATAЍ  if n == len(face.v) :DATA  self.file.write(";\n")DATAIJ  else :DATA p  self.file.write(",\n")DATA X else :DATA  self.file.write(",\n")DATA4  #***********************************************DATAx  #MESH TEXTURE COORDSDATA4  #***********************************************DATA0(  def writeMeshTextureCoords(self, name, mesh):DATA  if mesh.hasFaceUV():DATA,,  self.file.write("MeshTextureCoords {\n")DATAА  #VERTICES NUMBERDATA@>  numvert = 0DATA,  for face in mesh.faces:DATAH-  numvert += len(face.v)DATA(-  self.file.write("%d;\n" % (numvert))DATA(  #UV COORDSDATA -  numfaces = len(mesh.faces)DATA0  counter = -1DATA   co = 0DATA@.  for face in mesh.faces:DATA.  counter += 1DATA ̩  co += 1DATA$.  for n in range(len(face.v)):DATA`  self.file.write("%f;%f;" % (mesh.faces[counter].uv[n][0], -mesh.faces[counter].uv[n][1]))DATA0/  if co == numfaces :DATA /  if n == len(face.v) - 1 :DATA /  self.file.write(";\n")DATA(  else :DATA 0  self.file.write(",\n")DATA X else :DATA p0  self.file.write(",\n")DATA DATA80  self.file.write("} //End of MeshTextureCoords\n")DATAx,#***********************************************#***********************************************#***********************************************2 DATA4(1  #***********************************************DATA 8ǿ  #FRAMESDATA41  #***********************************************DATA 1  def writeFrames(self, matx):DATAh  DATA$H2  self.file.write("%f,%f,%f,%f," %DATA\  (round(matx[0][0],4),round(matx[0][1],4),round(matx[0][2],4),round(matx[0][3],4)))DATA$2  self.file.write("%f,%f,%f,%f," %DATA\  (round(matx[1][0],4),round(matx[1][1],4),round(matx[1][2],4),round(matx[1][3],4))) DATA$2  self.file.write("%f,%f,%f,%f," %DATA\  (round(matx[2][0],4),round(matx[2][1],4),round(matx[2][2],4),round(matx[2][3],4)))DATA$P3  self.file.write("%f,%f,%f,%f;;" %DATA\  (round(matx[3][0],4),round(matx[3][1],4),round(matx[3][2],4),round(matx[3][3],4)))DATA0  DATA  DATA  DATA  DATA  DATA43  #***********************************************DATA4  #WRITE ANIMATION KEYSDATA4X4  #***********************************************DATA$4  def writeAnimation(self,arm_ob):DATA5  global mat_dict, root_bonDATAh5  arm = arm_ob.getData()DATA 5  act_list = arm_ob.getAction()DATA$6  ip = act_list.getAllChannelIpos()DATA$`6  for bon in arm.bones.values() :DATA6  point_list = []DATAX} name = bon.nameDATA$} name_f = name.replace(".", "")DATA X  try :DATA$} ip_bon_channel = ip[bon.name]DATA,P~ ip_bon_name = ip_bon_channel.getName()DATAPw  DATA,~ ip_bon = Blender.Ipo.Get(ip_bon_name)DATA  poi = ip_bon.getCurves()DATAw  DATA$` for po in poi[3].getPoints():DATA a = po.getPoints()DATA$ point_list.append(int(a[0]))DATAX #point_list.pop(0) DATAh$  DATA( self.file.write(" Animation { \n")DATA, self.file.write(" { %s }\n" %(name_f))DATA,X self.file.write(" AnimationKey { \n")DATA  self.file.write(" 4;\n")DATA8 self.file.write(" %d; \n" % (len(point_list)))DATA DATAp for fr in point_list:DATAW DATA  if name == root_bon.name :DATAѾ  DATAо  DATA4 mat_b = self.writeAnimCombineMatrix(bon,fr)DATA(x mat_arm = self.getLocMat(arm_ob)DATAЃ mat = mat_b * mat_armDATA P  else: DATA0  mat = self.writeAnimCombineMatrix(bon,fr)DATAÿ  DATA( self.file.write(" %d;" % (fr))DATA؄ self.file.write("16;")DATA#  DATA( self.writeFrames(mat)DATAn  DATA0x if fr == point_list[len(point_list)-1]:DATA ؅ self.file.write(";\n")DATA 0w  else:DATA ( self.file.write(",\n")DATA x self.file.write(" }\n")DATAȆ self.file.write(" }\n")DATA self.file.write("\n")DATA Ѳ  except:DATA Ȳ  passDATAm  DATAm  DATAhm DATA4h #***********************************************DATA  #WRITE ANIMATION KEYSDATA4  #***********************************************DATA$8  def writeAnimationObj(self, obj):DATA  point_list = []DATA  ip = obj.getIpo()DATA  poi = ip.getCurves()DATA h  for po in poi[0].getPoints():DATA  a = po.getPoints()DATA  point_list.append(int(a[0]))DATA  DATAP  name = obj.nameDATA$  name_f = name.replace(".", "")DATA$  self.file.write(" Animation {\n")DATAH  self.file.write(" { ")DATA(  self.file.write("%s }\n" % (name_f))DATA,  self.file.write(" AnimationKey { \n")DATA P  self.file.write(" 4;\n")DATA4  self.file.write(" %d; \n" % (len(point_list)))DATA  for fr in point_list:DATA$P  self.file.write(" %d;" % (fr))DATA  self.file.write("16;")DATA  Blender.Set('curframe',fr)DATA  DATA$H  #mat_new = self.getLocMat(obj) DATA  mat_new = obj.matrixLocal DATA  self.writeFrames(mat_new)DATAX DATA,@  if fr == point_list[len(point_list)-1]:DATA  self.file.write(";\n")DATA ݴ  else:DATA  self.file.write(",\n")DATA@  self.file.write(" }\n")DATA  self.file.write(" }\n")DATA DATAӫ  DATA87  DATA #***********************************************#***********************************************#***********************************************DATA DATADATAhdDATAV DATA  ARP ARArmatureX«  DATAX« ` ` xXBone7959`87 =`8???7959`87 =`8???7959`8? <?= ==??`;:???DATA` xXX« 0 0 Bone_L.001?7 =`87 =`8?7 =`8??==?????DATA0 ` Feeler_L:g-@<@@a]<&#z=>ս=KwHX?=HX?'T?7 =`8%; <=d2<&#z?=ս=>Kw?HX?սHX'T?7 =`8?0.;?=%.<=??v;???DATAxX` X«   Bone_R.001?7 =`87 =`8?7 =`8??==?????DATA xXFeeler_Rd@R;`@b]<"#z=j==>\w}HX?Zս|HX?8T?7 =`8m<=e2<"#z?=>j==\w?}HX?Z=|HX8T?7 =`8?O;?=/.<=??;???DATA`  X« Wing_L7959`8b=-=`8f?oKoK?f??7959`8b=-=`8f?oKoK?f??7959`8?v<?=v==??vN@???*?91<"P???ޕ/?5F:?81V~>75e?'?T3>ne@>N@??????8$2V4?(i3" $?ӗ4&vIƮ4?OBd??)d??>)d????OBG Yy\OBLamp p@?p@???{&?W+b=???6씾t? bfE9L"?%?_>oK?p@?p@?????>M.9 ?Ʈ>89?ژ?_Lc?+0=!?DOBd?? #=?>=@???OBGOBCubeh ('0( 808!9,8)ʷ|9Ͻ==??Ͻ==808!9?AAAC-:9H?ߕ/4F:?81X~>>85e?'T3>gf@?DOBd?? #=?>=?@???D> x DATA DATA(('C'Wing_Light wingroupDATA('C'('Wing_Reft wingroupDATA('C0('Feeler_Reft feelerroupDATA(0(C'Feeler_Light feelerroupOBG(OBUVOBJECTVBB????????BB?????ޕ/?3F:?81W~>75e?'?T3> K@?Dd8? #=?>=?@???0$DATAVOB(Gh OBUVCAMERA 0] BB?????????BB??????ߕ/?3F:?r81Y~>95e?'?T3> G@?Dd8? #=?>=?@???OBh G(OBArmature ؿ ,8)ʷ|9FW\;g:[I=[I=[I=??[I=[I=[I=,8)ʷ|9???FW\gֺ?AAAC-:9H?DOBd?? #=?>=?@???DATAD  BoneX«  ???????????7959`8?7959`87 =`84444C4C4CDATAD   Bone_L.001`   ?????????7 =`8?7 =`87 =`84444C4C4CDATAD   Feeler_L20  ?????ױ1z?\3ӱb2?Q/W?060?&#z?=ս=>Kw?HX?սHX'T?7 =`8?7 =`8%; <=d2<4444C4C4CDATAD p  Bone_R.001xX p ?????????7 =`8?7 =`87 =`84444C4C4CDATADp   Feeler_R2  ?????]F2p`2?*2X۲?{.,?"#z?=>j==\w?}HX?Z=|HX8T?7 =`8?7 =`8m<=e2<4444C4C4CDATAD ` p Wing_R ?????@"@2@"@??-c?f?oK?oKf??7959`8?7959`8#Nb-=`84444C4C4CDATAD`  Wing_L` ?????@"@@"@2??Kn:?f?oKoK?f??7959`8?7959`8b=-=`84444C4C4CDATAؿ  ` MA@!MAMaterial.001?????????????L????2 ???????@?=?==???» ?DATAX» ??????????L>TETETex.001>@???????@@????? @??<9 ME.MECube.001N HVD7 0 8g 4l{P> B?C[@@j}?DATAHV@DATA0 34=<]B.qKE<X"fo:<ML=<89(f!IKE<X89|Vio:=<0><>??9 8>=<>>>??9 <>??>>??9 ?8???<>??9 ?8?<>>l???9 <>>d?>l???9 <>?>d?<>??9 >d?<>?<>??9 >l?>d?<>??9 >l?<>?8???9 ???8?<>??9 >>??<>??9 >><>8>=??9 <><0>H>=??9 >d?<><@???9 >r?<> >d???9 >p??2?<>??9 ??<>?2???9 >><> ????9 >>H>=<>??9 <@?<> >d???9 <>>r? >d???9 ?2?>p?<>??9 ?2?<>????9 <>>> ????9 H>=>><>??9 G>9=<^><ͬ%>??9 <^>G>9=<ͬ%>??9 SI<>7;>0:7=??9 SI<>7;>0:7=??9 7;.;D?<X?:=fT???9 7;.;D?<X?:=fT???9 '<A? LC={T?7;:G?7;:G? 9 LC={T?=|{W?7;:G?7;:G? 9 '<A? LC={T?7;:G?7;:G?9 LC={T?=|{W?7;:G?7;:G?9 7=X?:=_0/;I*???9 V<>[:>~:!=???9 0;e>: *?L<;???9 [:>V<>~:!=???9 >><>??g9 7;>7;><>??gp9 77;RI>??9 j<)>+;)>7;8ɏ=??9 7;8ɏ=+;)>j<)>??9 77;RI>??9 >;><>??9 <>;>>??9 sH<ŕ?fZM:>??9 sH<ŕ?:>fZM??9 7<'>/:=Cy:+s)>??9 /:`=7<'>Cy:#*>??9 7;>7;?<>??eKop9 7;?7;><>??9 V??9 /<~2>Cy:D!8?ȝ:<????9 :&K?V B?C[@@j}?DATA* @DATA# 3??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????DATA X 0"""""""" " " " " " """"""""""""""""""" !" ""!""#$"#%"$%"&'"&)"'("()"*+"*-"+,",-"./".0"/0"12"13"23"45"46"56"78"79"89":;":=";<"<=">?">A"?@"@A"BC"BD"CD"EF"EG"FG"HI"HJ"IJ"KL"KM"LM"NO"NQ"OP"PQ"RS"RU"ST"TU"VW"VX"WX"YZ"Y\"Z["[\"]^"]`"^_"_`"ab"ad"bc"cd"ef"eg"fg"hi"hj"ij"kl"km"lm"no"np"op"qr"qs"rs"tu"tv"uv"wx"wy"xy"z{"z|"{|"}~"}"~""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""DATA@  /L   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DATA -L????444S=S..????..% ????S=S444% ????S=S..???? ???? ????& ???? & ????10[????& ????10[& ????sss????sss444????& ????& ????444sss' ????sss' ????888????88810[????' ????' ????10[888' ????888' ???? EEE????EEE????( ???? EEE????????S=S.. ;);????;); W?W( ???? ( ????;);W?W) ????) ????W?W ) ????) ????W?W) ???? t) ????W?W t) ????X-!- t) ????X t* ????pW?W* ????p* ????X-!-  * ????;UX* ????p=-=W?W* ???? p+ ????=-=  -!-W?W????  =-=????;U777k???? 3JM????777+ ????3JMk777???? ;Uk3JM????p, ????p, ????,,,CX, ????(-.,,,X, ????C,,,????,,,(-.????p- ????p- ????y222X- ????>yX- ????222y????y>????p. ????C>X. ????>C???? p. ????;U(-.X. ???? (-.;U????p ;UX????pX????p/ ????X222????222GLOBxr8 @  h DNA1?@ A!BC7 "DEFGHIJKLMNO*P#$Q%R%STUVWXYZ[\]^!_`abcd&efgh'i(jklmnopqrstuvwxyz{|) }~  *stu+*,'i##FGTUE(44y*#)+,-2rstuvFG&*P.*/_rstu     ef+ +!"#$%&'()&**+,-./012345678P09:1 !_2223;<=>?@ABCDEFGHIJ4KL43; M N*/OPqQpRSTU5 VWXYZ[\]^6_WX[^777`^abcdefghij6k5lm8n`09o:63; p N'q'r's*;tu/O vQpRqwPxyz{cd49|}~0000988<'===6k5l  <> ? 3; *u/O@> ABCDE?F qQpRP@`BGXCGA`DstuEHHH"IH7  JH'i"KH'i"LHMHNHO HyPHE0'iQ H'i"RHSH'iTab06*uUUU"3FpV''_ ''*;t3;WX    N  /OQpRD      !"#P$P % & ' ( )*+,-./ 0 1 2Y3Z4[5V6V789:\;]<]=^^^'>"?@Y ABCDEFGHIJK__ZLM`NaOPQRSTUVWXYZE[\]^0__`,\abcdefghijklmnopqrs?t?u?vwxyb8rz{|}~*&Pcddd'ie  f  0ghbef]B      !"#$i%E0'jjj&'k ()*+,E-./010'l'2b3l4# 5d6m789:;<=>? @cA iBkChsgDP EnFGHIo #(jBJKLMNp5qqOPrQRSTUVWXYZ['2o\p]^_`abHcdefgo8hijklmnopqrs3t uvw0sxyz{|}~qqqOPrQRtqqOPrQRuqqOPrQR0s  *+lvqqOPrQRsl mNEw qqOPrQRsJ0xqqOPrQRyz {qqOPrQRs   |}qqOPrQRs#Jl~ qqOPrQRlsqqOPrQR 7l qqOPrQ07lqqOPrQsQqqOPrQ     0%   !"#$%&$'()*+,-./0123456789:;<=>?@ABCDEFGH"IJKLMNOPQRSTUVWX_-YZ[\]^_`abcdefghijklmnopqrst uvwxyz{|}~E0'   l @rrrOP     %RT 4 9 }~  & 4*l$Q      4)Z,Ny| "^   "     "E0"/""0"""E' !" #$%E0" &''( ")*+,-./ 01% 20'" &3456' W7"89:;cd< =>?@=AB 6'?C"DEl'2"' FGQRHIJK "ELM'NOPQRSTU "ELMm7VWXYZ['\!]E0"^_ 0 `" ' abcdefgh i!_!j k*Blmnopq7rstuvwxyz{|qqOPrQs=0]"}''*QpRD    ~' m   "Xp/   0"wE0  QpDtX * "cW qqOPrQRsW* c 'X0'cd'c'c' 'NW7' ' 'E0q   '*W78ENDB