tux-droid-svn Mailing List for Tux Droid CE (Page 24)
Status: Beta
Brought to you by:
ks156
You can subscribe to this list here.
| 2007 |
Jan
|
Feb
(32) |
Mar
(108) |
Apr
(71) |
May
(38) |
Jun
(128) |
Jul
(1) |
Aug
(14) |
Sep
(77) |
Oct
(104) |
Nov
(90) |
Dec
(71) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2008 |
Jan
(81) |
Feb
(18) |
Mar
(40) |
Apr
(102) |
May
(151) |
Jun
(74) |
Jul
(151) |
Aug
(257) |
Sep
(447) |
Oct
(379) |
Nov
(404) |
Dec
(430) |
| 2009 |
Jan
(173) |
Feb
(236) |
Mar
(519) |
Apr
(300) |
May
(112) |
Jun
(232) |
Jul
(314) |
Aug
(58) |
Sep
(203) |
Oct
(293) |
Nov
(26) |
Dec
(109) |
| 2010 |
Jan
(19) |
Feb
(25) |
Mar
(33) |
Apr
(1) |
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: remi <c2m...@c2...> - 2009-09-21 08:58:46
|
Author: remi
Date: 2009-09-21 10:58:05 +0200 (Mon, 21 Sep 2009)
New Revision: 5455
Modified:
software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/TuxGauge.dfm
Log:
* Centered progressbar
* Fixed splash-screen gfx
Modified: software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/TuxGauge.dfm
===================================================================
--- software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/TuxGauge.dfm 2009-09-21 08:55:29 UTC (rev 5454)
+++ software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/TuxGauge.dfm 2009-09-21 08:58:05 UTC (rev 5455)
@@ -1,10 +1,11 @@
object Form4: TForm4
Left = 497
Top = 261
+ AutoSize = True
BorderStyle = bsNone
Caption = 'Form4'
- ClientHeight = 107
- ClientWidth = 333
+ ClientHeight = 104
+ ClientWidth = 330
Color = clFuchsia
TransparentColor = True
TransparentColorValue = clFuchsia
@@ -21,371 +22,3243 @@
PixelsPerInch = 96
TextHeight = 13
object Image1: TImage
- Left = 2
- Top = 2
+ Left = 0
+ Top = 0
Width = 330
Height = 104
AutoSize = True
Picture.Data = {
- 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000014A00
- 0000680806000000973AB98C000000097048597300000B1300000B1301009A9C
- 1800000A4F6943435050686F746F73686F70204943432070726F66696C650000
- 78DA9D53675453E9163DF7DEF4424B8880944B6F5215082052428B801491262A
- 2109104A8821A1D91551C1114545041BC8A088038E8E808C15512C0C8A0AD807
- E421A28E83A3888ACAFBE17BA36BD6BCF7E6CDFEB5D73EE7ACF39DB3CF07C008
- 0C9648335135800CA9421E11E083C7C4C6E1E42E40810A2470001008B3642173
- FD230100F87E3C3C2B22C007BE000178D30B0800C04D9BC0301C87FF0FEA4299
- 5C01808401C07491384B08801400407A8E42A600404601809D98265300A00400
- 60CB6362E300502D0060277FE6D300809DF8997B01005B94211501A091002013
- 65884400683B00ACCF568A450058300014664BC43900D82D00304957664800B0
- B700C0CE100BB200080C00305188852900047B0060C8232378008499001446F2
- 573CF12BAE10E72A00007899B23CB9243945815B082D710757572E1E28CE4917
- 2B14366102619A402EC27999193281340FE0F3CC0000A0911511E083F3FD78CE
- 0EAECECE368EB60E5F2DEABF06FF226262E3FEE5CFAB70400000E1747ED1FE2C
- 2FB31A803B06806DFEA225EE04685E0BA075F78B66B20F40B500A0E9DA57F370
- F87E3C3C45A190B9D9D9E5E4E4D84AC4425B61CA577DFE67C25FC057FD6CF97E
- 3CFCF7F5E0BEE22481325D814704F8E0C2CCF44CA51CCF92098462DCE68F47FC
- B70BFFFC1DD322C44962B9582A14E35112718E449A8CF332A52289429229C525
- D2FF64E2DF2CFB033EDF3500B06A3E017B912DA85D6303F64B27105874C0E2F7
- 0000F2BB6FC1D4280803806883E1CF77FFEF3FFD47A02500806649927100005E
- 44242E54CAB33FC708000044A0812AB0411BF4C1182CC0061CC105DCC10BFC60
- 36844224C4C24210420A64801C726029AC82422886CDB01D2A602FD4401D34C0
- 51688693700E2EC255B80E3D700FFA61089EC128BC81090441C808136121DA88
- 01628A58238E08179985F821C14804128B2420C9881451224B91354831528A54
- 2055481DF23D720239875C46BA913BC8003282FC86BC47319481B2513DD40CB5
- 43B9A8371A8446A20BD06474319A8F16A09BD072B41A3D8C36A1E7D0AB680FDA
- 8F3E43C730C0E8180733C46C302EC6C342B1382C099363CBB122AC0CABC61AB0
- 56AC03BB89F563CFB17704128145C0093604774220611E4148584C584ED848A8
- 201C243411DA093709038451C2272293A84BB426BA11F9C4186232318758482C
- 23D6128F132F107B8843C437241289433227B9900249B1A454D212D246D26E52
- 23E92CA99B34481A2393C9DA646BB20739942C202BC885E49DE4C3E433E41BE4
- 21F25B0A9D624071A4F853E22852CA6A4A19E510E534E5066598324155A39A52
- DDA8A15411358F5A42ADA1B652AF5187A81334759A39CD8316494BA5ADA295D3
- 1A681768F769AFE874BA11DD951E4E97D057D2CBE947E897E803F4770C0D8615
- 83C7886728199B18071867197718AF984CA619D38B19C754303731EB98E7990F
- 996F55582AB62A7C1591CA0A954A9526951B2A2F54A9AAA6AADEAA0B55F355CB
- 548FA95E537DAE46553353E3A909D496AB55AA9D50EB531B5367A93BA887AA67
- A86F543FA47E59FD890659C34CC34F43A451A0B15FE3BCC6200B6319B3782C21
- 6B0DAB86758135C426B1CDD97C762ABB98FD1DBB8B3DAAA9A13943334A3357B3
- 52F394663F07E39871F89C744E09E728A797F37E8ADE14EF29E2291BA6344CB9
- 31655C6BAA96979658AB48AB51AB47EBBD36AEEDA79DA6BD45BB59FB810E41C7
- 4A275C2747678FCE059DE753D953DDA70AA7164D3D3AF5AE2EAA6BA51BA1BB44
- 77BF6EA7EE989EBE5E809E4C6FA7DE79BDE7FA1C7D2FFD54FD6DFAA7F5470C58
- 06B30C2406DB0CCE183CC535716F3C1D2FC7DBF151435DC34043A561956197E1
- 8491B9D13CA3D5468D460F8C69C65CE324E36DC66DC6A326062621264B4DEA4D
- EE9A524DB9A629A63B4C3B4CC7CDCCCDA2CDD699359B3D31D732E79BE79BD79B
- DFB7605A785A2CB6A8B6B86549B2E45AA659EEB6BC6E855A3959A558555A5DB3
- 46AD9DAD25D6BBADBBA711A7B94E934EAB9ED667C3B0F1B6C9B6A9B719B0E5D8
- 06DBAEB66DB67D6167621767B7C5AEC3EE93BD937DBA7D8DFD3D070D87D90EAB
- 1D5A1D7E73B472143A563ADE9ACE9CEE3F7DC5F496E92F6758CF10CFD833E3B6
- 13CB29C4699D539BD347671767B97383F3888B894B82CB2E973E2E9B1BC6DDC8
- BDE44A74F5715DE17AD2F59D9BB39BC2EDA8DBAFEE36EE69EE87DC9FCC349F29
- 9E593373D0C3C843E051E5D13F0B9F95306BDFAC7E4F434F8167B5E7232F632F
- 9157ADD7B0B7A577AAF761EF173EF63E729FE33EE33C37DE32DE595FCC37C0B7
- C8B7CB4FC36F9E5F85DF437F23FF64FF7AFFD100A78025016703898141815B02
- FBF87A7C21BF8E3F3ADB65F6B2D9ED418CA0B94115418F82AD82E5C1AD2168C8
- EC90AD21F7E798CE91CE690E85507EE8D6D00761E6618BC37E0C278587855786
- 3F8E7088581AD131973577D1DC4373DF44FA449644DE9B67314F39AF2D4A352A
- 3EAA2E6A3CDA37BA34BA3FC62E6659CCD5589D58496C4B1C392E2AAE366E6CBE
- DFFCEDF387E29DE20BE37B17982FC85D7079A1CEC2F485A716A92E122C3A9640
- 4C884E3894F041102AA8168C25F21377258E0A79C21DC267222FD136D188D843
- 5C2A1E4EF2482A4D7A92EC91BC357924C533A52CE5B98427A990BC4C0D4CDD9B
- 3A9E169A76206D323D3ABD31839291907142AA214D93B667EA67E66676CBAC65
- 85B2FEC56E8BB72F1E9507C96BB390AC05592D0AB642A6E8545A28D72A07B267
- 655766BFCD89CA3996AB9E2BCDEDCCB3CADB90379CEF9FFFED12C212E192B6A5
- 864B572D1D58E6BDAC6A39B23C7179DB0AE315052B865606AC3CB88AB62A6DD5
- 4FABED5797AE7EBD267A4D6B815EC1CA82C1B5016BEB0B550AE5857DEBDCD7ED
- 5D4F582F59DFB561FA869D1B3E15898AAE14DB1797157FD828DC78E51B876FCA
- BF99DC94B4A9ABC4B964CF66D266E9E6DE2D9E5B0E96AA97E6970E6E0DD9DAB4
- 0DDF56B4EDF5F645DB2F97CD28DBBB83B643B9A3BF3CB8BC65A7C9CECD3B3F54
- A454F454FA5436EED2DDB561D7F86ED1EE1B7BBCF634ECD5DB5BBCF7FD3EC9BE
- DB5501554DD566D565FB49FBB3F73FAE89AAE9F896FB6D5DAD4E6D71EDC703D2
- 03FD07230EB6D7B9D4D51DD23D54528FD62BEB470EC71FBEFE9DEF772D0D360D
- 558D9CC6E223704479E4E9F709DFF71E0D3ADA768C7BACE107D31F761D671D2F
- 6A429AF29A469B539AFB5B625BBA4FCC3ED1D6EADE7AFC47DB1F0F9C343C5979
- 4AF354C969DAE982D39367F2CF8C9D959D7D7E2EF9DC60DBA2B67BE763CEDF6A
- 0F6FEFBA1074E1D245FF8BE73BBC3BCE5CF2B874F2B2DBE51357B8579AAF3A5F
- 6DEA74EA3CFE93D34FC7BB9CBB9AAEB95C6BB9EE7ABDB57B66F7E91B9E37CEDD
- F4BD79F116FFD6D59E393DDDBDF37A6FF7C5F7F5DF16DD7E7227FDCECBBBD977
- 27EEADBC4FBC5FF440ED41D943DD87D53F5BFEDCD8EFDC7F6AC077A0F3D1DC47
- F7068583CFFE91F58F0F43058F998FCB860D86EB9E383E3939E23F72FDE9FCA7
- 43CF64CF269E17FEA2FECBAE17162F7EF8D5EBD7CED198D1A197F29793BF6D7C
- A5FDEAC0EB19AFDBC6C2C61EBEC97833315EF456FBEDC177DC771DEFA3DF0F4F
- E47C207F28FF68F9B1F553D0A7FB93199393FF040398F3FC63332DDB0000219E
- 4944415478DAED9D099814C5D9C7DF9E999DBD0F4005058D375E08A811A22278
- 2372C8F1A878803C6A3C42D42F2AA2D1CF0B3008F136D1E453349F889A802278
- 4405448C80460524E28D7E014502ECC91EB33B335FFFABB766AA7BAAA767965D
- 6676F7FD3D4FEFF4F6515D5D3DFD9FF7AD7AABCA8846A3E4C06F2EF3CD651431
- 0CC3742E169ACBB9CE8D864628A32925C7300CD371316CFF388452FCF3E9A79F
- D2FCF9F369CD9A35140A85329D6186619836253F3F9FFAF6ED4BE79F7F3EF5EE
- DD5B6E8E89A52A94D1A6A6269A33670EBDF4D24BB104341627C3304C87C0306C
- 8623F97C3E3AEFBCF3E8C20B2FA44020200E117F4C210C9A9F0DF867F6ECD9B4
- 64C9924CE79D611826A39C73CE393479F264F9AF01A17CD95C19B576ED5A9A3A
- 756AA6F3B75B50AD64AC3BAD66F92BE3FC6418A6F370FFFDF7D3E1871F8ED585
- 104AA112F7DD771F2D5BB62CD3796B53A4204622919840AA42894F88A25C004C
- 71E73686613A3EA79C720A4D993245ACC78472E2C489B475EBD684833B421DA5
- 5320F1A92E4EAB12820881D42D723FC330ED9F64EF728F1E3D449B8D384E0AE5
- D8B16369E7CE9D99CE77AB2345508A62381CB62DD8565F576F8B89F2FBFD949B
- 1B149F5850A98B4F29966C5D324CC7A7B0B05044FF800E2D943A8144CB3E969D
- 353BA9AEB68E420D8DDA732184B979412A2E2DA6BCBC3CCAC9C9B109268B25C3
- 746CD212CAF6E87AABAE3616298E8D8D8D54BBB396AAAB6A28DC144E292D8861
- 5149219594965030188C892516164A8669DF247B87B5423966CC980E63514A4B
- 525A9010C88686105555549A6E7683EDD871E74469407FA25E7B130D3C264AAB
- 3E3668D38F44F35F33CCF5F871452545545A668925AC4BD5B26418A6E301A15C
- B0608158EF7042E91449F42CAAABABA38A1D95362BF2FACB88269D1F2553FF5C
- 79F35DA29BA619641AA0821253284B4C575C154B76C119A663D26185522792A8
- 8B84484A77FC88438866FD364A471CAA9EE8E8D8A9F0D95744174CB6C41282B8
- 67F73D282F3FCFE686B350324CC7432B94A3478F6EB742A9D649AA2289FA4855
- 24C70D239AFD5B4D9DAB6B35AC25804FBD4874F7C3D696606E90BAEED1857273
- 738558B20BCE301D1308A5ECCEDDAE84D2D9A346FD541B6E449D647D03956F2F
- 37853322F68F3BDB14C95B5B7EED0BAE255AF589B55E52564C45C545422C55AB
- D229962C9E0CD37E693742A98AA1B3078D73BB6A4D36343450C5F68AE422994A
- 63BE72CC675F130DBBCC5AF7F97DD46DCFAEB6BA4AA70B9EAC1B240B28C3643F
- 5AA13CF7DC73B346289DDD0BA510EAB63B6325E17257555453448AE45053246F
- 9129B740A014B1BCFBD1283DF5376B3D9817140D3B32BE52D7D551FDD42DEA31
- 0CC3641710CA975F7E59AC679550BA7535943D68D4EDAA50C2CDC6A770B9EB42
- 621DD6DEE42B7E41D75D5241D1FA75AD923F34E80CBB228736FD688DD119CCCD
- A182A2022196CE5E3BAA10CAEDEA27F7216798EC262DA1DC5D01E7AAF0496194
- AE343E2182E845D3D488A5C9DC6F09A61B10C929BF3AC84CCF14CECABF2AD749
- 2533A2681236FB4ACEA6EFB714D29889AFD2B6EDF1B2F2079A5D6F9F21CECA09
- E64021C57A202710B338B148375DAE732F1F86C91C5E01E70942396AD4A88C59
- 944E91943D69420D21334FB5A695581FAB6FF4E2B043BBD355971E4DA3CFEE1E
- 4FBFFA6D8A366D4DE97CEB84449934820792513850AC7FF645394D99B68ED6FD
- EBDF292709C1448B795E7EAE680492759B4EB79D6198EC0042B970E142B19E35
- 42E9EC4953535D43D595355A8BF68883887AF530E8888349048C1F71D8BE64E4
- 1E40FBECDD9DF6EB194C10B968ED47146DF86297F268149D6C9A8ABD6CDBD67E
- 16A27757FE9BD6ACFF893EFF7253CC25F70262892E91B97956AB398B25C3641F
- 5AA11C3972644684D269494224AB2AABA8A62A9E975E3D88CE3CD110CBC0BE89
- 6918C5A79311D8CBF51A91BA4F296A2EC933927CB7AFCB389895EE07444214A9
- 7A9D28BC933EFB8662BD7936FD44B4E19B28AD5A675AA2DFC42F0277BD6BB72E
- 22789DBB44324CF601A17CE59557C47A5608A51AFF889E34E5DB2B62FBFFFB1A
- 83268D492E1EB0F60C87B567BB46FD17C2AAF4CE8C367553D5CAC8573ACCF3F4
- 48A529944DE5AEFB57AD8BD23D8F47638289BA4C8419A9F19872CC4B8661324B
- 5A42D9D68D39B235DB1AB8A281766C2BA7C69035F4D9BCD93EAD05E90422295C
- E3C43DD647E34F14A95ED2E289788DA0997EF1C9EE0798E9461BBEA568CDAA94
- D21B3F2522441394752B150F847BF930CCEEC7AB31274128478C1891118B52B5
- 263180EEB6ADDBC5F671671A34EB46C5BAF2728DBB26718D1BB79A6EF1DBFA7D
- 2988A791DF878C823EEE07444DB77BC72BE2D3FD98F82ADCF14193AC013AF20A
- F2A84BD7B29855C942C930D9018472D1A245623DE34269AB9BACAAA6EA8A6AB1
- FD893B7C74E6091E82A1888F5134908CDC03F5C7EDAA50264B1B49D47E2A9674
- 80504230738201D3FDEE96302211C33099452B94C3870FDFED42A9D64FC2EDAE
- ACA8A4BA9DF562DFDAF97E2A294C2511EB43B8C72527EBF747769A16DFC216E7
- D3283DDD74EF1D8D458AC046CA4D6B325C238FD61EE364FC2D615AF569D4B422
- FDD4B5B99E92859261B20708E5E2C58BC57A5608A508260F85A86247456C60DD
- 8DAFFBD3AE53F4757377BF23DB9E532EEC96825EE47C7B5EE87E0FF5DF52B43A
- 49DDA4CBB5CEB92E4C9F7D1B15F195723422164A86C91EB4428909BF33E57AC7
- 84B2BC921AA450BEE6773FC9A5755AB8C8797A1739F29FE7286D701D7F21F9BA
- 8E723D24529EBCA5DB2DDD0346368955CCCB53DAA5346124228661320B84F2D5
- 575F15EB59219472FCC8EAAA6ADA595D2BB6BFFA889F8E38203DC110EE7769B3
- FBED1053E17A87D3BF3F23A73B1965A7E97786B652A44253F7E961092344B4EF
- 859650A231479D62821B7318263BC82AA1545D6FC450A2370E9837C34F03FBA4
- 2F18BE3DF4EE77B4620945433F7927E01039A3B08F58B48756AD12AE77C2760F
- D77EF5FA088DBFCD6AF5C6C46518DB521D319D6198CCA315CA61C386653E3CA8
- BE9ECAB759C1E6D78FF7D17517A61E1E248F314AF4EE77AA42E914399F69A11A
- B99A6076D33A0D6F7BA545F7FCD0F3117AE8054B281147999F9F6F1BAE8D6198
- CC03A17CEDB5D7C47A5608A5ACA79401E7D14894061E65D0BCE92DB0AE4CF7DB
- 579AD8FA1D11D6DFC61634100D2523D025617BB4663D45762A2141690C043CFC
- C626FA6C63540C00DCA55B99AD2187859261B203AD509E7DF6D919EBC2A836E8
- 5496575263C8AABFFBF6E500A51A6EA3E2EF3E3EF13A4E61B3ED4C2F2D10DE3A
- 5FF4EF76E25559B0692BD1A0ABAD9E4739B939A27E921B721826FB8050BEFEFA
- EB623D2B8452BADFB24147C6523E31D54F670CF0B0B03422E72B1B94E02E0BA1
- AC491E149E2051A625E9DB6368C2B5A2751B295AB94A7B969796CF79354CF7CC
- 69AE9F2C2D140FC3394A3AC33099472B9443870ECDD8306B6A3D25E6E0AE2AB7
- 7AE74C1AEEA3DB27A5E67EABF262E41F4046E940DBFE68FD268A96AF487256A2
- C8211D9F231D91DF6D6F50548604A539F7CEF0298DF4D9775131C86F59D75276
- BB19264B8150BEF1C61B623D6B84521D18A3B2BC8AC24D61EAB597412BFE1870
- 1FD547C17688CF149EBDC6D9F7239467C712723F29115F511F328A8E4A4C67FB
- 124A8BE6EB6CFA4F944E9EDCEC76070354A28405B1DBCD30D985AB50D6D4D4EC
- 52C22D45EDA183A5BAAA261678FEC494009D71BCC6D2F21239B8DF7971F7BB25
- 02E7EB7A1A19417BD7C548C52AE17AA79317C99CD72274CF5FACFAD7C2E2022A
- 282C60B79BE2235475D6FB67B293A2A2A2EC124AE00C1392EEF7D8213E9A754D
- 20EDF484DB5C36D02662E11FE7251E98AC21A7C758532D9598CC482385B7CC4F
- 491875870CBE3624AC4A084269D7924EED76E36BB7FFFEFB8B6992FBF6ED4B7B
- EFBD37AD5DBB96162C5840AB56AD6AD7A299EAD084AD718F5ED76ACFE59869B4
- 4279D65967655C28D5E0734C390BF71B0363AC79CA65F8B464DF112348FEBDC7
- DA36857F78DEFB3CB95B9C3FC6BEBD7A3D45CC2595349CC76CF83E4AC36FB55A
- C9E176179716DB82CC5BF30B2D5F1EF4DF57450873146FDBB62DE32F0FF287EF
- DB6DB7DDA60DB07FEEB9E7E8D1471FCD783E5B725FDDBA75A33163C688724F06
- 9EC7279F7C42FFFCE73FC5FFE9DCAB7CBE871D76180D1A34487BADEAEA6A718D
- 152B56D0E6CD9BDB5D59660310CABFFFFDEF623D6B84D2D9FA5D53BD33E67ECF
- BA3A40630737BF50A9885C33BEAE70BF7BC6FE0FFFB8C01A333295A1D54C97DB
- B7C7A9B66DE12D8BD2EF06D97CAD69CF36D19C37ACD6EEC292021164DE5683F5
- 1E7DF4D174E38D37D241071D94B0EF4F7FFA133DFDF4D3197D71F0AC972C5922
- CAC08D1B6EB8415896ED05DCD3A5975E4ABFFCE52FD33A6FEBD6ADF4D8638FD1
- 5B6FBD95D233C1757EF18B5FD035D75CA37DBE3AFEFAD7BF8A1FC9EFBEFB8E05
- 330DB44279E6996766542881EA7E4BAB124273C6713E7AFC861CEBA0342C39A3
- A837F94AFBC7D3DFB694A20DA9CDC6E82B3E8A8CE278434EB4762345CA57A77C
- 6D27FDAF6CA0AA5A335D9F41C565C5B6469CD674BBF1389F7DF6D9A42FD11557
- 5C41EBD7AFCFD84B73ECB1C7D2238F3C62FDB3790DD1B39388767C4734E601A2
- 01978ACDEFBDF71EDD74D34DEDE6C53EE38C33E8AEBBEE6AF1F9B0A25126C9EE
- 575AE277DE7967DAE9235619E2BA6EDDBA7653A6990642F9E69B6F8AF5AC124A
- 759231B47EA35127DC685961CB1F0C52AF3DD378C0B8AB4021F9BB8F886DF214
- 4A7568B5AE03C82838207EEE7F5214598D50BEF55184AE7AC86AED0EE605A9A8
- 381E3BD9DA6EB74D84EA2A8816FC97254283AF334DCD73C566C486C1B2DCB265
- 8BEDDC430E39447C7EF5D557E2D3992F3C1FB8F158BEFCF24BDBF7055FAA430F
- 3D54B87B7886BA73710CAE71CC31C7D0E5975F6EED78FD4E73691698FC32A299
- 56D8155CC72953A68874901F792D5D594957B4478F1E226F2A380F7995E7C94F
- 790E8E47BE700DB7B4D563DCCAE5F1C71F8FBBC0EB5E36BFB00F257F50070FB6
- 7E14BAEE1FDB74C71D778817D32D1FB024EFBFFFFEF8463CDFD54F137DAA196B
- 1565D96754EC8707545454D0C5175F4C3B76ECF0FC1E312E42895FC46C104A5B
- 4C656D5D2CF8FCB68B03346968BA43AF9982D77D28193965623DB2FD3D8AD66D
- F2C844F3797B9E4A46AED5E21D0D555064EB1B49AF93AC07D1550F87E8AD8FAD
- 79C911642E1B712094AD3D45ED65975DA61721BC9077DA5BEBE1F6415461D1DE
- 7CF3CD54505020B6239675E6CC99B18A6C801FD2C99327D35E7BC5A300BEF9E6
- 1B519788EDAA053B7BF66CFADBDFFE16FB1F5501485F6BE5AA79040FEB0B18D7
- FAE8A38F44630F5C48499F3E7D449D207E20D4BCA9D4D6D6D2C71F7F4CF3E7CF
- A7F7DF7F5F6C8365A6DE8FEE9E4F3CF144916FDD31EA33C3F7D6564D706D1ACF
- F3A2393131C3F3C0DC556E4289723DE9A493AC0DB0C41F3EC512CB64F4EC67E6
- 6799259C264F3DF594F89164ABD21B0825AA444056092550FB7E8B9E3A15D6DC
- DEBDF63068F903C1E4276BDE31E17E9759EE77B4723D45AAD66B4E4C1439FFBE
- 17C4F3B4633545776EA4960077BBFF3596D8638A5A8C16A40EA9D6DA6E378412
- AEB52045117203132B4D9F3E5D88CADD77DF9DD6B91B366C107576B0B2FEF8C7
- 3FBA8F8AD4823CC27A9B33670E4D9A3489AEBAEAAAB4F2B574E9526161BA9D37
- 77EE5C7AF8E1874514889B2BBD6CD932BAE5965B6CD6698B8512E007ACD9B29C
- 3A752A2D5FBE3CE190929292587D99E0E62EDE2229396408D1AF9789D56462CC
- D8D10AE5E9A79F9E1542E98CA9C4D06B8D0D56ECE1E27B8274F87ECE07ECD117
- 1CEEF7DE96FB1D35453252B99E3CC9E942FE1E6759EB0809FA61114523A1E4E7
- B8BCDF4FBF15A669F32CB73BB720D7B4DAF2DB2C761265076BD255289B5F1641
- B7FD6D6E9F00560A8015D2CC840913842513B3D6E0C66F37975EFD62568A002F
- EDA635D64BD90C1A6C860C19121749CD3149F328715ECB04E27BF5D557DB8F93
- 79532928B3DD4F023807F9528EB9EFBEFB84DB9FEC98DB6FBF3DF612A1DC9F78
- E209EAD7AF793FDCE10F9E71BFE657EFD8FF1F72BD553F6B326FDE3C7AF0C107
- 13BE1768DD9E356B96F50F5CFBFF196D4F432DD3DA8AF8B39428623C6AD428FA
- E9A714861CECE44028DF7EDB1A6F362B85128B3A33636D4D9DD837F6243FDD77
- 794E9AE9211ED272BF61158677681A649C635016F422FF1E968B13A9FE9222E5
- 1FA778B1C44D23EE0CD1867F47C4171F6E775B35E2C8B24B2A944E2E7F29566F
- 29EA32DF79D05AC74B8B97D7E4C9279F1456AA0082716773BD2D44E3E64FE2DB
- 67F6B7C4046E24DC4927D8075771F31A9B85E3994709AE77F61DF1FCAA403864
- 5DAC0E88EC90EBCCF3EF4C3C4F0A8EE202DB505D5C5CBF398D356BD6D8AC5278
- 64F7DC734F6A0F0A69A1BC647E95F240F5021A5D9CAE7DD2E78AE7E0FC31C0B3
- 449948907EB398E20706A1494C72B44279DA69A765855002E7884218F53C128E
- 50498141EFCCCA353FD583BDD3F3159BEE7797FE14ADDF4AE1AD4B5D2EAA1C5F
- 7A945880B0269B767A9EA363C3FF4569C4DD56885320C74F856DD88823CB0D2F
- 542C44C54B8454517BE494B8A5A3BCB888F33BEEB8E3F4E94937D9B95D119418
- 1006D5CA912F6EAA422951C51DE8AC2B3714CB2DE19ED53C49D41F00E73D9B1C
- 7FFCF136F7FBDA6BAF158D2529E152DE104A08994E285D9FABAEBA0269E31A9A
- 7B83C0B3507A03A1845704B25628D5469DDA9DB514AAB7DCD7FB2ECBA131273A
- EABB3C04CB80FBBDCF08BB5026EB91B3D7A964E4ED45D1DACD14FECF0A6A2953
- E634D282F7AD56FB82A27CCACDB3F7C4C9B850AA56D4AE08250470667F7BDAAA
- E8A8D62A50ADD17485D2D928050BD7CD92D4A1B8A00956172C4FEC976EBE53DC
- 15A1854579E5955726947FCF9E3DC56C01A87238F8E083DDF3C14299F56885F2
- D4534FCD1AA104CE469D5AD3AA444E0FDFD7478BEE087A27E0F8EEF8F71E2A06
- CB086F5EE479AABFE70821AEE12D4B85B8A6731D091A7186FC16B193D600BD10
- CAB61E00038F12EE99EB0BA5D6FF39EBEE76452801EAE5E64E8AFF0FB1811822
- 4DE776B4C2CA6B7BD551C29AC37E55B0A4ABE91468E99EABF59908D381D52951
- AA1504C81BF2AEA681F475DB95D663F42A92A1236AF95F77DD75DE56A5D30A76
- 082584CC2994499F6B9A42098167A1F4064289C63F90B542A9C6545A8D3AB5B1
- 98CAB937066940EF14EAF75477BAC472BF9BBE7F5EBB5F25B0FF78CBFADCB294
- 5A8499EEFC9561BAF999E62E8BB981DD3200468B5E28C9AE0A25D0898B6C0891
- 385DE754F2E81416F9D22711031B6A2BB4B35A40AD3B95C8B42552F49B2D5184
- 2A5D70C105096286315D6DD1016A9CA3B30147C551278C567D16CACCA315CA53
- 4E3925EB84526DD469A86FA0FA5AABBE6FEC097E9A79694E4AC3AFC530ADC9C0
- 7E63A9E9BBE72919065ABCF7398BC2DB5653B466A336DD54C63C1839BD9E366C
- B262270B8AF3DBB411472D33BC503197D0E385427CA18C9D7413CA0F3FFC907E
- FEF39FA7949E5674549C7584A9A409DC5EFAD6104AE01593A8883B7EBC215808
- AC778AD9BBEFBE1B2F4F0824DC7AAF101E87BB7FC92597D0E79F7FBE4BCF3569
- 999920FF2C94DE4028110A06B25628816A550AF7BB068D3AD69762F98C3CEAD9
- 4D238A49C4D357762485CBFF95F49AA89BF4EF713C356D5AEC9139F75D9BB747
- 69C8ED564BBD3F00B7BBA04D1B71D4F24AF585824584FEE0316BB1358412E81A
- 401C69DAC8A050E2BB150B5D726B1472082B5CEB7FFCE31F092289901B840C09
- 7475B63A60715F3C27560DF1F5D75F2758AAE93E57CF322316CA54D10A252A9F
- 754299E9C113D4BA4AF4D4918D3AD70ECFA15F9F935EA8503C61F75DBEA20344
- 2B77B42EB53EE1BA74A7CF0FD1D3CBE4BCDDB96DDE88A39657AA2F14BA11A287
- 46AB0B257036DE00E545B509540685322116D3D978E3B0F610548ED01DE73344
- B93FF0C00322D651E0AC82C0F9B048BBFECCFA1F2E3C62431D213D683547CFA1
- B2B232D120D4BF7F7F2168E855841E392C94AD4FB261EA2094EFBCF38E58F714
- CA4C2385525A957535F5E2E64AF20D5A362D4F7C26DE7D4B4AAC75F28BD23C6E
- 4A1D55D559E34EC2ED8648B6454F9CC46B47C54B90CA0B85E06578115E42F9C1
- 071F883018AFF462B85966CE16654936B8DE4027EE8EB2007FF8C31F443DA253
- 28F1421517175B1BD45E331045D46F3AEF5B01DF6FF4F3C68C7F68DD86183B81
- B5196B456F05A184F832C9D10AE5E0C183B3CEA20489FDBFEBA9A97996C69997
- 0469CCC040AB8A5CF203BCD358B0BA89A6CEB51A7102C100E517E4EDB651CCD3
- 11CA045C84D286577A6E6EB7440D0B4A354DD0D642E9158BE9A85B458B370616
- 516328D15A9DF2F5344008D1171D7DCB3D61A16C35BC2C4AD99DD45328338D6C
- D4B159951828C3CC35EA28DFB92BBFF9B85412F33EA44532A6A47BF1230DB4FA
- 6BAB753EAF3037612ADADD2194B11E23CE170A23F3B85936AA506A06D0D0A6A7
- BEA0BA861CC468A2CBA24B2CA2679A92545BBD9D2DEA325F372BF3B23B854BD7
- 908363DE79C8B5B51EDFC5F3CF3F9F366EDC182B779BF0B44028B5F78C6E9072
- 9421F5B9A5F25CDDCA8CAC61F65828BDD10AE5C9279F9C951625D059953254E8
- 77179956E5006BAA885D1539FDB5534F63C3E6088D9A6D0D80E10BF884352907
- E7DD5D93876154F3D8600ECED84608E08089D6BAE8D697249E102F155E5295AF
- 97DBC35C5451738B47D409911AE8AEEBD5A3525769A5AB9E2FE328D52E95F29E
- 84A894C6B7AD7EC61E90AE5E5B27EE52C87571A14AFCE7F3CF3F1FEB7B9D5428
- 75E5A812CBB32274CE1F00A7859FECB9BA959912688FEFC88F3FFE488CB74589
- 4806E02994D980D3AA6C6808514373A850CFAEA65579477E9273BD126FAD4C12
- 4D9D17A2051F5AD502C1FC9C9835D916C3A9B9819E218B163507D5E3458190B8
- B9C2AAB5E37C3953410AA55BB0B9EC01936CFFAEF6CC7176434C86B39ED44DDC
- 2549F67FF1C517B1166A7C376D8D23E98E1EE4EC1FAF2B13A7F59EECB93A5184
- 1683616064A46C3080B21DAD50A2C52E5B2D4AA0B32A234D569CE2EF2E34ADCA
- 9FA73F01593C71DD46238563E2A0F1E6B8DB6AAD337D06E517DAEB2677D7E461
- 28270CFD1FABF8778A940A5C49B89412A73078215FDE240330C470369648AB30
- 1DA174F6EA01A98ECB089C035FC03595BD76DC1A9BD49670C7C0C2302E5A4528
- 9D16A3B33C755521C99E6B9232FBF39FFF2C1AA4B2E5BDCE345E1625E61C029E
- 42992D24D655365A73EA98B947CBF7D2DBF2CD4F79747A22A7BF607A873CFA66
- 233DF2A66CC4F1EFB690205D3921940403EAC680C585AE7CF89482821708C2E1
- ACD3934384795969AA158434213A38C76D141E208558B56453113A195E83F39C
- 43C301B8D6105B5CDFD9EF1BE7428830C2BB53BC71ED3F8FB6AEAD88892D7C49
- BAE74857292F581A88A994658EF13111CE2348D74AD69599FC6171C45ADAD03D
- 5709CA09F7AB94193A1820DE1313CC31DE6885122F57365B9440B52AB16008B6
- 70A36555FEFACC20FDFAACD4E7D549493B5374DB614D9EF63B2B24081A8DD849
- 39C3E2EEB426D572FACD6F7E23C692CC243366CC105D63070E1CD8EA6963E0DC
- 7BEFBDB745E7DA7A246940780E467E771D6CD804A3A323F05C0277B6A5F94987
- 679E7986264E9CD8A2736FBDF5561182944DEF74A6F1B228317713F014CA6C42
- B52AB1A005BCA12E14B32A5FFEAF7C5167691D9C4A82BBB8BF9947DF36ADC9B7
- 2C6B128D3879F999B1269D65853A34088A67FE4DEB1331802D7901CBCBCBA94B
- 972E09DBF142FFFEF7BF17EB188CF6C8238F6C95FB421DDBB469D3446B242235
- 10AAD3BD7BF794CF8798C16D8688EB80982C5EBC58588798364127969835D139
- 9D02CA1BF78B715D5B0ACAAC77EFDEDA1F167CDFD1F307791B3F7E7C4ACFD559
- 66B082592453472B94981F24DB2D4AE0ECAD136A085153C86A013FFD483F3D36
- 31AFF9C0B6CA80FDDFAA7AD39A9C19B72673F383092DDD992A4394555E5E1E9D
- 77DE7922B01CBD71645034C4022DB5A8CF94EEC57EFBED4723468C881D9B0CD4
- C92D5CB8509C8B5019F4DE913D495E7CF14561B9A88C1E3D5AB87DF298175E78
- 41E4017953F3A543E615DDC930EDAA13A42DF3BCCF3EFB68CFC5E01EC8577DBD
- 159580D1C8716DE407D776960538F0C00363C7A0914C3DC66D5E9B61C386C5CE
- 49156799A969A0DFB7DCFFEDB7DFC6CE717BAE921F7EF82176DFB2CCB2ED5DCE
- 06BC2C4AE935780A65B621AD4ADBD4B6F5218A5A1E383D36214F08A67B025E17
- 482513F1D5479798D6E492B835999B17CCB835A92B333774FD8A7705AFE95677
- 9564B330EECAB9A9E43BD567D992FB4CF61CDCAEBB2BF7CD78A315CA134E38A1
- 5D5894400AA5144B4C6DDBD460599570C1974CC9A7923C977CB7A2A5B9B93C4A
- A7CEAA6D2E28CB9A74F6C2C9C6F26318C6C2CBA294B3767A0A65B6E26CD88155
- 2947163AFE403FFDEFE5796924D6B2632E79B29E3ED86809B43FC747C1DC60AC
- 174EB658930CC3B40CAD506272F5F6625102A70B2EC552BAE0134FC8A15BCF69
- 1E093D9556F0342DCDBFAC6CA419AF592EB7E1230A6A5CEE6C2D3B86612CBC2C
- CA952B578A754FA1CC669C2E785363536C6A5B70EF985C1ADD3F8D40F4A887B0
- 3597E9E75B2234614E9D68C801815C7FC278932C920CD3BED10A254212DA9345
- 09E4AF813A141B1A77C2A148EC987B47432C735A5E37E938AFDA14C7731FAFA3
- CD15D6357C01835D6E8669A7785994188314780A65B6A3BAE0D2B244AF9D6853
- BC00EE3D378F46F74BA78BA37EDA0788E484676A85452980CB9D9B9320922C94
- 0CD3FE71154AC49C39690F2FBD2A9631CB32D444D1705CE546F7CBA15BCECAA5
- E2BCC4EE8DA9DC21C4F1572FC62D4988644E3010134976B919A6FD91CCA2446C
- 6ACA42D95E708AA51590DE64B32C7B96F968F2E0208DEEEB31858452769B2B23
- F4E8F210BDB4B631BED114C9408EDF6649B2CBCD301D8B0E2994402796E1262C
- 119BF821C6F2B4DE01EA59EAA3E37FE6D7565F7EF87D983EF8BEC95CC2F61DCD
- 96A4B422592419A663A215CA010306B45BD75BC559671917CC88CD154F1BC3EA
- 791308D805520E78D1DECA8961186FD77BF5EAD562DD5328DB23522C55C194A2
- 89312CC52D7B850249CCC30CBF618AA32F4120B94E92613A2E5AA1C44C7B1DC1
- A294C85F0A2996AA68DA85342A4F90372C3E7C3E232684AA30AA02D95ECB8661
- 180B2F8B12B390024FA16CEFA8A208A450AAFB74A862E85CE47E86613A2E5AA1
- C430591DC9A274A213C75447D5618164988E899745F9E1871F8A754FA1EC88A8
- 8593CCA2D4AD330CD339E8F442C9300CE38556283152724776BD1986619C78B9
- DE18211E780A25C3304C67442B94C71E7B2C5B940CC3742ABC2CCA8F3EFA48AC
- B350320CD3696935A1641886E98C688512535EB245C9304C67C2CBA2C494BFC0
- 53281986613A232C940CC3301E6885B27FFFFEEC7A330CD3A9F072BD3FF9E413
- B1EE29940CC3309D11164A8661180FB442D9AF5F3F76BD1986E95478B9DE6BD6
- AC11EB2C940CC3745A5A4D281986613A235AA13CE9A493E8871F7E4838982D4A
- 86613A2AC92CCA7DF7DD97962F5F2ED6634279FDF5D7D32BAFBC9270300B25C3
- 301D9564423972E4487AF0C107C53A84F265F373D4CA952BE9A28B2ECA74BE19
- 8661B282175F7C510C3F69B210421934571AF0DF0D37DC402FBDF452A6F3C730
- 0C9351C68F1F4FD3A74F97FF1A46B3E959682E35F5F5F574D34D37D1E2C58B29
- 7E04BBDE0CC3744C74AEF7B871E368C68C19949393837F85001ACA815DCC6507
- 56962E5D4A73E7CEA5152B5650535353A6EF856118A64D90FA07511C3468104D
- 983081060F1E2C77C7AC44C3A1A879E65297E9CC330CC364189B2B6D684CCF52
- 7379C65C46994BA3B9E4643AC70CC3306D8CD4BA85E672B1B9D4A83BFF1F8E86
- FF70607F557F0000000049454E44AE426082}
+ 07544269746D617036930100424D369301000000000036000000280000004A01
+ 000068000000010018000000000000930100120B0000120B0000000000000000
+ 0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFFFFFFFFFAFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFAFFFFFFFFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+ 0000FF00FFFF00FFFF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF00FFFF00FFFF00FF
+ 0000FF00FFFF00FFFF00FFFFFFFFFFFFFFBDBDBD626262252525212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121202020202020252525626262C0C0C0FFFFFFFFFFFFFF00FFFF00FFFF00FF
+ 0000FF00FFFF00FFFFFFFFF7F7F76C6C6C202020202020202020212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121202020202020202020202020202020747474FAFAFAFFFFFFFF00FFFF00FF
+ 0000FF00FFFFFFFFFFFFFF727272212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 21212121212121212121212121212121212121217A7A7AFFFFFFFFFFFFFF00FF
+ 0000FF00FFFFFFFFC6C6C6212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121CBCBCBFFFFFFFF00FF
+ 0000FFFFFFFFFFFF6F6F6F212121212121212121212121212121222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 22222121212121212121212121212121212121212121216F6F6FFFFFFFFFFFFF
+ 0000FFFFFFFFFFFF3B3B3B212121212121212121212121212121222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 22222121212121212121212121212121212121212121213E3E3EFFFFFFFFFFFF
+ 0000FFFFFFFFFFFF2F2F2F222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 22222222222222222222222222222222222222222222222F2F2FFFFFFFFFFFFF
+ 0000FFFFFFFFFFFF2F2F2F222222222222222222222222222222232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 23232222222222222222222222222222222222222222222F2F2FFFFFFFFFFFFF
+ 0000FFFFFFFFFFFF2F2F2F222222222222222222222222222222232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 23232222222222222222222222222222222222222222222F2F2FFFFFFFFFFFFF
+ 0000FFFFFFFFFFFF303030232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323303030FFFFFFFFFFFF
+ 0000FFFFFFFFFFFF303030232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323303030FFFFFFFFFFFF
+ 0000FFFFFFFFFFFF303030232323232323232323232323232323242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424232323232323232323232323232323232323232323303030FFFFFFFFFFFF
+ 0000FFFFFFFFFFFF313131242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424313131FFFFFFFFFFFF
+ 0000FFFFFFFFFFFF313131242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 242424242424242424242424242424242424242424242424242424242...
[truncated message content] |
|
From: remi <c2m...@c2...> - 2009-09-21 08:55:49
|
Author: remi
Date: 2009-09-21 10:55:29 +0200 (Mon, 21 Sep 2009)
New Revision: 5454
Modified:
software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Unit1.pas
Log:
* Fixed TuxBox2.0 launch
Modified: software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Unit1.pas
===================================================================
--- software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Unit1.pas 2009-09-21 08:42:54 UTC (rev 5453)
+++ software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Unit1.pas 2009-09-21 08:55:29 UTC (rev 5454)
@@ -573,7 +573,7 @@
begin
//This function handle the 'Finish' button click.
command := '"' + TuxUtils.GetTuxDroidBinariesDirectory() + '\tuxbox_launcher.exe' + '"';
- ShellExecute(HWND(nil), 'open', PChar(command), PChar('keep'), nil, SW_SHOW);
+ ShellExecute(HWND(nil), 'open', PChar(command), nil, nil, SW_SHOW);
end;
//We provide the time to tuxbox to be started faster.
|
|
From: jerome <c2m...@c2...> - 2009-09-21 08:43:05
|
Author: jerome
Date: 2009-09-21 10:42:54 +0200 (Mon, 21 Sep 2009)
New Revision: 5453
Modified:
software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Unit1.pas
Log:
* Make use of the wait function at step 4.
Modified: software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Unit1.pas
===================================================================
--- software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Unit1.pas 2009-09-21 07:45:00 UTC (rev 5452)
+++ software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Unit1.pas 2009-09-21 08:42:54 UTC (rev 5453)
@@ -395,7 +395,7 @@
//**** Step 4 on screen => Testing radio state****//
begin
- if not TuxUtils.isRadioConnected(values) then
+ if not TuxUtils.waitForTuxDroidReady(120) then
begin
invalidateButtons();
|
|
From: remi <c2m...@c2...> - 2009-09-21 07:45:20
|
Author: remi
Date: 2009-09-21 09:45:00 +0200 (Mon, 21 Sep 2009)
New Revision: 5452
Modified:
software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/TuxUtils.pas
Log:
* Added a method to wait that the Tux Droid is ready.
Modified: software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/TuxUtils.pas
===================================================================
--- software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/TuxUtils.pas 2009-09-20 23:07:36 UTC (rev 5451)
+++ software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/TuxUtils.pas 2009-09-21 07:45:00 UTC (rev 5452)
@@ -36,6 +36,7 @@
function isDongleConnected(states : TStringList) : boolean;
function isTransformerConnected(states : TStringList) : boolean;
function isSoundOn(states : TStringList) : boolean;
+ function waitForTuxDroidReady(timeout: integer): boolean;
function isRadioConnected(states : TStringList) : boolean;
function isOnActivity(states : TStringList) : boolean;
function getUserLanguage() : String;
@@ -315,6 +316,36 @@
end;
+{#### Wait for Tux Droid ready ####}
+// Timeout in seconds
+function waitForTuxDroidReady(timeout: integer): boolean;
+var
+ states : TStringList;
+ i : integer;
+begin
+ result := false;
+ states := TStringList.Create;
+ states.Add('');
+ i := timeout * 10;
+ while true do
+ begin
+ if getStates(states) then
+ begin
+ if isSoundOn(states) and isDongleConnected(states) and isRadioConnected(states) then
+ begin
+ result := true;
+ break;
+ end;
+ end;
+ i := i - 1;
+ if i <= 0 then
+ break;
+ Sleep(100);
+ application.ProcessMessages;
+ end;
+end;
+
+
{#### Return the radio connection state ####}
function isRadioConnected(states : TStringList) : boolean;
begin
|
|
From: Gwadavel <c2m...@c2...> - 2009-09-20 23:07:59
|
Author: Gwadavel
Date: 2009-09-21 01:07:36 +0200 (Mon, 21 Sep 2009)
New Revision: 5451
Modified:
software_suite_v3/software/plugin/plugin-charger/trunk/executables/plugin-charger.py
software_suite_v3/software/plugin/plugin-charger/trunk/resources/en.po
software_suite_v3/software/plugin/plugin-charger/trunk/resources/en.wiki
software_suite_v3/software/plugin/plugin-charger/trunk/resources/fr.po
software_suite_v3/software/plugin/plugin-charger/trunk/resources/help.wiki
software_suite_v3/software/plugin/plugin-charger/trunk/resources/plugin.pot
software_suite_v3/software/plugin/plugin-charger/trunk/resources/plugin.xml
Log:
Rewrite plugin - add run daemon, Tux alerts you when charger state had changed
Modified: software_suite_v3/software/plugin/plugin-charger/trunk/executables/plugin-charger.py
===================================================================
--- software_suite_v3/software/plugin/plugin-charger/trunk/executables/plugin-charger.py 2009-09-19 23:49:27 UTC (rev 5450)
+++ software_suite_v3/software/plugin/plugin-charger/trunk/executables/plugin-charger.py 2009-09-20 23:07:36 UTC (rev 5451)
@@ -28,9 +28,9 @@
"""
import os
+import time
import sys
-import locale
-import gettext
+import threading
from tuxisalive.api import *
@@ -38,110 +38,148 @@
from util.SimplePlugin.SimplePluginConfiguration import SimplePluginConfiguration
from util.SimplePlugin.SimplePlugin import SimplePlugin
+
-class Charger(object):
+
+
+
+class ChargerPlugin(SimplePlugin):
+ """This class override the SimplePlugin class to make easy
+ the plugin coding.
"""
- Manage the battery.
- """
-
- def __init__(self, plug):
- '''
- '''
- self.tgp_language = "en"
- self.tgp_ip = "127.0.0.1"
- self.tgp_port = 270
+ def __init__(self):
+ """Initialization of the class.
+ """
+ # Call the super class
+ SimplePlugin.__init__(self)
- self.plugin = plug
+ self.__tgp_ip = "127.0.0.1"
+ self.__tgp_port = 270
+ self.__daemonRun = False
+ self.__daemonRunMutex = threading.Lock()
- # Test language, ip, port
- if "tgp_language" in os.environ:
- self.tgp_language = os.environ["tgp_language"]
-
+ # Test ip, port
if "tgp_ip" in os.environ:
- self.tgp_ip = os.environ["tgp_ip"]
+ self.__tgp_ip = os.environ["tgp_ip"]
if "tgp_port" in os.environ:
- self.tgp_port = int(os.environ["tgp_port"])
+ self.__tgp_port = int(os.environ["tgp_port"])
- self.tux = TuxAPI(self.tgp_ip, self.tgp_port)
- if self.tux.server.connect(CLIENT_LEVEL_RESTRICTED, 'chargerstate', 'plugin-charger'):
- self.tux.server.disconnect()
+ self.__tux = TuxAPI(self.__tgp_ip, self.__tgp_port)
+ if self.__tux.server.connect(CLIENT_LEVEL_RESTRICTED, 'chargerstate', 'plugin-charger'):
+ self.__tux.server.disconnect()
else:
- self.tgp_port = 54321
- self.tux = TuxAPI(self.tgp_ip, self.tgp_port)
-
+ self.__tgp_port = 54321
+ self.__tux = TuxAPI(self.__tgp_ip, self.__tgp_port)
+
- def tuxConnect(self):
+ def start(self):
+ """Plugin entry point.
+ This method should be used to dispatch commands.
+ """
+ if self.getCommand() == "run":
+ self.run()
+ elif self.getCommand() == "run_daemon":
+ self.run_daemon()
+ else:
+ self.run()
+
+
+ def run(self):
+ """Plugin entry point for the "run" command.
+ """
+ self.__start()
+
+ def run_daemon(self):
+ """Plugin entry point for the "run_daemon" command.
+ """
+ if self.__tuxConnect():
+ if not self.__tux.radio.getConnected():
+ self.throwTrace("I can't find my fish. Please, make sure I'm connected.")
+ else:
+ self.__setDaemonRun(True)
+ self.__register()
+ self.__loop()
+
+ def onPluginStop(self):
+ """Callback on plugin stop.
+ """
+ self.__setDaemonRun(False)
+ self.__stop()
+
+ def onPluginEvent(self, eventName, eventValues):
+ """Callback on plugin event.
+ @param eventName: Event name.
+ @param eventValues: Event values.
+ """
+ pass
+
+ def __tuxConnect(self):
'''
Wait connected
'''
- self.tux.server.autoConnect(CLIENT_LEVEL_RESTRICTED, 'chargerstate', 'plugin-charger')
- self.tux.server.waitConnected(5.0)
- self.tux.dongle.waitConnected(5.0)
- self.tux.radio.waitConnected(5.0)
- return self.tux.access.waitAcquire(5.0, ACCESS_PRIORITY_NORMAL)
+ self.__tux.server.autoConnect(CLIENT_LEVEL_RESTRICTED, 'chargerstate', 'plugin-charger')
+ self.__tux.server.waitConnected(5.0)
+ self.__tux.dongle.waitConnected(5.0)
+ self.__tux.radio.waitConnected(5.0)
+ return self.__tux.access.waitAcquire(5.0, ACCESS_PRIORITY_NORMAL)
-
- def getState(self):
+ def __getState(self):
"""
Return Charger State
"""
- return self.tux.charger.getState()
+ return self.__tux.charger.getState()
-
- def start(self):
+ def __start(self):
"""
"""
- if self.tuxConnect():
+ if self.__tuxConnect():
- if not self.tux.radio.getConnected():
- plugin.throwTrace("I can't find my fish. Please, make sure I'm connected.")
+ if not self.__tux.radio.getConnected():
+ self.throwTrace("I can't find my fish. Please, make sure I'm connected.")
else:
- plugin.throwMessage("The charger state is {0}", self.getState())
+ self.throwMessage("charger state is {0}", self.__getState())
-
- def stop(self):
+ def __stop(self):
"""
"""
- self.tux.access.release()
- self.tux.server.disconnect()
- self.tux.destroy()
-
+ self.__tux.access.release()
+ self.__tux.server.disconnect()
+ self.__tux.destroy()
-class ChargerPlugin(SimplePlugin):
- """This class override the SimplePlugin class to make easy
- the plugin coding.
- """
- def __init__(self):
- """Initialization of the class.
+ def __register(self):
+ """Register event
"""
- # Call the super class
- SimplePlugin.__init__(self)
- self.scharger = Charger(self)
-
+ self.__tux.charger.registerEventOnStateChange(self.__change)
- def start(self):
- """Plugin entry point.
- This method should be used to dispatch commands.
+ def __change(self, *args, **kwargs):
+ """Said charger state when state change
"""
- self.run()
+ self.throwNotification("start")
+ self.throwMessage("charger state has changed")
+ self.throwMessage("the new state is {0}", self.__getState())
+ self.throwNotification("stop")
- def run(self):
- """Plugin entry point for the "run" command.
+ def __getDaemonRun(self):
"""
- self.scharger.start()
+ """
+ self.__daemonRunMutex.acquire()
+ result = self.__daemonRun
+ self.__daemonRunMutex.release()
+ return result
- def onPluginStop(self):
- """Callback on plugin stop.
+ def __setDaemonRun(self, daemonRun):
"""
- self.scharger.stop()
+ """
+ self.__daemonRunMutex.acquire()
+ self.__daemonRun = daemonRun
+ self.__daemonRunMutex.release()
- def onPluginEvent(self, eventName, eventValues):
- """Callback on plugin event.
- @param eventName: Event name.
- @param eventValues: Event values.
+ def __loop(self):
"""
- pass
+ """
+ while self.__getDaemonRun():
+ time.sleep(0.25)
if __name__ == "__main__":
plugin = ChargerPlugin()
Modified: software_suite_v3/software/plugin/plugin-charger/trunk/resources/en.po
===================================================================
--- software_suite_v3/software/plugin/plugin-charger/trunk/resources/en.po 2009-09-19 23:49:27 UTC (rev 5450)
+++ software_suite_v3/software/plugin/plugin-charger/trunk/resources/en.po 2009-09-20 23:07:36 UTC (rev 5451)
@@ -1,10 +1,10 @@
msgid "Charger State"
msgstr "Charger State"
-msgid "Says charger state"
-msgstr "Says charger state"
+msgid "Said charger state"
+msgstr "Said charger state"
-msgid "The charger state is {0}"
+msgid "charger state is {0}"
msgstr "The charger state is {0}"
msgid "CHARGING"
@@ -21,3 +21,18 @@
msgid "UNPLUGGED"
msgstr "UNPLUGGED"
+
+msgid "Said when charger state change"
+msgstr "Said when charger state change"
+
+msgid "Activate the charger notifier"
+msgstr "Activate the charger notifier"
+
+msgid "Activation"
+msgstr "Activation"
+
+msgid "charger state has changed"
+msgstr "charger state has changed"
+
+msgid "the new state is {0}"
+msgstr "the new state is {0}"
Modified: software_suite_v3/software/plugin/plugin-charger/trunk/resources/en.wiki
===================================================================
--- software_suite_v3/software/plugin/plugin-charger/trunk/resources/en.wiki 2009-09-19 23:49:27 UTC (rev 5450)
+++ software_suite_v3/software/plugin/plugin-charger/trunk/resources/en.wiki 2009-09-20 23:07:36 UTC (rev 5451)
@@ -1,2 +1,2 @@
== Synopsis ==
-Tux Droid says the charger state
+Tux Droid said the charger state
Modified: software_suite_v3/software/plugin/plugin-charger/trunk/resources/fr.po
===================================================================
--- software_suite_v3/software/plugin/plugin-charger/trunk/resources/fr.po 2009-09-19 23:49:27 UTC (rev 5450)
+++ software_suite_v3/software/plugin/plugin-charger/trunk/resources/fr.po 2009-09-20 23:07:36 UTC (rev 5451)
@@ -1,10 +1,10 @@
msgid "Charger State"
msgstr "état du chargeur"
-msgid "Says charger state"
+msgid "Said charger state"
msgstr "dit l'état du chargeur"
-msgid "The charger state is {0}"
+msgid "charger state is {0}"
msgstr "l'état du chargeur est {0}"
msgid "CHARGING"
@@ -21,3 +21,18 @@
msgid "UNPLUGGED"
msgstr "débranché"
+
+msgid "Said when charger state change"
+msgstr "Dit quand l'état du chargeur a changé"
+
+msgid "Activate the charger notifier"
+msgstr "Active le suivi d'état du chargeur"
+
+msgid "Activation"
+msgstr "Activation"
+
+msgid "charger state has changed"
+msgstr "l'état du chargeur a changé"
+
+msgid "the new state is {0}"
+msgstr "le nouvel état est {0}"
Modified: software_suite_v3/software/plugin/plugin-charger/trunk/resources/help.wiki
===================================================================
--- software_suite_v3/software/plugin/plugin-charger/trunk/resources/help.wiki 2009-09-19 23:49:27 UTC (rev 5450)
+++ software_suite_v3/software/plugin/plugin-charger/trunk/resources/help.wiki 2009-09-20 23:07:36 UTC (rev 5451)
@@ -1,2 +1,2 @@
== Synopsis ==
-Tux Droid says the charger state.
+Tux Droid said the charger state.
Modified: software_suite_v3/software/plugin/plugin-charger/trunk/resources/plugin.pot
===================================================================
--- software_suite_v3/software/plugin/plugin-charger/trunk/resources/plugin.pot 2009-09-19 23:49:27 UTC (rev 5450)
+++ software_suite_v3/software/plugin/plugin-charger/trunk/resources/plugin.pot 2009-09-20 23:07:36 UTC (rev 5451)
@@ -1,10 +1,10 @@
msgid "Charger State"
msgstr ""
-msgid "Says charger state"
+msgid "Said charger state"
msgstr ""
-msgid "The charger state is {0}"
+msgid "charger state is {0}"
msgstr ""
msgid "CHARGING"
@@ -21,3 +21,18 @@
msgid "UNPLUGGED"
msgstr ""
+
+msgid "Said when charger state change"
+msgstr ""
+
+msgid "Activate the charger notifier"
+msgstr ""
+
+msgid "Activation"
+msgstr ""
+
+msgid "charger state has changed"
+msgstr ""
+
+msgid "the new state is {0}"
+msgstr ""
Modified: software_suite_v3/software/plugin/plugin-charger/trunk/resources/plugin.xml
===================================================================
--- software_suite_v3/software/plugin/plugin-charger/trunk/resources/plugin.xml 2009-09-19 23:49:27 UTC (rev 5450)
+++ software_suite_v3/software/plugin/plugin-charger/trunk/resources/plugin.xml 2009-09-20 23:07:36 UTC (rev 5451)
@@ -6,7 +6,7 @@
<description>
<name>Charger State</name>
<ttsName>Charger State</ttsName>
- <description>Says charger state</description>
+ <description>Said charger state</description>
<author>Gwadavel</author>
<version>0.0.1</version>
<iconFile>resources/plugin.png</iconFile>
@@ -17,9 +17,24 @@
<commands>
<command
name="run"
- description="Says charger state"
+ description="Said charger state"
daemon="false" />
+ <command
+ name="run_daemon"
+ description="Said when charger state change"
+ daemon="true"
+ notifier="true"
+ expiration="1"/>
</commands>
- <tasks>
+ <tasks>
+ <task
+ name="Activation"
+ description="Activate the charger notifier"
+ command="run_daemon"
+ type="once delayed"
+ activated="false"
+ delay="00:00:05"
+ delayMask="false,false,false"
+ delayVisible="false"/>
</tasks>
</plugin>
|
|
From: Gwadavel <c2m...@c2...> - 2009-09-19 23:49:47
|
Author: Gwadavel
Date: 2009-09-20 01:49:27 +0200 (Sun, 20 Sep 2009)
New Revision: 5450
Modified:
software_suite_v3/software/plugin/plugin-battery/trunk/executables/plugin-battery.py
software_suite_v3/software/plugin/plugin-battery/trunk/resources/en.po
software_suite_v3/software/plugin/plugin-battery/trunk/resources/en.wiki
software_suite_v3/software/plugin/plugin-battery/trunk/resources/fr.po
software_suite_v3/software/plugin/plugin-battery/trunk/resources/fr.wiki
software_suite_v3/software/plugin/plugin-battery/trunk/resources/help.wiki
software_suite_v3/software/plugin/plugin-battery/trunk/resources/plugin.pot
software_suite_v3/software/plugin/plugin-battery/trunk/resources/plugin.xml
Log:
Rewrite plugin - add check, Tux alerts you when the battery state selected is met
Modified: software_suite_v3/software/plugin/plugin-battery/trunk/executables/plugin-battery.py
===================================================================
--- software_suite_v3/software/plugin/plugin-battery/trunk/executables/plugin-battery.py 2009-09-18 14:52:16 UTC (rev 5449)
+++ software_suite_v3/software/plugin/plugin-battery/trunk/executables/plugin-battery.py 2009-09-19 23:49:27 UTC (rev 5450)
@@ -40,88 +40,33 @@
from util.SimplePlugin.SimplePluginConfiguration import SimplePluginConfiguration
from util.SimplePlugin.SimplePlugin import SimplePlugin
-class Battery(object):
+
+class Configuration(SimplePluginConfiguration):
+ """This class make an access to the plugin parameters.
+ Parameters are automatically filled by the SimplePlugin class at plugin
+ starting.
"""
- Manage the battery.
- """
-
- def __init__(self, plug):
- '''
- '''
- self.tgp_language = "en"
- self.tgp_ip = "127.0.0.1"
- self.tgp_port = 270
- self.plugin = plug
-
- # Test language, ip, port
- if "tgp_language" in os.environ:
- self.tgp_language = os.environ["tgp_language"]
-
- if "tgp_ip" in os.environ:
- self.tgp_ip = os.environ["tgp_ip"]
-
- if "tgp_port" in os.environ:
- self.tgp_port = int(os.environ["tgp_port"])
-
- self.tux = TuxAPI(self.tgp_ip, self.tgp_port)
-
- if self.tux.server.connect(CLIENT_LEVEL_RESTRICTED, 'batterylevel', 'plugin-battery'):
- self.tux.server.disconnect()
- else:
- self.tgp_port = 54321
- self.tux = TuxAPI(self.tgp_ip, self.tgp_port)
-
- def tuxConnect(self):
- '''
- Wait connected
- '''
- self.tux.server.autoConnect(CLIENT_LEVEL_RESTRICTED, 'batterylevel', 'plugin-battery')
- self.tux.server.waitConnected(5.0)
- self.tux.dongle.waitConnected(5.0)
- self.tux.radio.waitConnected(5.0)
- return self.tux.access.waitAcquire(5.0, ACCESS_PRIORITY_NORMAL)
-
-
- def getLevel(self):
+ def __init__(self):
+ """Initialization of the class.
+ It's necessary to initialize the values because the type of the python
+ variables is set by value assignation. If we don't initialize the
+ parameters the simple plugin class can't check and validate the values
+ passed by the plugins server through the os environment variables.
"""
- Return Battery Level
- """
+ # Call the super class
+ SimplePluginConfiguration.__init__(self)
+ # Initialize the parameters
+ self.__checkState = ""
- return self.tux.battery.getLevel()
-
+ def getCheckState(self):
+ return self.__checkState
- def getState(self):
- """
- Return Battery State
- """
-
- return self.tux.battery.getState()
+ def setCheckState(self, checkState):
+ self.__checkState = checkState
- def start(self):
- """
- """
- if self.tuxConnect():
-
- if not self.tux.radio.getConnected():
- plugin.throwTrace("I can't find my fish. Please, make sure I'm connected.")
- else:
- plugin.throwMessage("The battery level is {0}", "%1.2f"%self.getLevel())
- plugin.throwMessage("The battery state is {0}", self.getState())
- self.stop()
-
-
- def stop(self):
- """
- """
-
- self.tux.access.release()
- self.tux.server.disconnect()
- self.tux.destroy()
-
-
class BatteryPlugin(SimplePlugin):
"""This class override the SimplePlugin class to make easy
the plugin coding.
@@ -132,26 +77,95 @@
"""
# Call the super class
SimplePlugin.__init__(self)
- self.sbattery = Battery(self)
+ self.__tgp_ip = "127.0.0.1"
+ self.__tgp_port = 270
+ # Test language, ip, port
+ if "tgp_ip" in os.environ:
+ self.__tgp_ip = os.environ["tgp_ip"]
+
+ if "tgp_port" in os.environ:
+ self.__tgp_port = int(os.environ["tgp_port"])
+
+ self.__tux = TuxAPI(self.__tgp_ip, self.__tgp_port)
+
+ if self.__tux.server.connect(CLIENT_LEVEL_RESTRICTED, 'batterylevel', 'plugin-battery'):
+ self.__tux.server.disconnect()
+ else:
+ self.__tgp_port = 54321
+ self.__tux = TuxAPI(self.__tgp_ip, self.__tgp_port)
def start(self):
"""Plugin entry point.
This method should be used to dispatch commands.
"""
- self.run()
+ if self.getCommand() == "run":
+ self.run()
+ elif self.getCommand() == "check":
+ self.check()
+ else:
+ self.run()
def run(self):
"""Plugin entry point for the "run" command.
"""
- self.sbattery.start()
+ if self.__tuxConnect():
+ if not self.__tux.radio.getConnected():
+ self.throwTrace("I can't find my fish. Please, make sure I'm connected.")
+ else:
+ self.throwMessage("The battery level is {0}", "%1.2f"%self.__getLevel())
+ self.throwMessage("The battery state is {0}", self.__getState())
+ def check(self):
+ """Plugin entry point for the "check" command.
+ """
+ if self.__tuxConnect():
+ if not self.__tux.radio.getConnected():
+ self.throwTrace("I can't find my fish. Please, make sure I'm connected.")
+ else:
+ # Check a condition ...
+ checkResult = self.configuration().getCheckState() == self.__getState()
+ # Return the check result
+ self.throwResult(checkResult)
+ if checkResult:
+ self.throwMessage("Alert the battery state is {0}", self.__getState())
+
def onPluginStop(self):
"""Callback on plugin stop.
"""
- # Stop the fake daemon loop
- self.sbattery.stop()
+ self.__stop()
+
+ def __tuxConnect(self):
+ '''
+ Wait connected
+ '''
+ self.__tux.server.autoConnect(CLIENT_LEVEL_RESTRICTED, 'batterylevel', 'plugin-battery')
+ self.__tux.server.waitConnected(5.0)
+ self.__tux.dongle.waitConnected(5.0)
+ self.__tux.radio.waitConnected(5.0)
+ return self.__tux.access.waitAcquire(5.0, ACCESS_PRIORITY_NORMAL)
+
+ def __getLevel(self):
+ """
+ Return Battery Level
+ """
+ return self.__tux.battery.getLevel()
+
+
+ def __getState(self):
+ """
+ Return Battery State
+ """
+ return self.__tux.battery.getState()
+
+ def __stop(self):
+ """
+ """
+ self.__tux.access.release()
+ self.__tux.server.disconnect()
+ self.__tux.destroy()
+
if __name__ == "__main__":
plugin = BatteryPlugin()
- plugin.boot(sys.argv[1:], SimplePluginConfiguration())
+ plugin.boot(sys.argv[1:], Configuration())
Modified: software_suite_v3/software/plugin/plugin-battery/trunk/resources/en.po
===================================================================
--- software_suite_v3/software/plugin/plugin-battery/trunk/resources/en.po 2009-09-18 14:52:16 UTC (rev 5449)
+++ software_suite_v3/software/plugin/plugin-battery/trunk/resources/en.po 2009-09-19 23:49:27 UTC (rev 5450)
@@ -1,11 +1,11 @@
-msgid "Battery Level"
-msgstr "Battery Level"
+msgid "Battery"
+msgstr "Battery"
-msgid "Says battery level"
-msgstr "Says battery level"
+msgid "Said battery state"
+msgstr "Said battery state"
-msgid "Says the battery level and it state"
-msgstr "Says the battery level and it state"
+msgid "Said the battery level and it state"
+msgstr "Said the battery level and it state"
msgid "The battery level is {0}"
msgstr "The battery level is {0}"
@@ -24,3 +24,15 @@
msgid "FULL"
msgstr "full"
+
+msgid "State to check"
+msgstr "State to check"
+
+msgid "Check battery state every x minutes"
+msgstr "Check battery state every x minutes"
+
+msgid "Alert the battery state is {0}"
+msgstr "Alert the battery state is {0}"
+
+msgid "My checker"
+msgstr "My checker"
Modified: software_suite_v3/software/plugin/plugin-battery/trunk/resources/en.wiki
===================================================================
--- software_suite_v3/software/plugin/plugin-battery/trunk/resources/en.wiki 2009-09-18 14:52:16 UTC (rev 5449)
+++ software_suite_v3/software/plugin/plugin-battery/trunk/resources/en.wiki 2009-09-19 23:49:27 UTC (rev 5450)
@@ -1,2 +1,18 @@
== Synopsis ==
-Tux Droid says the battery level and it state
+
+Tux Droid said the battery level and it state or check a selected state.
+
+
+== Live with Tux ==
+
+Tux Droid said the battery level and it state.
+
+
+== Alert ==
+
+Tux alerts you when the battery state selected is met.
+
+To use "Alerts" click the Settings icon gadget and choose state to check,
+delay and click the checkbox "Check battery state every x minutes".
+
+
Modified: software_suite_v3/software/plugin/plugin-battery/trunk/resources/fr.po
===================================================================
--- software_suite_v3/software/plugin/plugin-battery/trunk/resources/fr.po 2009-09-18 14:52:16 UTC (rev 5449)
+++ software_suite_v3/software/plugin/plugin-battery/trunk/resources/fr.po 2009-09-19 23:49:27 UTC (rev 5450)
@@ -1,11 +1,11 @@
-msgid "Battery Level"
-msgstr "Niveau de la batterie"
+msgid "Battery"
+msgstr "Batterie"
-msgid "Says battery level"
+msgid "Said battery state"
msgstr "Indique le niveau de la batterie"
-msgid "Says the battery level and it state"
-msgstr "Indique le niveau de la batterie et son etat"
+msgid "Said the battery level and it state"
+msgstr "Indique le niveau de la batterie et son état"
msgid "The battery level is {0}"
msgstr "Le niveau de batterie est de {0}"
@@ -24,3 +24,15 @@
msgid "FULL"
msgstr "pleine"
+
+msgid "State to check"
+msgstr "Etat à vérifier"
+
+msgid "Check battery state every x minutes"
+msgstr "Vérifie un état de la batterie tous les x minutes"
+
+msgid "Alert the battery state is {0}"
+msgstr "Alerte la batterie est {0}"
+
+msgid "My checker"
+msgstr "Vérification"
Modified: software_suite_v3/software/plugin/plugin-battery/trunk/resources/fr.wiki
===================================================================
--- software_suite_v3/software/plugin/plugin-battery/trunk/resources/fr.wiki 2009-09-18 14:52:16 UTC (rev 5449)
+++ software_suite_v3/software/plugin/plugin-battery/trunk/resources/fr.wiki 2009-09-19 23:49:27 UTC (rev 5450)
@@ -1,2 +1,15 @@
-==Synopsis==
-Tux Droid donne le niveau de la batterie et son etat.
+== Synopsis ==
+
+Tux Droid dit le niveau de la batterie et son état ou vérifie un état de la batterie sélectionné.
+
+== Vivre avec Tux ==
+
+Tux Droid dit le niveau de la batterie et son état.
+
+== Alertes ==
+
+Tux vous alerte quand l'état, de la batterie, sélectionné est atteint.
+
+Pour utiliser les "Alertes" cliquez sur l'icon paramètre du gadget,choisissez l'état, la fréquence, et cochez la case "Vérifie un état de la batterie tous les x minutes".
+
+
Modified: software_suite_v3/software/plugin/plugin-battery/trunk/resources/help.wiki
===================================================================
--- software_suite_v3/software/plugin/plugin-battery/trunk/resources/help.wiki 2009-09-18 14:52:16 UTC (rev 5449)
+++ software_suite_v3/software/plugin/plugin-battery/trunk/resources/help.wiki 2009-09-19 23:49:27 UTC (rev 5450)
@@ -1,2 +1,18 @@
== Synopsis ==
-Tux Droid says the battery level and it state
+
+Tux Droid said the battery level and it state or check a selected state.
+
+
+== Live with Tux ==
+
+Tux Droid said the battery level and it state.
+
+
+== Alert ==
+
+Tux alerts you when the battery state selected is met.
+
+To use "Alerts" click the Settings icon gadget and choose state to check,
+delay and click the checkbox "Check battery state every x minutes".
+
+
Modified: software_suite_v3/software/plugin/plugin-battery/trunk/resources/plugin.pot
===================================================================
--- software_suite_v3/software/plugin/plugin-battery/trunk/resources/plugin.pot 2009-09-18 14:52:16 UTC (rev 5449)
+++ software_suite_v3/software/plugin/plugin-battery/trunk/resources/plugin.pot 2009-09-19 23:49:27 UTC (rev 5450)
@@ -1,10 +1,10 @@
-msgid "Battery Level"
+msgid "Battery"
msgstr ""
-msgid "Says battery level"
+msgid "Said battery state"
msgstr ""
-msgid "Says the battery level and it state"
+msgid "Said the battery level and it state"
msgstr ""
msgid "The battery level is {0}"
@@ -24,3 +24,15 @@
msgid "FULL"
msgstr ""
+
+msgid "State to check"
+msgstr ""
+
+msgid "Check battery state every x minutes"
+msgstr ""
+
+msgid "Alert the battery state is {0}"
+msgstr ""
+
+msgid "My checker"
+msgstr ""
Modified: software_suite_v3/software/plugin/plugin-battery/trunk/resources/plugin.xml
===================================================================
--- software_suite_v3/software/plugin/plugin-battery/trunk/resources/plugin.xml 2009-09-18 14:52:16 UTC (rev 5449)
+++ software_suite_v3/software/plugin/plugin-battery/trunk/resources/plugin.xml 2009-09-19 23:49:27 UTC (rev 5450)
@@ -4,9 +4,9 @@
<executable>executables/plugin-battery.py</executable>
</interpreter>
<description>
- <name>Battery Level</name>
- <ttsName>Battery Level</ttsName>
- <description>Says battery level</description>
+ <name>Battery</name>
+ <ttsName>Battery state</ttsName>
+ <description>Said the battery level and it state</description>
<author>Gwadavel</author>
<version>0.0.1</version>
<iconFile>resources/plugin.png</iconFile>
@@ -14,12 +14,43 @@
<uuid>868a9389-01a9-4a8c-b63e-68414d154798</uuid>
<platform>all</platform>
</description>
+ <parameters>
+ <parameter
+ name="checkState"
+ description="State to check"
+ type="enum(EMPTY,LOW,HIGH,FULL)"
+ defaultValue="FULL"
+ platform="all"/>
+ </parameters>
<commands>
<command
name="run"
- description="Says the battery level and it state"
+ description="Said the battery level and it state"
daemon="false" />
+ <command
+ name="check"
+ description="Check battery state"
+ daemon="false" />
</commands>
<tasks>
+ <task
+ name="My checker"
+ description="Check battery state every x minutes"
+ command="check"
+ type="every x"
+ activated="false"
+
+ weekMask="true,true,true,true,true,true,true"
+ weekMaskType="weekpart"
+ weekMaskVisible="true"
+
+ hoursEnd="23:59:00"
+ hoursEndMask="true,true,false"
+ hoursEndVisible="true"
+
+ delay="00:05:00"
+ delayMask="true,true,true"
+ delayVisible="true"
+ />
</tasks>
</plugin>
|
|
From: gwadavel <c2m...@c2...> - 2009-09-18 14:52:32
|
Author: gwadavel
Date: 2009-09-18 16:52:16 +0200 (Fri, 18 Sep 2009)
New Revision: 5449
Modified:
software_suite_v3/software/plugin/plugin-pidgin/trunk/executables/plugin-pidgin.py
Log:
rewrite plugin-pidgin
Modified: software_suite_v3/software/plugin/plugin-pidgin/trunk/executables/plugin-pidgin.py
===================================================================
--- software_suite_v3/software/plugin/plugin-pidgin/trunk/executables/plugin-pidgin.py 2009-09-18 12:33:53 UTC (rev 5448)
+++ software_suite_v3/software/plugin/plugin-pidgin/trunk/executables/plugin-pidgin.py 2009-09-18 14:52:16 UTC (rev 5449)
@@ -45,9 +45,8 @@
self.__chat = True
self.__im = True
self.__away = False
- self.__cia = False
+ self.__cia = True
-
def getChat(self):
return self.__chat
@@ -90,17 +89,17 @@
self.theString += data
-class Pidgin(object):
+class PidginPlugin(SimplePlugin):
+ """This class override the SimplePlugin class to make easy
+ the plugin coding.
"""
- Manage Pidgin
- """
- def __init__(self, plug):
- '''
- '''
- self.plugin = plug
-
- self.conf = Configuration()
+ def __init__(self):
+ """Initialization of the class.
+ """
+ # Call the super class
+ SimplePlugin.__init__(self)
+ # Initialize some values ...
self.bus = dbus.SessionBus()
try:
@@ -110,35 +109,53 @@
self.purple = dbus.Interface(self.obj, "im.pidgin.purple.PurpleInterface")
except dbus.DBusException, msg:
- self.plugin.throwNotification("start")
- self.plugin.throwMessage("Pidgin is not launched")
- self.plugin.throwNotification("stop")
- print str(msg)
+ self.throwNotification("start")
+ self.throwMessage("Pidgin is not launched")
+ self.throwNotification("stop")
sys.exit(1)
- self.plugin.throwNotification("start")
- self.plugin.throwMessage("Pidgin is launched")
- self.plugin.throwNotification("stop")
+ self.throwNotification("start")
+ self.throwMessage("Pidgin is launched")
+ self.throwNotification("stop")
- self.all_alias = self.account()
+ self.all_alias = []
- if self.conf.getIm():
- self.bus.add_signal_receiver(self.received_im_msg,
+ def start(self):
+ """Plugin entry point.
+ This method should be used to dispatch commands.
+ """
+ if self.getCommand() == "run":
+ self.run()
+ else:
+ self.run()
+
+ def run(self):
+ """Plugin entry point for the "run" command.
+ """
+ self.__startAll()
+
+ def onPluginStop(self):
+ """Callback on plugin stop.
+ """
+ self.__stopAll()
+
+ def __busConnect(self):
+ """Connect bus signal receiver
+ """
+ if self.configuration().getIm():
+ self.bus.add_signal_receiver(self.__received_im_msg,
dbus_interface = "im.pidgin.purple.PurpleInterface",
signal_name = "ReceivedImMsg")
-
- self.bus.add_signal_receiver(self.buddy_signed_on,
+ self.bus.add_signal_receiver(self.__buddy_signed_on,
dbus_interface = "im.pidgin.purple.PurpleInterface",
signal_name = "BuddySignedOn")
-
- if self.conf.getChat():
- self.bus.add_signal_receiver(self.received_im_msg,
+ if self.configuration().getChat():
+ self.bus.add_signal_receiver(self.__received_im_msg,
dbus_interface = "im.pidgin.purple.PurpleInterface",
signal_name = "ReceivedChatMsg")
-
- def account(self):
+ def __account(self):
""" List of your alias """
self.list_alias = []
@@ -149,8 +166,7 @@
self.list_alias.append(self.alias)
return self.list_alias
-
- def stateAway(self):
+ def __stateAway(self):
""" Test status away ou available """
# i found this here http://arstechnica.com/reviews/apps/pidgin-2-0.ars/4
@@ -166,8 +182,7 @@
else:
return False
-
- def received_im_msg(self, account, name, message, conversation, flags):
+ def __received_im_msg(self, account, name, message, conversation, flags):
""" This method is execute when a message is receive """
self.buddy = self.purple.PurpleFindBuddy(account, name)
@@ -178,77 +193,57 @@
self.alias = name
if self.alias in self.all_alias:
return
- if self.conf.getCia() and self.alias[:3].upper() == "CIA":
+ if self.configuration().getCia() and self.alias[:3].upper() == "CIA":
self.text = "commit on svn"
+ self.__tux_speak(self.text)
else:
self.MessageP = MessageParser()
self.message = self.MessageP.strip(message)
self.text = "%s " %self.alias + "{0}" + " %s" %self.message
- self.tux_speak(self.text, "said")
-
- def buddy_signed_on(self, buddyid):
+ self.__tux_speak(self.text, "said")
+
+ def __buddy_signed_on(self, buddyid):
""" This method is excute when a buddy is sign on """
self.alias = self.purple.PurpleBuddyGetAlias(buddyid)
self.text = "%s " %self.alias + "{0}"
- self.tux_speak(self.text, "is online")
+ self.__tux_speak(self.text, "is online")
+ def __buddy_signed_on(self, buddyid):
+ """ This method is excute when a buddy is sign on """
+
+ self.alias = self.purple.PurpleBuddyGetAlias(buddyid)
+ self.text = "%s " %self.alias + "{0}"
- def tux_speak(self, text, say):
+ self.__tux_speak(self.text, "is online")
+
+
+ def __tux_speak(self, text, say = None):
""" Tux speak the text """
self.__text = text.encode("utf-8")
self.__say = say
- if self.conf.getAway() and self.stateAway():
+ if self.configuration().getAway() and self.__stateAway():
return
- self.plugin.throwNotification("start")
- self.plugin.throwMessage(self.__text, self.__say)
- self.plugin.throwNotification("stop")
+ self.throwNotification("start")
+ self.throwMessage(self.__text, self.__say)
+ self.throwNotification("stop")
- def start(self):
+ def __startAll(self):
"""Start Loop
"""
+ self.all_alias = self.__account()
+ self.__busConnect()
self.loop = gobject.MainLoop()
self.loop.run()
- def stop(self):
+ def __stopAll(self):
"""Stop Loop
"""
self.loop.quit()
-class PidginPlugin(SimplePlugin):
- """This class override the SimplePlugin class to make easy
- the plugin coding.
- """
- def __init__(self):
- """Initialization of the class.
- """
- # Call the super class
- SimplePlugin.__init__(self)
- # Initialize some values ...
- self.spidgin = Pidgin(self)
-
- def start(self):
- """Plugin entry point.
- This method should be used to dispatch commands.
- """
- if self.getCommand() == "run":
- self.run()
- else:
- self.run()
-
- def run(self):
- """Plugin entry point for the "run" command.
- """
- self.spidgin.start()
-
- def onPluginStop(self):
- """Callback on plugin stop.
- """
- self.spidgin.stop()
-
if __name__ == "__main__":
plugin = PidginPlugin()
plugin.boot(sys.argv[1:], Configuration())
|
|
From: remi <c2m...@c2...> - 2009-09-18 12:50:09
|
Author: remi
Date: 2009-09-18 14:18:53 +0200 (Fri, 18 Sep 2009)
New Revision: 5447
Modified:
software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit2.dfm
Log:
* Fixed splash-screen gfx
* Centered progressbar
Modified: software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit2.dfm
===================================================================
--- software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit2.dfm 2009-09-18 11:48:52 UTC (rev 5446)
+++ software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit2.dfm 2009-09-18 12:18:53 UTC (rev 5447)
@@ -1,6 +1,6 @@
object Form2: TForm2
- Left = 235
- Top = 176
+ Left = 432
+ Top = 235
AutoSize = True
BorderStyle = bsNone
Caption = 'Form2'
@@ -27,365 +27,3237 @@
Height = 104
AutoSize = True
Picture.Data = {
- 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000014A00
- 0000680806000000973AB98C000000097048597300000B1300000B1301009A9C
- 1800000A4F6943435050686F746F73686F70204943432070726F66696C650000
- 78DA9D53675453E9163DF7DEF4424B8880944B6F5215082052428B801491262A
- 2109104A8821A1D91551C1114545041BC8A088038E8E808C15512C0C8A0AD807
- E421A28E83A3888ACAFBE17BA36BD6BCF7E6CDFEB5D73EE7ACF39DB3CF07C008
- 0C9648335135800CA9421E11E083C7C4C6E1E42E40810A2470001008B3642173
- FD230100F87E3C3C2B22C007BE000178D30B0800C04D9BC0301C87FF0FEA4299
- 5C01808401C07491384B08801400407A8E42A600404601809D98265300A00400
- 60CB6362E300502D0060277FE6D300809DF8997B01005B94211501A091002013
- 65884400683B00ACCF568A450058300014664BC43900D82D00304957664800B0
- B700C0CE100BB200080C00305188852900047B0060C8232378008499001446F2
- 573CF12BAE10E72A00007899B23CB9243945815B082D710757572E1E28CE4917
- 2B14366102619A402EC27999193281340FE0F3CC0000A0911511E083F3FD78CE
- 0EAECECE368EB60E5F2DEABF06FF226262E3FEE5CFAB70400000E1747ED1FE2C
- 2FB31A803B06806DFEA225EE04685E0BA075F78B66B20F40B500A0E9DA57F370
- F87E3C3C45A190B9D9D9E5E4E4D84AC4425B61CA577DFE67C25FC057FD6CF97E
- 3CFCF7F5E0BEE22481325D814704F8E0C2CCF44CA51CCF92098462DCE68F47FC
- B70BFFFC1DD322C44962B9582A14E35112718E449A8CF332A52289429229C525
- D2FF64E2DF2CFB033EDF3500B06A3E017B912DA85D6303F64B27105874C0E2F7
- 0000F2BB6FC1D4280803806883E1CF77FFEF3FFD47A02500806649927100005E
- 44242E54CAB33FC708000044A0812AB0411BF4C1182CC0061CC105DCC10BFC60
- 36844224C4C24210420A64801C726029AC82422886CDB01D2A602FD4401D34C0
- 51688693700E2EC255B80E3D700FFA61089EC128BC81090441C808136121DA88
- 01628A58238E08179985F821C14804128B2420C9881451224B91354831528A54
- 2055481DF23D720239875C46BA913BC8003282FC86BC47319481B2513DD40CB5
- 43B9A8371A8446A20BD06474319A8F16A09BD072B41A3D8C36A1E7D0AB680FDA
- 8F3E43C730C0E8180733C46C302EC6C342B1382C099363CBB122AC0CABC61AB0
- 56AC03BB89F563CFB17704128145C0093604774220611E4148584C584ED848A8
- 201C243411DA093709038451C2272293A84BB426BA11F9C4186232318758482C
- 23D6128F132F107B8843C437241289433227B9900249B1A454D212D246D26E52
- 23E92CA99B34481A2393C9DA646BB20739942C202BC885E49DE4C3E433E41BE4
- 21F25B0A9D624071A4F853E22852CA6A4A19E510E534E5066598324155A39A52
- DDA8A15411358F5A42ADA1B652AF5187A81334759A39CD8316494BA5ADA295D3
- 1A681768F769AFE874BA11DD951E4E97D057D2CBE947E897E803F4770C0D8615
- 83C7886728199B18071867197718AF984CA619D38B19C754303731EB98E7990F
- 996F55582AB62A7C1591CA0A954A9526951B2A2F54A9AAA6AADEAA0B55F355CB
- 548FA95E537DAE46553353E3A909D496AB55AA9D50EB531B5367A93BA887AA67
- A86F543FA47E59FD890659C34CC34F43A451A0B15FE3BCC6200B6319B3782C21
- 6B0DAB86758135C426B1CDD97C762ABB98FD1DBB8B3DAAA9A13943334A3357B3
- 52F394663F07E39871F89C744E09E728A797F37E8ADE14EF29E2291BA6344CB9
- 31655C6BAA96979658AB48AB51AB47EBBD36AEEDA79DA6BD45BB59FB810E41C7
- 4A275C2747678FCE059DE753D953DDA70AA7164D3D3AF5AE2EAA6BA51BA1BB44
- 77BF6EA7EE989EBE5E809E4C6FA7DE79BDE7FA1C7D2FFD54FD6DFAA7F5470C58
- 06B30C2406DB0CCE183CC535716F3C1D2FC7DBF151435DC34043A561956197E1
- 8491B9D13CA3D5468D460F8C69C65CE324E36DC66DC6A326062621264B4DEA4D
- EE9A524DB9A629A63B4C3B4CC7CDCCCDA2CDD699359B3D31D732E79BE79BD79B
- DFB7605A785A2CB6A8B6B86549B2E45AA659EEB6BC6E855A3959A558555A5DB3
- 46AD9DAD25D6BBADBBA711A7B94E934EAB9ED667C3B0F1B6C9B6A9B719B0E5D8
- 06DBAEB66DB67D6167621767B7C5AEC3EE93BD937DBA7D8DFD3D070D87D90EAB
- 1D5A1D7E73B472143A563ADE9ACE9CEE3F7DC5F496E92F6758CF10CFD833E3B6
- 13CB29C4699D539BD347671767B97383F3888B894B82CB2E973E2E9B1BC6DDC8
- BDE44A74F5715DE17AD2F59D9BB39BC2EDA8DBAFEE36EE69EE87DC9FCC349F29
- 9E593373D0C3C843E051E5D13F0B9F95306BDFAC7E4F434F8167B5E7232F632F
- 9157ADD7B0B7A577AAF761EF173EF63E729FE33EE33C37DE32DE595FCC37C0B7
- C8B7CB4FC36F9E5F85DF437F23FF64FF7AFFD100A78025016703898141815B02
- FBF87A7C21BF8E3F3ADB65F6B2D9ED418CA0B94115418F82AD82E5C1AD2168C8
- EC90AD21F7E798CE91CE690E85507EE8D6D00761E6618BC37E0C278587855786
- 3F8E7088581AD131973577D1DC4373DF44FA449644DE9B67314F39AF2D4A352A
- 3EAA2E6A3CDA37BA34BA3FC62E6659CCD5589D58496C4B1C392E2AAE366E6CBE
- DFFCEDF387E29DE20BE37B17982FC85D7079A1CEC2F485A716A92E122C3A9640
- 4C884E3894F041102AA8168C25F21377258E0A79C21DC267222FD136D188D843
- 5C2A1E4EF2482A4D7A92EC91BC357924C533A52CE5B98427A990BC4C0D4CDD9B
- 3A9E169A76206D323D3ABD31839291907142AA214D93B667EA67E66676CBAC65
- 85B2FEC56E8BB72F1E9507C96BB390AC05592D0AB642A6E8545A28D72A07B267
- 655766BFCD89CA3996AB9E2BCDEDCCB3CADB90379CEF9FFFED12C212E192B6A5
- 864B572D1D58E6BDAC6A39B23C7179DB0AE315052B865606AC3CB88AB62A6DD5
- 4FABED5797AE7EBD267A4D6B815EC1CA82C1B5016BEB0B550AE5857DEBDCD7ED
- 5D4F582F59DFB561FA869D1B3E15898AAE14DB1797157FD828DC78E51B876FCA
- BF99DC94B4A9ABC4B964CF66D266E9E6DE2D9E5B0E96AA97E6970E6E0DD9DAB4
- 0DDF56B4EDF5F645DB2F97CD28DBBB83B643B9A3BF3CB8BC65A7C9CECD3B3F54
- A454F454FA5436EED2DDB561D7F86ED1EE1B7BBCF634ECD5DB5BBCF7FD3EC9BE
- DB5501554DD566D565FB49FBB3F73FAE89AAE9F896FB6D5DAD4E6D71EDC703D2
- 03FD07230EB6D7B9D4D51DD23D54528FD62BEB470EC71FBEFE9DEF772D0D360D
- 558D9CC6E223704479E4E9F709DFF71E0D3ADA768C7BACE107D31F761D671D2F
- 6A429AF29A469B539AFB5B625BBA4FCC3ED1D6EADE7AFC47DB1F0F9C343C5979
- 4AF354C969DAE982D39367F2CF8C9D959D7D7E2EF9DC60DBA2B67BE763CEDF6A
- 0F6FEFBA1074E1D245FF8BE73BBC3BCE5CF2B874F2B2DBE51357B8579AAF3A5F
- 6DEA74EA3CFE93D34FC7BB9CBB9AAEB95C6BB9EE7ABDB57B66F7E91B9E37CEDD
- F4BD79F116FFD6D59E393DDDBDF37A6FF7C5F7F5DF16DD7E7227FDCECBBBD977
- 27EEADBC4FBC5FF440ED41D943DD87D53F5BFEDCD8EFDC7F6AC077A0F3D1DC47
- F7068583CFFE91F58F0F43058F998FCB860D86EB9E383E3939E23F72FDE9FCA7
- 43CF64CF269E17FEA2FECBAE17162F7EF8D5EBD7CED198D1A197F29793BF6D7C
- A5FDEAC0EB19AFDBC6C2C61EBEC97833315EF456FBEDC177DC771DEFA3DF0F4F
- E47C207F28FF68F9B1F553D0A7FB93199393FF040398F3FC63332DDB0000219E
- 4944415478DAED9D099814C5D9C7DF9E999DBD0F4005058D375E08A811A22278
- 2372C8F1A878803C6A3C42D42F2AA2D1CF0B3008F136D1E453349F889A802278
- 4405448C80460524E28D7E014502ECC91EB33B335FFFABB766AA7BAAA767965D
- 6676F7FD3D4FEFF4F6515D5D3DFD9FF7AD7AABCA8846A3E4C06F2EF3CD651431
- 0CC3742E169ACBB9CE8D864628A32925C7300CD371316CFF388452FCF3E9A79F
- D2FCF9F369CD9A35140A85329D6186619836253F3F9FFAF6ED4BE79F7F3EF5EE
- DD5B6E8E89A52A94D1A6A6269A33670EBDF4D24BB104341627C3304C87C0306C
- 8623F97C3E3AEFBCF3E8C20B2FA44020200E117F4C210C9A9F0DF867F6ECD9B4
- 64C9924CE79D611826A39C73CE393479F264F9AF01A17CD95C19B576ED5A9A3A
- 756AA6F3B75B50AD64AC3BAD66F92BE3FC6418A6F370FFFDF7D3E1871F8ED585
- 104AA112F7DD771F2D5BB62CD3796B53A4204622919840AA42894F88A25C004C
- 71E73686613A3EA79C720A4D993245ACC78472E2C489B475EBD684833B421DA5
- 5320F1A92E4EAB12820881D42D723FC330ED9F64EF728F1E3D449B8D384E0AE5
- D8B16369E7CE9D99CE77AB2345508A62381CB62DD8565F576F8B89F2FBFD949B
- 1B149F5850A98B4F29966C5D324CC7A7B0B05044FF800E2D943A8144CB3E969D
- 353BA9AEB68E420D8DDA732184B979412A2E2DA6BCBC3CCAC9C9B109268B25C3
- 746CD212CAF6E87AABAE3616298E8D8D8D54BBB396AAAB6A28DC144E292D8861
- 5149219594965030188C892516164A8669DF247B87B5423966CC980E63514A4B
- 525A9010C88686105555549A6E7683EDD871E74469407FA25E7B130D3C264AAB
- 3E3668D38F44F35F33CCF5F871452545545A668925AC4BD5B26418A6E301A15C
- B0608158EF7042E91449F42CAAABABA38A1D95362BF2FACB88269D1F2553FF5C
- 79F35DA29BA619641AA0821253284B4C575C154B76C119A663D26185522792A8
- 8B84484A77FC88438866FD364A471CAA9EE8E8D8A9F0D95744174CB6C41282B8
- 67F73D282F3FCFE686B350324CC7432B94A3478F6EB742A9D649AA2289FA4855
- 24C70D239AFD5B4D9DAB6B35AC25804FBD4874F7C3D696606E90BAEED1857273
- 738558B20BCE301D1308A5ECCEDDAE84D2D9A346FD541B6E449D647D03956F2F
- 37853322F68F3BDB14C95B5B7EED0BAE255AF589B55E52564C45C545422C55AB
- D229962C9E0CD37E693742A98AA1B3078D73BB6A4D36343450C5F68AE422994A
- 63BE72CC675F130DBBCC5AF7F97DD46DCFAEB6BA4AA70B9EAC1B240B28C3643F
- 5AA13CF7DC73B346289DDD0BA510EAB63B6325E17257555453448AE45053246F
- 9129B740A014B1BCFBD1283DF5376B3D9817140D3B32BE52D7D551FDD42DEA31
- 0CC3641710CA975F7E59AC679550BA7535943D68D4EDAA50C2CDC6A770B9EB42
- 621DD6DEE42B7E41D75D5241D1FA75AD923F34E80CBB228736FD688DD119CCCD
- A182A2022196CE5E3BAA10CAEDEA27F7216798EC262DA1DC5D01E7AAF0496194
- AE343E2182E845D3D488A5C9DC6F09A61B10C929BF3AC84CCF14CECABF2AD749
- 2533A2681236FB4ACEA6EFB714D29889AFD2B6EDF1B2F2079A5D6F9F21CECA09
- E64021C57A202710B338B148375DAE732F1F86C91C5E01E70942396AD4A88C59
- 944E91943D69420D21334FB5A695581FAB6FF4E2B043BBD355971E4DA3CFEE1E
- 4FBFFA6D8A366D4DE97CEB84449934820792513850AC7FF645394D99B68ED6FD
- EBDF292709C1448B795E7EAE680492759B4EB79D6198EC0042B970E142B19E35
- 42E9EC4953535D43D595355A8BF68883887AF530E8888349048C1F71D8BE64E4
- 1E40FBECDD9DF6EB194C10B968ED47146DF86297F268149D6C9A8ABD6CDBD67E
- 16A27757FE9BD6ACFF893EFF7253CC25F70262892E91B97956AB398B25C3641F
- 5AA11C3972644684D269494224AB2AABA8A62A9E975E3D88CE3CD110CBC0BE89
- 6918C5A79311D8CBF51A91BA4F296A2EC933927CB7AFCB389895EE07444214A9
- 7A9D28BC933EFB8662BD7936FD44B4E19B28AD5A675AA2DFC42F0277BD6BB72E
- 22789DBB44324CF601A17CE59557C47A5608A51AFF889E34E5DB2B62FBFFFB1A
- 83268D492E1EB0F60C87B567BB46FD17C2AAF4CE8C367553D5CAC8573ACCF3F4
- 48A529944DE5AEFB57AD8BD23D8F47638289BA4C8419A9F19872CC4B8661324B
- 5A42D9D68D39B235DB1AB8A281766C2BA7C69035F4D9BCD93EAD05E90422295C
- E3C43DD647E34F14A95ED2E289788DA0997EF1C9EE0798E9461BBEA568CDAA94
- D21B3F2522441394752B150F847BF930CCEEC7AB31274128478C1891118B52B5
- 263180EEB6ADDBC5F671671A34EB46C5BAF2728DBB26718D1BB79A6EF1DBFA7D
- 2988A791DF878C823EEE07444DB77BC72BE2D3FD98F82ADCF14193AC013AF20A
- F2A84BD7B29855C942C930D9018472D1A245623DE34269AB9BACAAA6EA8A6AB1
- FD893B7C74E6091E82A1888F5134908CDC03F5C7EDAA50264B1B49D47E2A9674
- 80504230738201D3FDEE96302211C33099452B94C3870FDFED42A9D64FC2EDAE
- ACA8A4BA9DF562DFDAF97E2A294C2511EB43B8C72527EBF747769A16DFC216E7
- D3283DDD74EF1D8D458AC046CA4D6B325C238FD61EE364FC2D615AF569D4B422
- FDD4B5B99E92859261B20708E5E2C58BC57A5608A508260F85A86247456C60DD
- 8DAFFBD3AE53F4757377BF23DB9E532EEC96825EE47C7B5EE87E0FF5DF52B43A
- 49DDA4CBB5CEB92E4C9F7D1B15F195723422164A86C91EB4428909BF33E57AC7
- 84B2BC921AA450BEE6773FC9A5755AB8C8797A1739F29FE7286D701D7F21F9BA
- 8E723D24529EBCA5DB2DDD0346368955CCCB53DAA5346124228661320B84F2D5
- 575F15EB59219472FCC8EAAA6ADA595D2BB6BFFA889F8E38203DC110EE7769B3
- FBED1053E17A87D3BF3F23A73B1965A7E97786B652A44253F7E961092344B4EF
- 859650A231479D62821B7318263BC82AA1545D6FC450A2370E9837C34F03FBA4
- 2F18BE3DF4EE77B4620945433F7927E01039A3B08F58B48756AD12AE77C2760F
- D77EF5FA088DBFCD6AF5C6C46518DB521D319D6198CCA315CA61C386653E3CA8
- BE9ECAB759C1E6D78FF7D17517A61E1E248F314AF4EE77AA42E914399F69A11A
- B99A6076D33A0D6F7BA545F7FCD0F3117AE8054B281147999F9F6F1BAE8D6198
- CC03A17CEDB5D7C47A5608A5ACA79401E7D14894061E65D0BCE92DB0AE4CF7DB
- 579AD8FA1D11D6DFC61634100D2523D025617BB4663D45762A2141690C043CFC
- C626FA6C63540C00DCA55B99AD2187859261B203AD509E7DF6D919EBC2A836E8
- 5496575263C8AABFFBF6E500A51A6EA3E2EF3E3EF13A4E61B3ED4C2F2D10DE3A
- 5FF4EF76E25559B0692BD1A0ABAD9E4739B939A27E921B721826FB8050BEFEFA
- EB623D2B8452BADFB24147C6523E31D54F670CF0B0B03422E72B1B94E02E0BA1
- AC491E149E2051A625E9DB6368C2B5A2751B295AB94A7B969796CF79354CF7CC
- 69AE9F2C2D140FC3394A3AC33099472B9443870ECDD8306B6A3D25E6E0AE2AB7
- 7AE74C1AEEA3DB27A5E67EABF262E41F4046E940DBFE68FD268A96AF487256A2
- C8211D9F231D91DF6D6F50548604A539F7CEF0298DF4D9775131C86F59D75276
- BB19264B8150BEF1C61B623D6B84521D18A3B2BC8AC24D61EAB597412BFE1870
- 1FD547C17688CF149EBDC6D9F7239467C712723F29115F511F328A8E4A4C67FB
- 124A8BE6EB6CFA4F944E9EDCEC76070354A28405B1DBCD30D985AB50D6D4D4EC
- 52C22D45EDA183A5BAAA261678FEC494009D71BCC6D2F21239B8DF7971F7BB25
- 02E7EB7A1A19417BD7C548C52AE17AA79317C99CD72274CF5FACFAD7C2E2022A
- 282C60B79BE2235475D6FB67B293A2A2A2EC124AE00C1392EEF7D8213E9A754D
- 20EDF484DB5C36D02662E11FE7251E98AC21A7C758532D9598CC482385B7CC4F
- 491875870CBE3624AC4A084269D7924EED76E36BB7FFFEFB8B6992FBF6ED4B7B
- EFBD37AD5DBB96162C5840AB56AD6AD7A299EAD084AD718F5ED76ACFE59869B4
- 4279D65967655C28D5E0734C390BF71B0363AC79CA65F8B464DF112348FEBDC7
- DA36857F78DEFB3CB95B9C3FC6BEBD7A3D45CC2595349CC76CF83E4AC36FB55A
- C9E176179716DB82CC5BF30B2D5F1EF4DF57450873146FDBB62DE32F0FF287EF
- DB6DB7DDA60DB07FEEB9E7E8D1471FCD783E5B725FDDBA75A33163C688724F06
- 9EC7279F7C42FFFCE73FC5FFE9DCAB7CBE871D76180D1A34487BADEAEA6A718D
- 152B56D0E6CD9BDB5D59660310CABFFFFDEF623D6B84D2D9FA5D53BD33E67ECF
- BA3A40630737BF50A9885C33BEAE70BF7BC6FE0FFFB8C01A333295A1D54C97DB
- B7C7A9B66DE12D8BD2EF06D97CAD69CF36D19C37ACD6EEC292021164DE5683F5
- 1E7DF4D174E38D37D241071D94B0EF4F7FFA133DFDF4D3197D71F0AC972C5922
- CAC08D1B6EB8415896ED05DCD3A5975E4ABFFCE52FD33A6FEBD6ADF4D8638FD1
- 5B6FBD95D233C1757EF18B5FD035D75CA37DBE3AFEFAD7BF8A1FC9EFBEFB8E05
- 330DB44279E6996766542881EA7E4BAB124273C6713E7AFC861CEBA0342C39A3
- A837F94AFBC7D3DFB694A20DA9CDC6E82B3E8A8CE278434EB4762345CA57A77C
- 6D27FDAF6CA0AA5A335D9F41C565C5B6469CD674BBF1389F7DF6D9A42FD11557
- 5C41EBD7AFCFD84B73ECB1C7D2238F3C62FDB3790DD1B39388767C4734E601A2
- 01978ACDEFBDF71EDD74D34DEDE6C53EE38C33E8AEBBEE6AF1F9B0A25126C9EE
- 575AE277DE7967DAE9235619E2BA6EDDBA7653A6990642F9E69B6F8AF5AC124A
- 759231B47EA35127DC685961CB1F0C52AF3DD378C0B8AB4021F9BB8F886DF214
- 4A7568B5AE03C82838207EEE7F5214598D50BEF55184AE7AC86AED0EE605A9A8
- 381E3BD9DA6EB74D84EA2A8816FC97254283AF334DCD73C566C486C1B2DCB265
- 8BEDDC430E39447C7EF5D557E2D3992F3C1FB8F158BEFCF24BDBF7055FAA430F
- 3D54B87B7886BA73710CAE71CC31C7D0E5975F6EED78FD4E73691698FC32A299
- 56D8155CC72953A68874901F792D5D594957B4478F1E226F2A380F7995E7C94F
- 790E8E47BE700DB7B4D563DCCAE5F1C71F8FBBC0EB5E36BFB00F257F50070FB6
- 7E14BAEE1FDB74C71D778817D32D1FB024EFBFFFFEF8463CDFD54F137DAA196B
- 1565D96754EC8707545454D0C5175F4C3B76ECF0FC1E312E42895FC46C104A5B
- 4C656D5D2CF8FCB68B03346968BA43AF9982D77D28193965623DB2FD3D8AD66D
- F2C844F3797B9E4A46AED5E21D0D555064EB1B49AF93AC07D1550F87E8AD8FAD
- 79C911642E1B712094AD3D45ED65975DA61721BC9077DA5BEBE1F6415461D1DE
- 7CF3CD54505020B6239675E6CC99B18A6C801FD2C99327D35E7BC5A300BEF9E6
- 1B519788EDAA053B7BF66CFADBDFFE16FB1F5501485F6BE5AA79040FEB0B18D7
- FAE8A38F44630F5C48499F3E7D449D207E20D4BCA9D4D6D6D2C71F7F4CF3E7CF
- A7F7DF7F5F6C8365A6DE8FEE9E4F3CF144916FDD31EA33C3F7D6564D706D1ACF
- F3A2393131C3F3C0DC556E4289723DE9A493AC0DB0C41F3EC512CB64F4EC67E6
- 6799259C264F3DF594F89164ABD21B0825AA444056092550FB7E8B9E3A15D6DC
- DEBDF63068F903C1E4276BDE31E17E9759EE77B4723D45AAD66B4E4C1439FFBE
- 17C4F3B4633545776EA4960077BBFF3596D8638A5A8C16A40EA9D6DA6E378412
- AEB52045117203132B4D9F3E5D88CADD77DF9DD6B91B366C107576B0B2FEF8C7
- 3FBA8F8AD4823CC27A9B33670E4D9A3489AEBAEAAAB4F2B574E9526161BA9D37
- 77EE5C7AF8E1874514889B2BBD6CD932BAE5965B6CD6698B8512E007ACD9B29C
- 3A752A2D5FBE3CE190929292587D99E0E62EDE2229396408D1AF9789D56462CC
- D8D10AE5E9A79F9E1542E98CA9C4D06B8D0D56ECE1E27B8274F87ECE07ECD117
- 1CEEF7DE96FB1D35453252B99E3CC9E942FE1E6759EB0809FA61114523A1E4E7
- B8BCDF4FBF15A669F32CB73BB720D7B4DAF2DB2C761265076BD255289B5F1641
- B7FD6D6E9F00560A8015D2CC840913842513B3D6E0C66F37975EFD62568A002F
- EDA635D64BD90C1A6C860C19121749CD3149F328715ECB04E27BF5D557DB8F93
- 79532928B3DD4F023807F9528EB9EFBEFB84DB9FEC98DB6FBF3DF612A1DC9F78
- E209EAD7AF793FDCE10F9E71BFE657EFD8FF1F72BD553F6B326FDE3C7AF0C107
- 13BE1768DD9E356B96F50F5CFBFF196D4F432DD3DA8AF8B39428623C6AD428FA
- E9A714861CECE44028DF7EDB1A6F362B85128B3A33636D4D9DD837F6243FDD77
- 794E9AE9211ED272BF61158677681A649C635016F422FF1E968B13A9FE9222E5
- 1FA778B1C44D23EE0CD1867F47C4171F6E775B35E2C8B24B2A944E2E7F29566F
- 29EA32DF79D05AC74B8B97D7E4C9279F1456AA0082716773BD2D44E3E64FE2DB
- 67F6B7C4046E24DC4927D8075771F31A9B85E3994709AE77F61DF1FCAA403864
- 5DAC0E88EC90EBCCF3EF4C3C4F0A8EE202DB505D5C5CBF398D356BD6D8AC5278
- 64F7DC734F6A0F0A69A1BC647E95F240F5021A5D9CAE7DD2E78AE7E0FC31C0B3
- 449948907EB398E20706A1494C72B44279DA69A765855002E7884218F53C128E
- 50498141EFCCCA353FD583BDD3F3159BEE7797FE14ADDF4AE1AD4B5D2EAA1C5F
- 7A945880B0269B767A9EA363C3FF4569C4DD56885320C74F856DD88823CB0D2F
- 542C44C54B8454517BE494B8A5A3BCB888F33BEEB8E3F4E94937D9B95D119418
- 1006D5CA912F6EAA422951C51DE8AC2B3714CB2DE19ED53C49D41F00E73D9B1C
- 7FFCF136F7FBDA6BAF158D2529E152DE104A08994E285D9FABAEBA0269E31A9A
- 7B83C0B3507A03A1845704B25628D5469DDA9DB514AAB7DCD7FB2ECBA131273A
- EABB3C04CB80FBBDCF08BB5026EB91B3D7A964E4ED45D1DACD14FECF0A6A2953
- E634D282F7AD56FB82A27CCACDB3F7C4C9B850AA56D4AE08250470667F7BDAAA
- E8A8D62A50ADD17485D2D928050BD7CD92D4A1B8A00956172C4FEC976EBE53DC
- 15A1854579E5955726947FCF9E3DC56C01A87238F8E083DDF3C14299F56885F2
- D4534FCD1AA104CE469D5AD3AA444E0FDFD7478BEE087A27E0F8EEF8F71E2A06
- CB086F5EE479AABFE70821AEE12D4B85B8A6731D091A7186FC16B193D600BD10
- CAB61E00038F12EE99EB0BA5D6FF39EBEE76452801EAE5E64E8AFF0FB1811822
- 4DE776B4C2CA6B7BD551C29AC37E55B0A4ABE91468E99EABF59908D381D52951
- AA1504C81BF2AEA681F475DB95D663F42A92A1236AF95F77DD75DE56A5D30A76
- 082584CC2994499F6B9A42098167A1F4064289C63F90B542A9C6545A8D3AB5B1
- 98CAB937066940EF14EAF75477BAC472BF9BBE7F5EBB5F25B0FF78CBFADCB294
- 5A8499EEFC9561BAF999E62E8BB981DD3200468B5E28C9AE0A25D0898B6C0891
- 385DE754F2E81416F9D22711031B6A2BB4B35A40AD3B95C8B42552F49B2D5184
- 2A5D70C105096286315D6DD1016A9CA3B30147C551278C567D16CACCA315CA53
- 4E3925EB84526DD469A86FA0FA5AABBE6FEC097E9A79694E4AC3AFC530ADC9C0
- 7E63A9E9BBE72919065ABCF7398BC2DB5653B466A336DD54C63C1839BD9E366C
- B262270B8AF3DBB411472D33BC503197D0E385427CA18C9D7413CA0F3FFC907E
- FEF39FA7949E5674549C7584A9A409DC5EFAD6104AE01593A8883B7EBC215808
- AC778AD9BBEFBE1B2F4F0824DC7AAF101E87BB7FC92597D0E79F7FBE4BCF3569
- 999920FF2C94DE4028110A06B25628816A550AF7BB068D3AD69762F98C3CEAD9
- 4D238A49C4D357762485CBFF95F49AA89BF4EF713C356D5AEC9139F75D9BB747
- 69C8ED564BBD3F00B7BBA04D1B71D4F24AF585824584FEE0316BB1358412E81A
- 401C69DAC8A050E2BB150B5D726B1472082B5CEB7FFCE31F092289901B840C09
- 7475B63A60715F3C27560DF1F5D75F2758AAE93E57CF322316CA54D10A252A9F
- 754299E9C113D4BA4AF4D4918D3AD70ECFA15F9F935EA8503C61F75DBEA20344
- 2B77B42EB53EE1BA74A7CF0FD1D3CBE4BCDDB96DDE88A39657AA2F14BA11A287
- 46AB0B257036DE00E545B509540685322116D3D978E3B0F610548ED01DE73344
- B93FF0C00322D651E0AC82C0F9B048BBFECCFA1F2E3C62431D213D683547CFA1
- B2B232D120D4BF7F7F2168E855841E392C94AD4FB261EA2094EFBCF38E58F714
- CA4C2385525A957535F5E2E64AF20D5A362D4F7C26DE7D4B4AAC75F28BD23C6E
- 4A1D55D559E34EC2ED8648B6454F9CC46B47C54B90CA0B85E06578115E42F9C1
- 071F883018AFF462B85966CE16654936B8DE4027EE8EB2007FF8C31F443DA253
- 28F1421517175B1BD45E331045D46F3AEF5B01DF6FF4F3C68C7F68DD86183B81
- B5196B456F05A184F832C9D10AE5E0C183B3CEA20489FDBFEBA9A97996C69997
- 0469CCC040AB8A5CF203BCD358B0BA89A6CEB51A7102C100E517E4EDB651CCD3
- 11CA045C84D286577A6E6EB7440D0B4A354DD0D642E9158BE9A85B458B370616
- 516328D15A9DF2F5344008D1171D7DCB3D61A16C35BC2C4AD99DD45328338D6C
- D4B159951828C3CC35EA28DFB92BBFF9B85412F33EA44532A6A47BF1230DB4FA
- 6BAB753EAF3037612ADADD2194B11E23CE170A23F3B85936AA506A06D0D0A6A7
- BEA0BA861CC468A2CBA24B2CA2679A92545BBD9D2DEA325F372BF3B23B854BD7
- 908363DE79C8B5B51EDFC5F3CF3F9F366EDC182B779BF0B44028B5F78C6E9072
- 9421F5B9A5F25CDDCA8CAC61F65828BDD10AE5C9279F9C951625D059953254E8
- 77179956E5006BAA885D1539FDB5534F63C3E6088D9A6D0D80E10BF884352907
- E7DD5D93876154F3D8600ECED84608E08089D6BAE8D697249E102F155E5295AF
- 97DBC35C5451738B47D409911AE8AEEBD5A3525769A5AB9E2FE328D52E95F29E
- 84A894C6B7AD7EC61E90AE5E5B27EE52C87571A14AFCE7F3CF3F1FEB7B9D5428
- 75E5A812CBB32274CE1F00A7859FECB9BA959912688FEFC88F3FFE488CB74589
- 4806E02994D980D3AA6C6808514373A850CFAEA65579477E9273BD126FAD4C12
- 4D9D17A2051F5AD502C1FC9C9835D916C3A9B9819E218B163507D5E3458190B8
- B9C2AAB5E37C3953410AA55BB0B9EC01936CFFAEF6CC7176434C86B39ED44DDC
- 2549F67FF1C517B1166A7C376D8D23E98E1EE4EC1FAF2B13A7F59EECB93A5184
- 1683616064A46C3080B21DAD50A2C52E5B2D4AA0B32A234D569CE2EF2E34ADCA
- 9FA73F01593C71DD46238563E2A0F1E6B8DB6AAD337D06E517DAEB2677D7E461
- 28270CFD1FABF8778A940A5C49B89412A73078215FDE240330C470369648AB30
- 1DA174F6EA01A98ECB089C035FC03595BD76DC1A9BD49670C7C0C2302E5A4528
- 9D16A3B33C755521C99E6B9232FBF39FFF2C1AA4B2E5BDCE345E1625E61C029E
- 42992D24D655365A73EA98B947CBF7D2DBF2CD4F79747A22A7BF607A873CFA66
- 233DF2A66CC4F1EFB690205D3921940403EAC680C585AE7CF89482821708C2E1
- ACD3934384795969AA158434213A38C76D141E208558B56453113A195E83F39C
- 43C301B8D6105B5CDFD9EF1BE7428830C2BB53BC71ED3F8FB6AEAD88892D7C49
- BAE74857292F581A88A994658EF13111CE2348D74AD69599FC6171C45ADAD03D
- 5709CA09F7AB94193A1820DE1313CC31DE6885122F57365B9440B52AB16008B6
- 70A36555FEFACC20FDFAACD4E7D549493B5374DB614D9EF63B2B24081A8DD849
- 39C3E2EEB426D572FACD6F7E23C692CC243366CC105D63070E1CD8EA6963E0DC
- 7BEFBDB745E7DA7A246940780E467E771D6CD804A3A323F05C0277B6A5F94987
- 679E7986264E9CD8A2736FBDF5561182944DEF74A6F1B228317713F014CA6C42
- B52AB1A005BCA12E14B32A5FFEAF7C5167691D9C4A82BBB8BF9947DF36ADC9B7
- 2C6B128D3879F999B1269D65853A34088A67FE4DEB1331802D7901CBCBCBA94B
- 972E09DBF142FFFEF7BF17EB188CF6C8238F6C95FB421DDBB469D3446B242235
- 10AAD3BD7BF794CF8798C16D8688EB80982C5EBC58588798364127969835D139
- 9D02CA1BF78B715D5B0ACAAC77EFDEDA1F167CDFD1F307791B3F7E7C4ACFD559
- 66B082592453472B94981F24DB2D4AE0ECAD136A085153C86A013FFD483F3D36
- 31AFF9C0B6CA80FDDFAA7AD39A9C19B72673F383092DDD992A4394555E5E1E9D
- 77DE7922B01CBD71645034C4022DB5A8CF94EEC57EFBED4723468C881D9B0CD4
- C92D5CB8509C8B5019F4DE913D495E7CF14561B9A88C1E3D5AB87DF298175E78
- 41E4017953F3A543E615DDC930EDAA13A42DF3BCCF3EFB68CFC5E01EC8577DBD
- 159580D1C8716DE407D776960538F0C00363C7A0914C3DC66D5E9B61C386C5CE
- 49156799A969A0DFB7DCFFEDB7DFC6CE717BAE921F7EF82176DFB2CCB2ED5DCE
- 06BC2C4AE935780A65B621AD4ADBD4B6F5218A5A1E383D36214F08A67B025E17
- 482513F1D5479798D6E492B835999B17CCB835A92B333774FD8A7705AFE95677
- 9564B330EECAB9A9E43BD567D992FB4CF61CDCAEBB2BF7CD78A315CA134E38A1
- 5D5894400AA5144B4C6DDBD460599570C1974CC9A7923C977CB7A2A5B9B93C4A
- A7CEAA6D2E28CB9A74F6C2C9C6F26318C6C2CBA294B3767A0A65B6E26CD88155
- 2947163AFE403FFDEFE5796924D6B2632E79B29E3ED86809B43FC747C1DC60AC
- 174EB658930CC3B40CAD506272F5F6625102A70B2EC552BAE0134FC8A15BCF69
- 1E093D9556F0342DCDBFAC6CA419AF592EB7E1230A6A5CEE6C2D3B86612CBC2C
- CA952B578A754FA1CC669C2E785363536C6A5B70EF985C1ADD3F8D40F4A887B0
- 3597E9E75B2234614E9D68C801815C7FC278932C920CD3BED10A254212DA9345
- 09E4AF813A141B1A77C2A148EC987B47432C735A5E37E938AFDA14C7731FAFA3
- CD15D6357C01835D6E8669A7785994188314780A65B6A3BAE0D2B244AF9D6853
- BC00EE3D378F46F74BA78BA37EDA0788E484676A85452980CB9D9B9320922C94
- 0CD3FE71154AC49C39690F2FBD2A9631CB32D444D1705CE546F7CBA15BCECAA5
- E2BCC4EE8DA9DC21C4F1572FC62D4988644E3010134976B919A6FD91CCA2446C
- 6ACA42D95E708AA51590DE64B32C7B96F968F2E0208DEEEB31858452769B2B23
- F4E8F210BDB4B631BED114C9408EDF6649B2CBCD301D8B0E2994402796E1262C
- 119BF821C6F2B4DE01EA59EAA3E37FE6D7565F7EF87D983EF8BEC95CC2F61DCD
- 96A4B422592419A663A215CA010306B45BD75BC559671917CC88CD154F1BC3EA
- 791308D805520E78D1DECA8961186FD77BF5EAD562DD5328DB23522C55C194A2
- 89312CC52D7B850249CCC30CBF618AA32F4120B94E92613A2E5AA1C44C7B1DC1
- A294C85F0A2996AA68DA85342A4F90372C3E7C3E232684AA30AA02D95ECB8661
- 180B2F8B12B390024FA16CEFA8A208A450AAFB74A862E85CE47E86613A2E5AA1
- C430591DC9A274A213C75447D5618164988E899745F9E1871F8A754FA1EC88A8
- 8593CCA2D4AD330CD339E8F442C9300CE38556283152724776BD1986619C78B9
- DE18211E780A25C3304C67442B94C71E7B2C5B940CC3742ABC2CCA8F3EFA48AC
- B350320CD3696935A1641886E98C688512535EB245C9304C67C2CBA2C494BFC0
- 53281986613A232C940CC3301E6885B27FFFFEEC7A330CD3A9F072BD3FF9E413
- B1EE29940CC3309D11164A8661180FB442D9AF5F3F76BD1986E95478B9DE6BD6
- AC11EB2C940CC3745A5A4D281986613A235AA13CE9A493E8871F7E4838982D4A
- 86613A2AC92CCA7DF7DD97962F5F2ED6634279FDF5D7D32BAFBC9270300B25C3
- 301D9564423972E4487AF0C107C53A84F265F373D4CA952BE9A28B2ECA74BE19
- 8661B282175F7C510C3F69B210421934571AF0DF0D37DC402FBDF452A6F3C730
- 0C9351C68F1F4FD3A74F97FF1A46B3E959682E35F5F5F574D34D37D1E2C58B29
- 7E04BBDE0CC3744C74AEF7B871E368C68C19949393837F85001ACA815DCC6507
- 56962E5D4A73E7CEA5152B5650535353A6EF856118A64D90FA07511C3468104D
- 983081060F1E2C77C7AC44C3A1A879E65297E9CC330CC364189B2B6D684CCF52
- 7379C65C46994BA3B9E4643AC70CC3306D8CD4BA85E672B1B9D4A83BFF1F8E86
- FF70607F557F0000000049454E44AE426082}
+ 07544269746D617036930100424D369301000000000036000000280000004A01
+ 000068000000010018000000000000930100120B0000120B0000000000000000
+ 0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFFFFFFFFFAFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFAFFFFFFFFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
+ 0000FF00FFFF00FFFF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF00FFFF00FFFF00FF
+ 0000FF00FFFF00FFFF00FFFFFFFFFFFFFFBDBDBD626262252525212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121202020202020252525626262C0C0C0FFFFFFFFFFFFFF00FFFF00FFFF00FF
+ 0000FF00FFFF00FFFFFFFFF7F7F76C6C6C202020202020202020212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121202020202020202020202020202020747474FAFAFAFFFFFFFF00FFFF00FF
+ 0000FF00FFFFFFFFFFFFFF727272212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 21212121212121212121212121212121212121217A7A7AFFFFFFFFFFFFFF00FF
+ 0000FF00FFFFFFFFC6C6C6212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121212121212121212121
+ 2121212121212121212121212121212121212121212121CBCBCBFFFFFFFF00FF
+ 0000FFFFFFFFFFFF6F6F6F212121212121212121212121212121222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 22222121212121212121212121212121212121212121216F6F6FFFFFFFFFFFFF
+ 0000FFFFFFFFFFFF3B3B3B212121212121212121212121212121222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 22222121212121212121212121212121212121212121213E3E3EFFFFFFFFFFFF
+ 0000FFFFFFFFFFFF2F2F2F222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 2222222222222222222222222222222222222222222222222222222222222222
+ 22222222222222222222222222222222222222222222222F2F2FFFFFFFFFFFFF
+ 0000FFFFFFFFFFFF2F2F2F222222222222222222222222222222232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 23232222222222222222222222222222222222222222222F2F2FFFFFFFFFFFFF
+ 0000FFFFFFFFFFFF2F2F2F222222222222222222222222222222232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 23232222222222222222222222222222222222222222222F2F2FFFFFFFFFFFFF
+ 0000FFFFFFFFFFFF303030232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323303030FFFFFFFFFFFF
+ 0000FFFFFFFFFFFF303030232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323232323232323232323
+ 2323232323232323232323232323232323232323232323303030FFFFFFFFFFFF
+ 0000FFFFFFFFFFFF303030232323232323232323232323232323242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424232323232323232323232323232323232323232323303030FFFFFFFFFFFF
+ 0000FFFFFFFFFFFF313131242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424313131FFFFFFFFFFFF
+ 0000FFFFFFFFFFFF313131242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424
+ 2424242424242424242424242424242424242424242424242424242424242424...
[truncated message content] |
|
From: remi <c2m...@c2...> - 2009-09-18 12:34:35
|
Author: remi
Date: 2009-09-18 14:33:53 +0200 (Fri, 18 Sep 2009)
New Revision: 5448
Modified:
software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/TuxUtils.pas
software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.dfm
software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.pas
Log:
* Added a method to retrieve the TuxBox2 installation path
* Added start of "Quick Install Guide" in the first TuxBox2.0 run
Modified: software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/TuxUtils.pas
===================================================================
--- software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/TuxUtils.pas 2009-09-18 12:18:53 UTC (rev 5447)
+++ software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/TuxUtils.pas 2009-09-18 12:33:53 UTC (rev 5448)
@@ -25,6 +25,7 @@
procedure parseStates(aString : string; var values : TStringList);
function getResult(request : string) : boolean;
function getRegisteryLanguage(): string;
+ function getTuxBoxInstallationPath: string;
var
XmlScanner1 : TXmlScanner;
@@ -441,5 +442,23 @@
end;
end;
+function getTuxBoxInstallationPath: string;
+const
+ TUXDROID_REGISTRY_PATH = 'SOFTWARE\Tux Droid\Installation';
+begin
+ with TRegistry.Create do
+ try
+ RootKey := HKEY_LOCAL_MACHINE;
+ // From Tuxdroid setup
+ if OpenKey(TUXDROID_REGISTRY_PATH, False) then
+ begin
+ result := ReadString('Install_Dir');
+ CloseKey;
+ end;
+ finally
+ Free;
+ end;
+end;
+
end.
Modified: software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.dfm
===================================================================
--- software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.dfm 2009-09-18 12:18:53 UTC (rev 5447)
+++ software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.dfm 2009-09-18 12:33:53 UTC (rev 5448)
@@ -64,7 +64,6 @@
Width = 955
Height = 619
TabOrder = 0
- Silent = False
RegisterAsBrowser = True
RegisterAsDropTarget = False
OnDocumentComplete = EmbeddedWB1DocumentComplete
Modified: software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.pas
===================================================================
--- software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.pas 2009-09-18 12:18:53 UTC (rev 5447)
+++ software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.pas 2009-09-18 12:33:53 UTC (rev 5448)
@@ -269,6 +269,13 @@
begin
DelegateInit.Enabled := false;
+ //Showing Start Guide.
+ if getShowGuide() = 'true' then
+ begin
+ Form1.setShowGuide('false');
+ ShellExecute(HWND(nil), 'open', PChar(getTuxBoxInstallationPath + '\softwares\quick-start-guide\QuickStart.exe'), nil, nil, SW_SHOW);
+ end;
+
//Show Splash screen
if splashScreenMustBeShowed then
ShowSplashScreen;
@@ -323,13 +330,6 @@
//Start in foreground if requested
if startInForeground then
ShowHide1.Click;
-
- //Showing Start Guide.
- if getShowGuide() = 'true' then
- begin
- showMessage('showing quick start guide');
- Form1.setShowGuide('false');
- end;
end;
|
|
From: remi <c2m...@c2...> - 2009-09-18 11:49:04
|
Author: remi Date: 2009-09-18 13:48:52 +0200 (Fri, 18 Sep 2009) New Revision: 5446 Modified: software_suite_v3/software/gadget/online_only/trunk/gadget_8dfa526b-b6e6-42b5-a913-634dbf04e19a/de.po Log: * Fixed 'de' gadget name Modified: software_suite_v3/software/gadget/online_only/trunk/gadget_8dfa526b-b6e6-42b5-a913-634dbf04e19a/de.po =================================================================== --- software_suite_v3/software/gadget/online_only/trunk/gadget_8dfa526b-b6e6-42b5-a913-634dbf04e19a/de.po 2009-09-18 11:45:25 UTC (rev 5445) +++ software_suite_v3/software/gadget/online_only/trunk/gadget_8dfa526b-b6e6-42b5-a913-634dbf04e19a/de.po 2009-09-18 11:48:52 UTC (rev 5446) @@ -1,5 +1,5 @@ msgid "Webradio" -msgstr "Deutsche webradio" +msgstr "Deutsche Webradio" msgid "Webradio." msgstr "Webradio." |
|
From: remi <c2m...@c2...> - 2009-09-18 11:45:37
|
Author: remi
Date: 2009-09-18 13:45:25 +0200 (Fri, 18 Sep 2009)
New Revision: 5445
Modified:
software_suite_v3/software/plugin/plugin-webradio-de/trunk/resources/plugin.xml
Log:
* Fixed radio list in the combobox
Modified: software_suite_v3/software/plugin/plugin-webradio-de/trunk/resources/plugin.xml
===================================================================
--- software_suite_v3/software/plugin/plugin-webradio-de/trunk/resources/plugin.xml 2009-09-18 11:44:29 UTC (rev 5444)
+++ software_suite_v3/software/plugin/plugin-webradio-de/trunk/resources/plugin.xml 2009-09-18 11:45:25 UTC (rev 5445)
@@ -17,7 +17,7 @@
<parameter
name="radio"
description="Select a webradio"
- type="enum(WDR 1Live, WDR2, Radio2Day, Radio2Day, Sunshine Live, Rockland Digital, Hit Radio FFH, Antenne Bayern)"
+ type="enum(WDR 1Live, WDR2, Radio2Day, Sunshine Live, Rockland Digital, Hit Radio FFH, Antenne Bayern, N-JOY)"
defaultValue="WDR 1Live" />
<parameter
name="url"
|
|
From: jerome <c2m...@c2...> - 2009-09-18 11:44:43
|
Author: jerome
Date: 2009-09-18 13:44:29 +0200 (Fri, 18 Sep 2009)
New Revision: 5444
Modified:
software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.dfm
Log:
Modified: software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.dfm
===================================================================
--- software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.dfm 2009-09-18 11:44:21 UTC (rev 5443)
+++ software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.dfm 2009-09-18 11:44:29 UTC (rev 5444)
@@ -64,6 +64,7 @@
Width = 955
Height = 619
TabOrder = 0
+ Silent = False
RegisterAsBrowser = True
RegisterAsDropTarget = False
OnDocumentComplete = EmbeddedWB1DocumentComplete
|
|
From: jerome <c2m...@c2...> - 2009-09-18 11:44:35
|
Author: jerome
Date: 2009-09-18 13:44:21 +0200 (Fri, 18 Sep 2009)
New Revision: 5443
Modified:
software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.pas
Log:
Modified: software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.pas
===================================================================
--- software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.pas 2009-09-18 09:59:53 UTC (rev 5442)
+++ software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.pas 2009-09-18 11:44:21 UTC (rev 5443)
@@ -158,6 +158,8 @@
procedure ShowSplashScreen;
procedure HideSplashScreen;
procedure ExitApplication(windowsIsShutdown : boolean);
+ procedure setShowGuide(showable : string);
+ function getShowGuide(): string;
public
{ Darations publiques }
@@ -182,6 +184,7 @@
reduce_balloon : boolean;
ready_balloon : boolean;
MessageSys : UInt;
+ showGuide : boolean;
implementation
@@ -224,6 +227,7 @@
smartcoreReady := false;
exitingFlag := false;
connCheckerFlag := false;
+ showGuide := False;
//Get if the splash screen must be showed or not
splashScreenMustBeShowed := true;
@@ -252,7 +256,7 @@
end
else
begin
- properties.CommaText := 'show_balloon=true, show_ready=true';
+ properties.CommaText := 'show_balloon=true, show_ready=true, show_guide=true';
end;
language := TuxUtils.getRegisteryLanguage();
@@ -319,6 +323,13 @@
//Start in foreground if requested
if startInForeground then
ShowHide1.Click;
+
+ //Showing Start Guide.
+ if getShowGuide() = 'true' then
+ begin
+ showMessage('showing quick start guide');
+ Form1.setShowGuide('false');
+ end;
end;
@@ -357,7 +368,7 @@
procedure TForm1.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
inherited;
- ExitApplication(false);
+ ExitApplication(true);
Message.Result := 1;
end;
@@ -821,6 +832,20 @@
end;
+procedure TForm1.setShowGuide(showable : string);
+begin
+ properties.Values['show_guide'] := showable;
+ saveProperties;
+end;
+
+
+function TForm1.getShowGuide() : string ;
+begin
+ result := properties.Values['show_guide'];
+end;
+
+
+
{#### Saving properties to the conf file ####}
procedure TForm1.saveProperties();
begin
|
|
From: remi <c2m...@c2...> - 2009-09-18 10:00:03
|
Author: remi
Date: 2009-09-18 11:59:53 +0200 (Fri, 18 Sep 2009)
New Revision: 5442
Modified:
software_suite_v3/software/plugin/plugin-webradio-de/trunk/executables/WebRadioList.py
software_suite_v3/software/plugin/plugin-webradio-de/trunk/resources/plugin.xml
Log:
* Removed 2 radio with "FM" in order to fixes TTS problems with german voices
Modified: software_suite_v3/software/plugin/plugin-webradio-de/trunk/executables/WebRadioList.py
===================================================================
--- software_suite_v3/software/plugin/plugin-webradio-de/trunk/executables/WebRadioList.py 2009-09-18 09:55:00 UTC (rev 5441)
+++ software_suite_v3/software/plugin/plugin-webradio-de/trunk/executables/WebRadioList.py 2009-09-18 09:59:53 UTC (rev 5442)
@@ -8,6 +8,4 @@
["Hit Radio FFH", "http://edge.live.mp3.mdn.newmedia.nacamar.net/radioffh/livestream.mp3.m3u"],
["Antenne Bayern", "http://www.antenne.de/webradio/antenne.m3u"],
["N-JOY", "http://ndr.ic.llnwd.net/stream/ndr_n-joy_hi_mp3"],
- ["Jam FM", "http://stream.telvi.de:8000/jamfm1"],
- ["You FM", "http://metafiles.gl-systemhaus.de/hr/youfm_2.m3u"],
]
Modified: software_suite_v3/software/plugin/plugin-webradio-de/trunk/resources/plugin.xml
===================================================================
--- software_suite_v3/software/plugin/plugin-webradio-de/trunk/resources/plugin.xml 2009-09-18 09:55:00 UTC (rev 5441)
+++ software_suite_v3/software/plugin/plugin-webradio-de/trunk/resources/plugin.xml 2009-09-18 09:59:53 UTC (rev 5442)
@@ -17,7 +17,7 @@
<parameter
name="radio"
description="Select a webradio"
- type="enum(WDR 1Live, WDR2, Radio2Day, Radio2Day, Sunshine Live, Rockland Digital, Hit Radio FFH, Antenne Bayern, Jam FM, You FM)"
+ type="enum(WDR 1Live, WDR2, Radio2Day, Radio2Day, Sunshine Live, Rockland Digital, Hit Radio FFH, Antenne Bayern)"
defaultValue="WDR 1Live" />
<parameter
name="url"
|
|
From: remi <c2m...@c2...> - 2009-09-18 09:55:14
|
Author: remi Date: 2009-09-18 11:55:00 +0200 (Fri, 18 Sep 2009) New Revision: 5441 Modified: software_suite_v3/software/plugin/plugin-feed/trunk/plugin-feed/resources/de.po Log: * Fixed error in the de.po file Modified: software_suite_v3/software/plugin/plugin-feed/trunk/plugin-feed/resources/de.po =================================================================== --- software_suite_v3/software/plugin/plugin-feed/trunk/plugin-feed/resources/de.po 2009-09-18 09:08:27 UTC (rev 5440) +++ software_suite_v3/software/plugin/plugin-feed/trunk/plugin-feed/resources/de.po 2009-09-18 09:55:00 UTC (rev 5441) @@ -29,7 +29,7 @@ msgid "Options" msgstr "Optionen" -msgid "Sorry, I could not connect to the mail server. Please check your internet connection or try again later." +msgid "Sorry, I could not connect to the rss server. Please check your internet connection or try again later." msgstr "Sorry, Verbindung zum RSS-Server nicht möglich. Überprüfen Sie Ihre Internetverbindung oder versuchen Sie es später." msgid "Sorry, I couldn't find the feed url. Please check your rss configuration." |
|
From: remi <c2m...@c2...> - 2009-09-18 09:08:38
|
Author: remi Date: 2009-09-18 11:08:27 +0200 (Fri, 18 Sep 2009) New Revision: 5440 Modified: software_suite_v3/smart-core/smart-server/trunk/TDSAutoUpdater.py Log: * Updated the version name for updates from kysoh ftp for beta-tests. Modified: software_suite_v3/smart-core/smart-server/trunk/TDSAutoUpdater.py =================================================================== --- software_suite_v3/smart-core/smart-server/trunk/TDSAutoUpdater.py 2009-09-18 09:05:18 UTC (rev 5439) +++ software_suite_v3/smart-core/smart-server/trunk/TDSAutoUpdater.py 2009-09-18 09:08:27 UTC (rev 5440) @@ -23,7 +23,7 @@ from util.misc import URLTools from util.logger import * -DIST_STATE = "online" +DIST_STATE = "beta-test" PART_CONF_SRC_URL = 0 PART_CONF_DEST = 1 |
|
From: remi <c2m...@c2...> - 2009-09-18 09:05:31
|
Author: remi
Date: 2009-09-18 11:05:18 +0200 (Fri, 18 Sep 2009)
New Revision: 5439
Modified:
software_suite_v3/smart-core/smart-server/trunk/installer.nsi
software_suite_v3/smart-core/smart-server/trunk/version.py
Log:
* Updated version to 0.4.2-b2
Modified: software_suite_v3/smart-core/smart-server/trunk/installer.nsi
===================================================================
--- software_suite_v3/smart-core/smart-server/trunk/installer.nsi 2009-09-18 08:45:07 UTC (rev 5438)
+++ software_suite_v3/smart-core/smart-server/trunk/installer.nsi 2009-09-18 09:05:18 UTC (rev 5439)
@@ -4,7 +4,7 @@
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "Smart Server"
-!define PRODUCT_VERSION "0.4.2-b1"
+!define PRODUCT_VERSION "0.4.2-b2"
; Output names
!define FINAL_INSTALLER_EXE "SmartServerInstaller_${PRODUCT_VERSION}.exe"
Modified: software_suite_v3/smart-core/smart-server/trunk/version.py
===================================================================
--- software_suite_v3/smart-core/smart-server/trunk/version.py 2009-09-18 08:45:07 UTC (rev 5438)
+++ software_suite_v3/smart-core/smart-server/trunk/version.py 2009-09-18 09:05:18 UTC (rev 5439)
@@ -7,7 +7,7 @@
# Distributed under the terms of the GNU General Public License
# http://www.gnu.org/copyleft/gpl.html
-version = '0.4.2-b1'
+version = '0.4.2-b2'
author = "Remi Jocaille (rem...@c2...)"
licence = "GPL"
date = "2009"
|
|
From: ks156 <c2m...@c2...> - 2009-09-18 08:45:20
|
Author: ks156
Date: 2009-09-18 10:45:07 +0200 (Fri, 18 Sep 2009)
New Revision: 5438
Modified:
software_suite_v3/smart-core/smart-server/branches/user_mode/resources/05_user_configurations/00_resourceUsers.py
Log:
* Fixed a bug with the user conf file
Modified: software_suite_v3/smart-core/smart-server/branches/user_mode/resources/05_user_configurations/00_resourceUsers.py
===================================================================
--- software_suite_v3/smart-core/smart-server/branches/user_mode/resources/05_user_configurations/00_resourceUsers.py 2009-09-18 08:42:41 UTC (rev 5437)
+++ software_suite_v3/smart-core/smart-server/branches/user_mode/resources/05_user_configurations/00_resourceUsers.py 2009-09-18 08:45:07 UTC (rev 5438)
@@ -75,25 +75,28 @@
# if the user configuration file doesn't exists, copy the master
# configuration located in /etc/tuxdroid/users_conf/default/user.conf
if systemPaths.isUser() and os.name != 'nt':
- try:
- f_sys = open("/etc/tuxdroid/users_conf/default/user.conf", "r")
- dict = eval(f_sys.read())
- f_sys.close()
- lang_sys = dict['language1']
- except:
- lang_sys = None
- try:
- path = os.path.join(systemPaths.getUserConfPath(), "default", "user.conf")
- f_user = open(path, "r")
- dict = eval(f_user.read())
- f_user.close()
- lang_user = dict['language1']
- except:
- lang_user = None
-
- if lang_user != lang_sys and lang_user != None and lang_sys != None:
+ if not os.path.isfile(userConfFile):
os.system("cp /etc/tuxdroid/users_conf/default/user.conf %s"%userConfFile)
+ else:
+ try:
+ f_sys = open("/etc/tuxdroid/users_conf/default/user.conf", "r")
+ dict = eval(f_sys.read())
+ f_sys.close()
+ lang_sys = dict['language1']
+ except:
+ lang_sys = None
+ try:
+ path = os.path.join(systemPaths.getUserConfPath(), "default", "user.conf")
+ f_user = open(path, "r")
+ dict = eval(f_user.read())
+ f_user.close()
+ lang_user = dict['language1']
+ except:
+ lang_user = None
+ if lang_user != lang_sys and lang_user != None and lang_sys != None:
+ os.system("cp /etc/tuxdroid/users_conf/default/user.conf %s"%userConfFile)
+
if not os.path.isfile(userConfFile):
# Create default configuration
splitedLC = TUXDROID_LANGUAGE.split("_")
|
|
From: remi <c2m...@c2...> - 2009-09-18 08:43:01
|
Author: remi
Date: 2009-09-18 10:42:41 +0200 (Fri, 18 Sep 2009)
New Revision: 5437
Modified:
software_suite_v3/software/plugin/plugin-webradio-de/trunk/resources/plugin.xml
Log:
* fixed radios list for configuration combobox
Modified: software_suite_v3/software/plugin/plugin-webradio-de/trunk/resources/plugin.xml
===================================================================
--- software_suite_v3/software/plugin/plugin-webradio-de/trunk/resources/plugin.xml 2009-09-18 08:39:46 UTC (rev 5436)
+++ software_suite_v3/software/plugin/plugin-webradio-de/trunk/resources/plugin.xml 2009-09-18 08:42:41 UTC (rev 5437)
@@ -17,7 +17,7 @@
<parameter
name="radio"
description="Select a webradio"
- type="enum(WDR 1Live, WDR2, Radio2Day, Radio2Day, Sunshine Live, Rockland Digital, Hit Radio FFH, Antenne Bayern, Radio Heavy Metal, Hurricane Rock)"
+ type="enum(WDR 1Live, WDR2, Radio2Day, Radio2Day, Sunshine Live, Rockland Digital, Hit Radio FFH, Antenne Bayern, Jam FM, You FM)"
defaultValue="WDR 1Live" />
<parameter
name="url"
|
|
From: remi <c2m...@c2...> - 2009-09-18 08:40:02
|
Author: remi Date: 2009-09-18 10:39:46 +0200 (Fri, 18 Sep 2009) New Revision: 5436 Modified: software_suite_v3/software/gadget/online_only/trunk/gadget_8dfa526b-b6e6-42b5-a913-634dbf04e19a/de.po software_suite_v3/software/gadget/online_only/trunk/gadget_8dfa526b-b6e6-42b5-a913-634dbf04e19a/nl.po Log: * Fixed gadget name for 'de' and 'nl' Modified: software_suite_v3/software/gadget/online_only/trunk/gadget_8dfa526b-b6e6-42b5-a913-634dbf04e19a/de.po =================================================================== --- software_suite_v3/software/gadget/online_only/trunk/gadget_8dfa526b-b6e6-42b5-a913-634dbf04e19a/de.po 2009-09-17 16:05:25 UTC (rev 5435) +++ software_suite_v3/software/gadget/online_only/trunk/gadget_8dfa526b-b6e6-42b5-a913-634dbf04e19a/de.po 2009-09-18 08:39:46 UTC (rev 5436) @@ -1,5 +1,5 @@ msgid "Webradio" -msgstr "Deutsch webradio" +msgstr "Deutsche webradio" msgid "Webradio." msgstr "Webradio." Modified: software_suite_v3/software/gadget/online_only/trunk/gadget_8dfa526b-b6e6-42b5-a913-634dbf04e19a/nl.po =================================================================== --- software_suite_v3/software/gadget/online_only/trunk/gadget_8dfa526b-b6e6-42b5-a913-634dbf04e19a/nl.po 2009-09-17 16:05:25 UTC (rev 5435) +++ software_suite_v3/software/gadget/online_only/trunk/gadget_8dfa526b-b6e6-42b5-a913-634dbf04e19a/nl.po 2009-09-18 08:39:46 UTC (rev 5436) @@ -1,5 +1,5 @@ msgid "Webradio" -msgstr "Duits webradio" +msgstr "Duitse webradio" msgid "Webradio." msgstr "Webradio." |
|
From: gwadavel <c2m...@c2...> - 2009-09-17 16:05:59
|
Author: gwadavel Date: 2009-09-17 18:05:25 +0200 (Thu, 17 Sep 2009) New Revision: 5435 Added: software_suite_v3/software/plugin/plugin-pidgin/ software_suite_v3/software/plugin/plugin-pidgin/branches/ software_suite_v3/software/plugin/plugin-pidgin/tags/ software_suite_v3/software/plugin/plugin-pidgin/trunk/ software_suite_v3/software/plugin/plugin-pidgin/trunk/LICENSE software_suite_v3/software/plugin/plugin-pidgin/trunk/build.py software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/ software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/PluginPackager.py software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/__init__.py software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/util/ software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/util/__init__.py software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/util/misc/ software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/util/misc/DirectoriesAndFilesTools.py software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/util/misc/__init__.py software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/util/misc/version.py software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/version.py software_suite_v3/software/plugin/plugin-pidgin/trunk/executables/ software_suite_v3/software/plugin/plugin-pidgin/trunk/executables/plugin-pidgin.py software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/ software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/en.po software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/en.wiki software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/fr.po software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/fr.wiki software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/help.wiki software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/pidgin.png software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/plugin.pot software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/plugin.xml Log: plugin-pidgin, said messages from chat clien Pidig. Many options, said only IM messages or Chat messages, speak only if your status is away, don't say svn commit on channel #tuxdroid. - SMART-CORE SERVER MUST BE IN USER MODE - Todo help.wiki, option : speak only if somebody said your name, smiley = play attitune Added: software_suite_v3/software/plugin/plugin-pidgin/trunk/LICENSE =================================================================== --- software_suite_v3/software/plugin/plugin-pidgin/trunk/LICENSE (rev 0) +++ software_suite_v3/software/plugin/plugin-pidgin/trunk/LICENSE 2009-09-17 16:05:25 UTC (rev 5435) @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. Added: software_suite_v3/software/plugin/plugin-pidgin/trunk/build.py =================================================================== --- software_suite_v3/software/plugin/plugin-pidgin/trunk/build.py (rev 0) +++ software_suite_v3/software/plugin/plugin-pidgin/trunk/build.py 2009-09-17 16:05:25 UTC (rev 5435) @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- + +# Copyleft (C) 2009 C2ME Sa +# Remi Jocaille <rem...@c2...> +# Distributed under the terms of the GNU General Public License +# http://www.gnu.org/copyleft/gpl.html + +from builder.PluginPackager import PluginPackager + +if __name__ == "__main__": + PluginPackager().createScp("plugin-pidgin.scp") Added: software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/PluginPackager.py =================================================================== --- software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/PluginPackager.py (rev 0) +++ software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/PluginPackager.py 2009-09-17 16:05:25 UTC (rev 5435) @@ -0,0 +1,78 @@ +# -*- coding: utf-8 -*- + +import version +__author__ = version.author +__date__ = version.date +__version__ = version.version +__licence__ = version.licence +del version + +# Copyleft (C) 2009 C2ME Sa +# Remi Jocaille <rem...@c2...> +# Distributed under the terms of the GNU General Public License +# http://www.gnu.org/copyleft/gpl.html + +import os +from zipfile import * + +from util.misc.DirectoriesAndFilesTools import * + +# ------------------------------------------------------------------------------ +# Class to create a SCP file from the main directory of a python plugin project. +# ------------------------------------------------------------------------------ +class PluginPackager(object): + """Class to create a SCP file from the main directory of a python plugin + project. + """ + + # -------------------------------------------------------------------------- + # Create a scp file. + # -------------------------------------------------------------------------- + def createScp(self, scpFileName): + """Create a scp file. + @param scpFileName: Smart-Core Plugin file name. + @return: The success of the file creation. + """ + self.__sourcePath = os.path.realpath("") + if not os.path.isdir(self.__sourcePath): + return False + if not os.path.isdir(os.path.join(self.__sourcePath, "executables")): + return False + if not os.path.isdir(os.path.join(self.__sourcePath, "resources")): + return False + # Get some paths + SRC_EXECUTABLES_PATH = os.path.join(self.__sourcePath, "executables") + SRC_RESOURCES_PATH = os.path.join(self.__sourcePath, "resources") + TMP_BUILD_PATH = os.path.join(self.__sourcePath, "tmp") + DEST_EXECUTABLES_PATH = os.path.join(TMP_BUILD_PATH, "executables") + DEST_RESOURCES_PATH = os.path.join(TMP_BUILD_PATH, "resources") + DEST_SCP_FILENAME = os.path.join(self.__sourcePath, scpFileName) + # Create the temporary build path + MKDirsF(TMP_BUILD_PATH) + # Copy "executables" directory + CPDir(SRC_EXECUTABLES_PATH, DEST_EXECUTABLES_PATH) + # Copy "resources" directory + CPDir(SRC_RESOURCES_PATH, DEST_RESOURCES_PATH) + # Filtering the content of temporary path + RMWithFilters(TMP_BUILD_PATH, filters = ['.svn', '.pyc']) + # Create a zip file + directory = TMP_BUILD_PATH + last_cwd = os.getcwd() + os.chdir(TMP_BUILD_PATH) + zf = ZipFile(DEST_SCP_FILENAME, 'w', compression = ZIP_DEFLATED) + def walker(zip, directory, files, root = directory): + for file in files: + file = os.path.join(directory, file) + name = file[len(TMP_BUILD_PATH) + 1:] + if os.path.isfile(file): + zip.write(file, name, ZIP_DEFLATED) + elif os.path.isdir(file): + file = os.path.join(file, "") + name = os.path.join(name, "") + zip.writestr(name, name) + os.path.walk(TMP_BUILD_PATH, walker, zf) + zf.close() + os.chdir(os.path.abspath(last_cwd)) + # Remove the temporary directory + RMDirs(TMP_BUILD_PATH) + return True Added: software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/__init__.py =================================================================== Added: software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/util/__init__.py =================================================================== Added: software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/util/misc/DirectoriesAndFilesTools.py =================================================================== --- software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/util/misc/DirectoriesAndFilesTools.py (rev 0) +++ software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/util/misc/DirectoriesAndFilesTools.py 2009-09-17 16:05:25 UTC (rev 5435) @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- + +import version +__author__ = version.author +__date__ = version.date +__version__ = version.version +__licence__ = version.licence +del version + +# Copyleft (C) 2008 Acness World +# Remi Jocaille <rem...@c2...> +# Distributed under the terms of the GNU General Public License +# http://www.gnu.org/copyleft/gpl.html + +import os +import shutil + +if os.name == 'nt': + import win32con + import win32file + +# ============================================================================== +# Public functions +# ============================================================================== + +# ------------------------------------------------------------------------------ +# Force to create a directories tree if not exists. +# ------------------------------------------------------------------------------ +def MKDirs(path): + """Force to create a directories tree if not exists. + @param path: Directory path. + """ + if not os.path.isdir(path): + try: + os.makedirs(path) + except: + pass + +# ------------------------------------------------------------------------------ +# Force to create a directories tree after having deleted the old one. +# ------------------------------------------------------------------------------ +def MKDirsF(path): + """Force to create a directories tree after having deleted the old one. + @param path: Directory path. + """ + if os.path.isdir(path): + RMDirs(path) + os.makedirs(path) + +# ------------------------------------------------------------------------------ +# Remove directories and files recursively. +# ------------------------------------------------------------------------------ +def RMDirs(path): + """Remove directories and files recursively. + @param path: Path of the base directory. + """ + if not os.path.isdir(path): + return + for root, dirs, files in os.walk(path, topdown = False): + for d in dirs: + try: + os.removedirs(os.path.join(root, d)) + except: + pass + for f in files: + try: + if os.name == 'nt': + win32file.SetFileAttributesW(os.path.join(root, f), + win32con.FILE_ATTRIBUTE_NORMAL) + os.remove(os.path.join(root, f)) + except: + pass + if os.path.isdir(path): + try: + os.removedirs(path) + except: + pass + +# ------------------------------------------------------------------------------ +# Remove directories and files recursively with filters. +# ------------------------------------------------------------------------------ +def RMWithFilters(path, filters = ['.pyc', '.pyo']): + """Remove directories and files recursively with filters. + @param path: Path of the base directory. + @param filters: Filters as list. + """ + def checkFilter(name): + for filter in filters: + if name.lower().find(filter.lower()) == (len(name) - len(filter)): + return True + return False + + if not os.path.isdir(path): + return + + for root, dirs, files in os.walk(path, topdown = False): + for d in dirs: + if checkFilter(os.path.join(root, d)): + try: + RMDirs(os.path.join(root, d)) + except: + pass + for f in files: + if checkFilter(os.path.join(root, f)): + try: + if os.name == 'nt': + win32file.SetFileAttributesW(os.path.join(root, f), + win32con.FILE_ATTRIBUTE_NORMAL) + os.remove(os.path.join(root, f)) + except: + pass + +# ------------------------------------------------------------------------------ +# Remove a file. +# ------------------------------------------------------------------------------ +def RMFile(path): + """Remove a file. + @param path: File path. + """ + if os.path.isfile(path): + try: + if os.name == 'nt': + win32file.SetFileAttributesW(path, + win32con.FILE_ATTRIBUTE_NORMAL) + os.remove(path) + except: + pass + +# ------------------------------------------------------------------------------ +# Copy a directories tree to another directory. +# ------------------------------------------------------------------------------ +def CPDir(src, dest): + """Copy a directories tree to another directory. + @param src: Source path. + @param dest: Destination path. + """ + if not os.path.isdir(src): + return + if os.path.isdir(dest): + RMDirs(dest) + shutil.copytree(src, dest) + +# ------------------------------------------------------------------------------ +# Retrieve the OS temporary directory. +# ------------------------------------------------------------------------------ +def GetOSTMPDir(): + """Retrieve the OS temporary directory. + @return: The OS temporary directory. + """ + result = None + # On Windows + if os.name == 'nt': + result = os.environ.get('tmp') + if result == None: + result = os.environ.get('temp') + if result == None: + result = "c:\\windows\\temp" + # On linux + else: + result = "/tmp" + return result Added: software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/util/misc/__init__.py =================================================================== Added: software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/util/misc/version.py =================================================================== --- software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/util/misc/version.py (rev 0) +++ software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/util/misc/version.py 2009-09-17 16:05:25 UTC (rev 5435) @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +"""Version data for tuxisalive.lib.Util""" + +__author__ = "Remi Jocaille (rem...@c2...)" + +# Copyleft (C) 2008 C2ME Sa +# Remi Jocaille <rem...@c2...> +# Distributed under the terms of the GNU General Public License +# http://www.gnu.org/copyleft/gpl.html + +name = 'util.misc' +version = '0.0.1' +author = "Remi Jocaille (rem...@c2...)" + +description = "Utilities libraries." + +licence = "GPL" +date = "December 2008" Added: software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/version.py =================================================================== --- software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/version.py (rev 0) +++ software_suite_v3/software/plugin/plugin-pidgin/trunk/builder/version.py 2009-09-17 16:05:25 UTC (rev 5435) @@ -0,0 +1,9 @@ +# Copyleft (C) 2009 C2ME Sa +# Remi Jocaille <rem...@c2...> +# Distributed under the terms of the GNU General Public License +# http://www.gnu.org/copyleft/gpl.html + +version = '0.0.1' +author = "Remi Jocaille (rem...@c2...)" +licence = "GPL" +date = "2009" Added: software_suite_v3/software/plugin/plugin-pidgin/trunk/executables/plugin-pidgin.py =================================================================== --- software_suite_v3/software/plugin/plugin-pidgin/trunk/executables/plugin-pidgin.py (rev 0) +++ software_suite_v3/software/plugin/plugin-pidgin/trunk/executables/plugin-pidgin.py 2009-09-17 16:05:25 UTC (rev 5435) @@ -0,0 +1,254 @@ +# -*- coding: utf-8 -*- + +# Copyright (C) 2009 Kysoh Sa +# Remi Jocaille <rem...@c2...> +# Distributed under the terms of the GNU General Public License +# http://www.gnu.org/copyleft/gpl.html + +__author__ = "Gwadavel" +__appname__ = "Plugin Pidgin" +__version__ = "0.0.1" +__date__ = "2009/09/07" +__license__ = "GPL" + +import sys +import dbus +import dbus.glib +import dbus.decorators +import gobject +import os +import re +import time +import sgmllib + +sys.path.append(os.environ['TUXDROID_SERVER_PYTHON_UTIL']) + +from util.SimplePlugin.SimplePluginConfiguration import SimplePluginConfiguration +from util.SimplePlugin.SimplePlugin import SimplePlugin + +class Configuration(SimplePluginConfiguration): + """This class make an access to the plugin parameters. + Parameters are automatically filled by the SimplePlugin class at plugin + starting. + """ + + def __init__(self): + """Initialization of the class. + It's necessary to initialize the values because the type of the python + variables is set by value assignation. If we don't initialize the + parameters the simple plugin class can't check and validate the values + passed by the plugins server through the os environment variables. + """ + # Call the super class + SimplePluginConfiguration.__init__(self) + # Initialize the parameters + self.__chat = True + self.__im = True + self.__away = False + self.__cia = False + + + def getChat(self): + return self.__chat + + def setChat(self, chat): + self.__chat = chat + + def getIm(self): + return self.__im + + def setIm(self, im): + self.__im = im + + def getAway(self): + return self.__away + + def setAway(self, away): + self.__away = away + + def getCia(self): + return self.__cia + + def setCia(self, cia): + self.__cia = cia + + +class MessageParser(sgmllib.SGMLParser): + """I found this snippets in this website : + http://quickies.seriot.ch/index.php""" + + def __init__(self): + sgmllib.SGMLParser.__init__(self) + + def strip(self, some_html): + self.theString = "" + self.feed(some_html) + self.close() + return self.theString + + def handle_data(self, data): + self.theString += data + + +class Pidgin(object): + """ + Manage Pidgin + """ + + def __init__(self, plug): + ''' + ''' + self.plugin = plug + + self.conf = Configuration() + self.bus = dbus.SessionBus() + + try: + self.obj = self.bus.get_object("im.pidgin.purple.PurpleService", + "/im/pidgin/purple/PurpleObject") + + self.purple = dbus.Interface(self.obj, "im.pidgin.purple.PurpleInterface") + + except dbus.DBusException, msg: + self.plugin.throwNotification("start") + self.plugin.throwMessage("Pidgin is not launched") + self.plugin.throwNotification("stop") + print str(msg) + sys.exit(1) + + self.plugin.throwNotification("start") + self.plugin.throwMessage("Pidgin is launched") + self.plugin.throwNotification("stop") + + self.all_alias = self.account() + + if self.conf.getIm(): + self.bus.add_signal_receiver(self.received_im_msg, + dbus_interface = "im.pidgin.purple.PurpleInterface", + signal_name = "ReceivedImMsg") + + self.bus.add_signal_receiver(self.buddy_signed_on, + dbus_interface = "im.pidgin.purple.PurpleInterface", + signal_name = "BuddySignedOn") + + + if self.conf.getChat(): + self.bus.add_signal_receiver(self.received_im_msg, + dbus_interface = "im.pidgin.purple.PurpleInterface", + signal_name = "ReceivedChatMsg") + + + def account(self): + """ List of your alias """ + + self.list_alias = [] + for self.acctID in self.purple.PurpleAccountsGetAllActive(): + self.alias = self.purple.PurpleAccountGetAlias(self.acctID) + if self.alias == "": + self.alias = self.purple.PurpleAccountGetUsername(self.acctID).split("@")[0] + self.list_alias.append(self.alias) + return self.list_alias + + + def stateAway(self): + """ Test status away ou available """ + + # i found this here http://arstechnica.com/reviews/apps/pidgin-2-0.ars/4 + # Iterate through every active account + + for self.acctID in self.purple.PurpleAccountsGetAllActive(): + + # Retrieve the current status + self.__status = self.purple.PurpleSavedstatusGetCurrent() + self.__state = self.purple.PurpleSavedstatusGetType(self.__status) + if self.__state == 5: # 5 = away 2 = available + return True + else: + return False + + + def received_im_msg(self, account, name, message, conversation, flags): + """ This method is execute when a message is receive """ + + self.buddy = self.purple.PurpleFindBuddy(account, name) + + if self.buddy != 0: + self.alias = self.purple.PurpleBuddyGetAlias(self.buddy) + else: + self.alias = name + if self.alias in self.all_alias: + return + if self.conf.getCia() and self.alias[:3].upper() == "CIA": + self.text = "commit on svn" + else: + self.MessageP = MessageParser() + self.message = self.MessageP.strip(message) + self.text = "%s " %self.alias + "{0}" + " %s" %self.message + self.tux_speak(self.text, "said") + + def buddy_signed_on(self, buddyid): + """ This method is excute when a buddy is sign on """ + + self.alias = self.purple.PurpleBuddyGetAlias(buddyid) + self.text = "%s " %self.alias + "{0}" + + self.tux_speak(self.text, "is online") + + + def tux_speak(self, text, say): + """ Tux speak the text """ + + self.__text = text.encode("utf-8") + self.__say = say + if self.conf.getAway() and self.stateAway(): + return + self.plugin.throwNotification("start") + self.plugin.throwMessage(self.__text, self.__say) + self.plugin.throwNotification("stop") + + def start(self): + """Start Loop + """ + self.loop = gobject.MainLoop() + self.loop.run() + + def stop(self): + """Stop Loop + """ + self.loop.quit() + +class PidginPlugin(SimplePlugin): + """This class override the SimplePlugin class to make easy + the plugin coding. + """ + + def __init__(self): + """Initialization of the class. + """ + # Call the super class + SimplePlugin.__init__(self) + # Initialize some values ... + self.spidgin = Pidgin(self) + + def start(self): + """Plugin entry point. + This method should be used to dispatch commands. + """ + if self.getCommand() == "run": + self.run() + else: + self.run() + + def run(self): + """Plugin entry point for the "run" command. + """ + self.spidgin.start() + + def onPluginStop(self): + """Callback on plugin stop. + """ + self.spidgin.stop() + +if __name__ == "__main__": + plugin = PidginPlugin() + plugin.boot(sys.argv[1:], Configuration()) Added: software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/en.po =================================================================== --- software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/en.po (rev 0) +++ software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/en.po 2009-09-17 16:05:25 UTC (rev 5435) @@ -0,0 +1,38 @@ +msgid "plugin pidgin" +msgstr "Messenger pidgin" + +msgid "Said messages from chat client Pidgin." +msgstr "Said messages from chat client Pidgin." + +msgid "Said chat messages :" +msgstr "Said chat messages :" + +msgid "Said Instant Messenger messages :" +msgstr "Said Instant Messenger messages :" + +msgid "Speak only if your status is away :" +msgstr "Speak only if your status is away :" + +msgid "Don't say svn commit on chat #tuxdroid :" +msgstr "Don't say svn commit on chat #tuxdroid :" + +msgid "Activate the Pidgin notifier :" +msgstr "Activate the Pidgin notifier :" + +msgid "Run command" +msgstr "Run command" + +msgid "Pidgin is not launched" +msgstr "Pidgin is not launched" + +msgid "Pidgin is launched" +msgstr "Pidgin is launched" + +msgid "commit on svn" +msgstr "commit on svn" + +msgid "said" +msgstr "said" + +msgid "is online" +msgstr "is online" Added: software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/en.wiki =================================================================== --- software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/en.wiki (rev 0) +++ software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/en.wiki 2009-09-17 16:05:25 UTC (rev 5435) @@ -0,0 +1,25 @@ += Synopsis = +This is a skeleton to help developpers to build they first plugin. + +== Some markup tests == +Some markup tests. +* a mixed +* multilevel +*1. list +*1I. with +*1I. roman +*1Ig. and +*1Ig. greek +*1. letters + +A plugin from the [http://www.kysoh.com, Kysoh] compagny. + +; '''Plugin definition''': ''A plugin is a set of functions stored in a tpg file.'' + +== An example of table == + +[{>,w:80\%,b}| '''Plugin name''' | '''On demand''' | '''Have alerts''' | +| Battery monitor | ''No'' | ''Yes'' | +| Feed RSS | ''Yes'' | ''Yes'' | +| Webradio | ''Yes'' | ''Yes'' | +| Clipboard | ''Yes'' | ''No'' |] Added: software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/fr.po =================================================================== --- software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/fr.po (rev 0) +++ software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/fr.po 2009-09-17 16:05:25 UTC (rev 5435) @@ -0,0 +1,38 @@ +msgid "plugin pidgin" +msgstr "Messagerie Pidgin" + +msgid "Said messages from chat client Pidgin." +msgstr "Dit les messages à partir du client de messagerie Pidgin" + +msgid "Said chat messages :" +msgstr "Dit les messages des salons de discussions" + +msgid "Said Instant Messenger messages :" +msgstr "Dit les messages des messageries intantanées" + +msgid "Speak only if your status is away :" +msgstr "Parle seulement si votre statut est absent " + +msgid "Don't say svn commit on chat #tuxdroid :" +msgstr "Ne dit pas les messages du svn sur le canal #tuxdroid" + +msgid "Activate the Pidgin notifier :" +msgstr "Active la lecture des messages provenant de Pidgin" + +msgid "Run command" +msgstr "Commande de lancement" + +msgid "Pidgin is not launched" +msgstr "Pidgin n'est pas lancé" + +msgid "Pidgin is launched" +msgstr "Pidgin est lancé" + +msgid "commit on svn" +msgstr "commit sur le svn" + +msgid "said" +msgstr "dit" + +msgid "is online" +msgstr "est connecté" Added: software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/fr.wiki =================================================================== --- software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/fr.wiki (rev 0) +++ software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/fr.wiki 2009-09-17 16:05:25 UTC (rev 5435) @@ -0,0 +1,25 @@ += Synopsis = +This is a skeleton to help developpers to build they first plugin. + +== Some markup tests == +Some markup tests. +* a mixed +* multilevel +*1. list +*1I. with +*1I. roman +*1Ig. and +*1Ig. greek +*1. letters + +A plugin from the [http://www.kysoh.com, Kysoh] compagny. + +; '''Plugin definition''': ''A plugin is a set of functions stored in a tpg file.'' + +== An example of table == + +[{>,w:80\%,b}| '''Plugin name''' | '''On demand''' | '''Have alerts''' | +| Battery monitor | ''No'' | ''Yes'' | +| Feed RSS | ''Yes'' | ''Yes'' | +| Webradio | ''Yes'' | ''Yes'' | +| Clipboard | ''Yes'' | ''No'' |] Added: software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/help.wiki =================================================================== --- software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/help.wiki (rev 0) +++ software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/help.wiki 2009-09-17 16:05:25 UTC (rev 5435) @@ -0,0 +1,25 @@ += Synopsis = +This is a skeleton to help developpers to build they first plugin. + +== Some markup tests == +Some markup tests. +* a mixed +* multilevel +*1. list +*1I. with +*1I. roman +*1Ig. and +*1Ig. greek +*1. letters + +A plugin from the [http://www.kysoh.com, Kysoh] compagny. + +; '''Plugin definition''': ''A plugin is a set of functions stored in a tpg file.'' + +== An example of table == + +[{>,w:80\%,b}| '''Plugin name''' | '''On demand''' | '''Have alerts''' | +| Battery monitor | ''No'' | ''Yes'' | +| Feed RSS | ''Yes'' | ''Yes'' | +| Webradio | ''Yes'' | ''Yes'' | +| Clipboard | ''Yes'' | ''No'' |] Added: software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/pidgin.png =================================================================== (Binary files differ) Property changes on: software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/pidgin.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/plugin.pot =================================================================== --- software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/plugin.pot (rev 0) +++ software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/plugin.pot 2009-09-17 16:05:25 UTC (rev 5435) @@ -0,0 +1,38 @@ +msgid "plugin pidgin" +msgstr "" + +msgid "Said messages from chat client Pidgin." +msgstr "" + +msgid "Said chat messages" +msgstr "" + +msgid "Said Instant Messenger messages" +msgstr "" + +msgid "Said only if your status is away" +msgstr "" + +msgid "Don't say svn commit on chat #tuxdroid" +msgstr "" + +msgid "Activate the Pidgin notifier" +msgstr "" + +msgid "Run command" +msgstr "" + +msgid "Pidgin is not launched" +msgstr "" + +msgid "Pidgin is launched" +msgstr "" + +msgid "commit on svn" +msgstr "" + +msgid "said" +msgstr "" + +msgid "is online" +msgstr "" Added: software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/plugin.xml =================================================================== --- software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/plugin.xml (rev 0) +++ software_suite_v3/software/plugin/plugin-pidgin/trunk/resources/plugin.xml 2009-09-17 16:05:25 UTC (rev 5435) @@ -0,0 +1,61 @@ +<plugin> + <interpreter + kind="python"> + <executable>executables/plugin-pidgin.py</executable> + </interpreter> + <description> + <name>plugin pidgin</name> + <ttsName>Pidgin</ttsName> + <description>Said messages from chat client Pidgin.</description> + <author>Gwadavel</author> + <version>0.0.1</version> + <iconFile>resources/pidgin.png</iconFile> + <uuid>2907e3bb-58b1-4edd-9355-f608472c8237</uuid> + <platform>linux</platform> + </description> + <parameters> + <parameter + name="chat" + description="Said chat messages" + type="boolean" + defaultValue="true" + platform="linux"/> + <parameter + name="im" + description="Said Instant Messenger messages" + type="boolean" + defaultValue="true" + platform="linux"/> + <parameter + name="away" + description="Speak only if your status is away" + type="boolean" + defaultValue="false" + platform="linux"/> + <parameter + name="cia" + description="Don't say svn commit on chat #tuxdroid" + type="boolean" + defaultValue="true" + platform="linux"/> + </parameters> + <commands> + <command + name="run" + description="Run command" + daemon="true" + notifier="true" + expiration="1"/> + </commands> + <tasks> + <task + name="Activation" + description="Activate the Pidgin notifier" + command="run" + type="once delayed" + activated="false" + delay="00:00:05" + delayMask="false,false,false" + delayVisible="false"/> + </tasks> +</plugin> |
|
From: jerome <c2m...@c2...> - 2009-09-17 12:56:23
|
Author: jerome Date: 2009-09-17 14:26:34 +0200 (Thu, 17 Sep 2009) New Revision: 5434 Added: software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/dependencies/RunOnceVista.reg software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/dependencies/RunOnceXP.reg Log: * Added registery keys. Added: software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/dependencies/RunOnceVista.reg =================================================================== (Binary files differ) Property changes on: software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/dependencies/RunOnceVista.reg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/dependencies/RunOnceXP.reg =================================================================== (Binary files differ) Property changes on: software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/dependencies/RunOnceXP.reg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream |
|
From: ks156 <c2m...@c2...> - 2009-09-17 11:57:32
|
Author: ks156
Date: 2009-09-17 13:57:24 +0200 (Thu, 17 Sep 2009)
New Revision: 5433
Modified:
software_suite_v3/smart-core/smart-server/branches/user_mode/resources/05_user_configurations/00_resourceUsers.py
Log:
* Update the configuration file if the installed voices had changed.
Modified: software_suite_v3/smart-core/smart-server/branches/user_mode/resources/05_user_configurations/00_resourceUsers.py
===================================================================
--- software_suite_v3/smart-core/smart-server/branches/user_mode/resources/05_user_configurations/00_resourceUsers.py 2009-09-17 11:34:22 UTC (rev 5432)
+++ software_suite_v3/smart-core/smart-server/branches/user_mode/resources/05_user_configurations/00_resourceUsers.py 2009-09-17 11:57:24 UTC (rev 5433)
@@ -74,8 +74,24 @@
# If the server has been started as normal user on Linux and
# if the user configuration file doesn't exists, copy the master
# configuration located in /etc/tuxdroid/users_conf/default/user.conf
- if not os.path.isfile(userConfFile) and os.name != 'nt':
- if systemPaths.isUser():
+ if systemPaths.isUser() and os.name != 'nt':
+ try:
+ f_sys = open("/etc/tuxdroid/users_conf/default/user.conf", "r")
+ dict = eval(f_sys.read())
+ f_sys.close()
+ lang_sys = dict['language1']
+ except:
+ lang_sys = None
+ try:
+ path = os.path.join(systemPaths.getUserConfPath(), "default", "user.conf")
+ f_user = open(path, "r")
+ dict = eval(f_user.read())
+ f_user.close()
+ lang_user = dict['language1']
+ except:
+ lang_user = None
+
+ if lang_user != lang_sys and lang_user != None and lang_sys != None:
os.system("cp /etc/tuxdroid/users_conf/default/user.conf %s"%userConfFile)
if not os.path.isfile(userConfFile):
|
|
From: jerome <c2m...@c2...> - 2009-09-17 11:34:36
|
Author: jerome
Date: 2009-09-17 13:34:22 +0200 (Thu, 17 Sep 2009)
New Revision: 5432
Added:
software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/installer.nsi
Log:
* Added nsi script.
Added: software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/installer.nsi
===================================================================
--- software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/installer.nsi (rev 0)
+++ software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/installer.nsi 2009-09-17 11:34:22 UTC (rev 5432)
@@ -0,0 +1,96 @@
+; installer.nsi
+; This installer which install the Second installer
+; -----------------------------------------------------------------------------
+
+; HM NIS Edit Wizard helper defines
+!define PRODUCT_NAME "Second Installer"
+!define PRODUCT_VERSION "0.0.1-b0"
+
+; Output names
+!define FINAL_INSTALLER_EXE "QuickStartGuideInstaller_${PRODUCT_VERSION}.exe"
+!define UNINSTALLER_EXE "QuickStartGuideUninstaller.exe"
+
+; The name of the installer
+Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
+
+; The file to write
+OutFile "${FINAL_INSTALLER_EXE}"
+
+; The default installation directory
+InstallDir c:\tuxdroid\bin\tuxhttpserver
+
+; Request application privileges to user
+RequestExecutionLevel user
+
+; Get the Tuxdroid installation paths
+var /GLOBAL TUXDROID_PATH
+var /GLOBAL UNINSTALLERS_SUB_PATH
+
+; -----------------------------------------------------------------------------
+; Section Pre-installation
+; -----------------------------------------------------------------------------
+Section -Pre
+!ifndef INNER
+ ; Needed
+ SectionIn RO
+ ; Get the Tuxdroid installation path
+ ReadRegStr $TUXDROID_PATH HKLM "SOFTWARE\Tux Droid\Installation" "Install_Dir"
+ ; Uninstall old installations of Second installer
+ DetailPrint "Uninstalling old versions"
+ SetDetailsPrint none
+ ExecWait '"$TUXDROID_PATH\uninstallers\sub\${UNINSTALLER_EXE}" /S _?=$TUXDROID_PATH\uninstallers'
+ Sleep 3000
+ SetDetailsPrint textonly
+!endif
+SectionEnd
+
+; -----------------------------------------------------------------------------
+; Section ""
+; -----------------------------------------------------------------------------
+Section ""
+ ; Kill troublesome tasks
+ Processes::KillProcess "QuickStart.exe"
+
+ ; Get the Tuxdroid installation paths
+ ReadRegStr $TUXDROID_PATH HKLM "SOFTWARE\Tux Droid\Installation" "Install_Dir"
+ StrCpy $UNINSTALLERS_SUB_PATH "$TUXDROID_PATH\uninstallers\sub"
+
+ ; Write the files
+ CreateDirectory "$TUXDROID_PATH\softwares\quick-start-guide"
+ SetOutPath "$TUXDROID_PATH\softwares\quick-start-guide"
+ File QuickStart.exe
+
+ CreateDirectory "$TUXDROID_PATH\softwares\quick-start-guide\locale"
+ SetOutPath "$TUXDROID_PATH\softwares\quick-start-guide\locale"
+ File /r /x *.pyc /x *.svn locale\*
+
+ CreateDirectory "$TUXDROID_PATH\softwares\quick-start-guide\images"
+ SetOutPath "$TUXDROID_PATH\softwares\quick-start-guide\images"
+ File /r /x *.pyc /x *.svn images\*
+
+ CreateDirectory "$TUXDROID_PATH\softwares\quick-start-guide\attitunes"
+ SetOutPath "$TUXDROID_PATH\softwares\quick-start-guide\attitunes"
+ File /r /x *.pyc /x *.svn attitunes\*
+
+ ; Write the uninstall file
+ WriteUninstaller "$UNINSTALLERS_SUB_PATH\${UNINSTALLER_EXE}"
+SectionEnd
+
+; -----------------------------------------------------------------------------
+; Section "Uninstall"
+; -----------------------------------------------------------------------------
+Section "Uninstall"
+ ; Kill troublesome tasks
+ Processes::KillProcess "QuickStart.exe"
+
+ ; Get the Tuxdroid installation paths
+ ReadRegStr $TUXDROID_PATH HKLM "SOFTWARE\Tux Droid\Installation" "Install_Dir"
+ StrCpy $UNINSTALLERS_SUB_PATH "$TUXDROID_PATH\uninstallers\sub"
+
+ ; Remove files and uninstaller
+ RMDir /r "$TUXDROID_PATH\softwares\quick-start-guide"
+ Delete "$UNINSTALLERS_SUB_PATH\${UNINSTALLER_EXE}"
+
+ ; Quit the uninstaller
+ Quit
+SectionEnd
\ No newline at end of file
|
|
From: ks156 <c2m...@c2...> - 2009-09-17 09:25:55
|
Author: ks156
Date: 2009-09-17 11:25:43 +0200 (Thu, 17 Sep 2009)
New Revision: 5431
Modified:
software_suite_v3/smart-core/smart-server/branches/user_mode/data/web_interface/user_01/xsl/attitunes.xsl
software_suite_v3/smart-core/smart-server/branches/user_mode/data/web_interface/user_01/xsl/gadgets.xsl
software_suite_v3/smart-core/smart-server/branches/user_mode/util/applicationserver/gadget/GadgetDescription.py
software_suite_v3/smart-core/smart-server/branches/user_mode/util/applicationserver/ugc/UgcDescription.py
Log:
* Merged rev 5415 to 5430 from trunk into user_mode
Modified: software_suite_v3/smart-core/smart-server/branches/user_mode/data/web_interface/user_01/xsl/attitunes.xsl
===================================================================
--- software_suite_v3/smart-core/smart-server/branches/user_mode/data/web_interface/user_01/xsl/attitunes.xsl 2009-09-17 09:20:42 UTC (rev 5430)
+++ software_suite_v3/smart-core/smart-server/branches/user_mode/data/web_interface/user_01/xsl/attitunes.xsl 2009-09-17 09:25:43 UTC (rev 5431)
@@ -230,13 +230,13 @@
function disableEditAttituneButtons(name)
{
document.getElementById("editId_" + name).className = "attitunesBtnNoTitle attitunesBtnEditDisable";
- document.getElementById("deleteId_" + name).className = "attitunesBtnTitle attitunesBtnDeleteDisable";
+ document.getElementById("deleteId_" + name).className = "attitunesBtnNoTitle attitunesBtnDeleteDisable";
}
function enableEditAttituneButtons(name)
{
document.getElementById("editId_" + name).className = "attitunesBtnNoTitle attitunesBtnEdit";
- document.getElementById("deleteId_" + name).className = "attitunesBtnTitle attitunesBtnDelete";
+ document.getElementById("deleteId_" + name).className = "attitunesBtnNoTitle attitunesBtnDelete";
}
function thisAttituneIsPlaying(name)
Modified: software_suite_v3/smart-core/smart-server/branches/user_mode/data/web_interface/user_01/xsl/gadgets.xsl
===================================================================
--- software_suite_v3/smart-core/smart-server/branches/user_mode/data/web_interface/user_01/xsl/gadgets.xsl 2009-09-17 09:20:42 UTC (rev 5430)
+++ software_suite_v3/smart-core/smart-server/branches/user_mode/data/web_interface/user_01/xsl/gadgets.xsl 2009-09-17 09:25:43 UTC (rev 5431)
@@ -303,7 +303,7 @@
document.getElementById("helpId_" + uuid).className = "gadgetsBtnNoTitle gadgetsBtnHelpDisable";
document.getElementById("configureId_" + uuid).className = "gadgetsBtnNoTitle gadgetsBtnConfigureDisable";
document.getElementById("duplicateId_" + uuid).className = "gadgetsBtnNoTitle gadgetsBtnDuplicateDisable";
- document.getElementById("deleteId_" + uuid).className = "gadgetsBtnTitle gadgetsBtnDeleteDisable";
+ document.getElementById("deleteId_" + uuid).className = "gadgetsBtnNoTitle gadgetsBtnDeleteDisable";
}
function enableEditGadgetButtons(uuid)
@@ -311,7 +311,7 @@
document.getElementById("helpId_" + uuid).className = "gadgetsBtnNoTitle gadgetsBtnHelp";
document.getElementById("configureId_" + uuid).className = "gadgetsBtnNoTitle gadgetsBtnConfigure";
document.getElementById("duplicateId_" + uuid).className = "gadgetsBtnNoTitle gadgetsBtnDuplicate";
- document.getElementById("deleteId_" + uuid).className = "gadgetsBtnTitle gadgetsBtnDelete";
+ document.getElementById("deleteId_" + uuid).className = "gadgetsBtnNoTitle gadgetsBtnDelete";
}
function thisGadgetIsPlaying(uuid)
Modified: software_suite_v3/smart-core/smart-server/branches/user_mode/util/applicationserver/gadget/GadgetDescription.py
===================================================================
--- software_suite_v3/smart-core/smart-server/branches/user_mode/util/applicationserver/gadget/GadgetDescription.py 2009-09-17 09:20:42 UTC (rev 5430)
+++ software_suite_v3/smart-core/smart-server/branches/user_mode/util/applicationserver/gadget/GadgetDescription.py 2009-09-17 09:25:43 UTC (rev 5431)
@@ -5,6 +5,8 @@
import os
+from util.applicationserver.plugin.Plugin import SUPPORTED_LANGUAGES_LIST
+
# ------------------------------------------------------------------------------
# Gadget description class.
# ------------------------------------------------------------------------------
@@ -105,6 +107,32 @@
return self.__parent.tr2(language, self.__name)
# --------------------------------------------------------------------------
+ # Normalize a gadget name with the correct translation.
+ # --------------------------------------------------------------------------
+ def normalizeName(self, name):
+ """Normalize a gadget name with the correct translation.
+ @param name: Gadget name to normalize.
+ @return: A string.
+ """
+ isTr = False
+ trLang = None
+ for lang in SUPPORTED_LANGUAGES_LIST:
+ trName = self.getTranslatedName(lang)
+ if name.find(trName) == 0:
+ isTr = True
+ trLang = lang
+ break
+ if isTr:
+ tgLang = self.__parent.getContainer().getLanguage()
+ if tgLang != trLang:
+ tgName = self.getTranslatedName(tgLang)
+ return name.replace(trName, tgName)
+ else:
+ return name
+ else:
+ return name
+
+ # --------------------------------------------------------------------------
# Get the TTS name of the gadget.
# --------------------------------------------------------------------------
def getTtsName(self, language = None):
Modified: software_suite_v3/smart-core/smart-server/branches/user_mode/util/applicationserver/ugc/UgcDescription.py
===================================================================
--- software_suite_v3/smart-core/smart-server/branches/user_mode/util/applicationserver/ugc/UgcDescription.py 2009-09-17 09:20:42 UTC (rev 5430)
+++ software_suite_v3/smart-core/smart-server/branches/user_mode/util/applicationserver/ugc/UgcDescription.py 2009-09-17 09:25:43 UTC (rev 5431)
@@ -56,6 +56,7 @@
self.__dictionary = dictionary
# Get the descriptor values
self.__name = dictionary['name']
+ self.__name = self.__parent.getParentGadget().getDescription().normalizeName(self.__name)
self.__ttsName = self.__name
if dictionary.has_key('ttsName'):
self.__ttsName = dictionary['ttsName']
|