Changeset 177
- Timestamp:
- Aug 23, 2024, 9:59:54 PM (3 months ago)
- Location:
- trunk
- Files:
-
- 8 added
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Core.lfm
r174 r177 12 12 Top = 200 13 13 Bitmap = { 14 4C7A190000001000000010000000B62000000000000078DAED9C075C54C7FAF7 15 218937ED9FDCE49AC49262AF31B18BA86089951862D4D822C1868A0882A85445 16 051595264511503A820A285DE9028A8A281D14102982F4B27496DF7FE66C7159 17 76974593F7DEFBBEEFF0F97DE69C99E73BCFCC73E69439BBAC8CCCDF97B21DB6 18 81A7345BD55E3AB57E26FAE29B9B9BC54A1ABEA3A303A829EA2D92FAE26B3363 19 19BBA2AC5894E6252025E888485E9A71A2B511A82EE4AAA017DFD73879FEB3A2 20 4EA120D1A617DFD738D1520754E4BC96009F69B785D90F725045A4ABBAC8714A 21 F2FFC4E64F66FFF5F87A8F5392FF14CBCDBDFC0BFB1195787CFC89759C02C1F6 22 85FC3C8E0A60726109F292FC4B9A27D2F8978A1793FAE2458D4BD438FF93D3E0 23 C171A08A8B8BC39BD80E1F9E0C41896B4752FDD8B1A91094B08DB872E1346142 24 1A78E2D90A6E4B93264DCA84B0FAC3D33479720E78EA2F3B6DDA53084BDA3666 25 CE2C004F3C46785F5C9A3DBB083C09DB8A2BE7A539738AC193249BB7E1A569A3 26 BFB17E93F47FCA8F94097D482A5E54929A373313D98628DEAC77198717D18630 27 4F5989BC501B823C8F1594B4BC28B63FFCDBFA977AFC42C7B2DFF1EFC3BFD8B9 28 27C4BFC17C14E6DFEC3C783B5EA61FE74C5F6DFC5B5292D962DC315D845C174D 29 649FDF8D4CFBED4C1E64300F37F5E74232BB08F91E7A687A7A0F5DAD0D407737 30 A32E560D1AB2E370CF4E053EFBA68B6C23D1EC2794DDBAC8D876A6C7A3C3F714 31 D8A7D6836DB6166DDEC7D19A1A8D8E8672A45F3184E79E89E8C92E61FC52B623 32 D60730FC0988BC4C9E599B18FFDD3565E8B8A88DA63017B4D5BF44E4D97570DC 33 3196DF46A2E942D43F4D40475A1C60B00070D4E2F4FD7E10D8E776A0E36E20BA 34 9B1BD0ACA7809AA420943E0C868DCA083E9F66BA92196F07E92774E70066CA40 35 C01974EFFD01ADBBC6A1C17637D3DE2BD3B5C839B1056D0DD538F6FB303EFF88 36 DAD3381D5B09684F05342681AD3E1E6D6AA3C0B255039BF8666526E1EEAAC1B8 37 BD711C3165C354E99BD7FCB1650CDF66B814EDBB27A0456D0C1AB60C47C3C935 38 4C797DAC2F92368D46D8CA2F11BE7E34C39B2C1FFA9A3759C2C4AEFAC27E546C 39 1981A24DDFE2D98621A8B97A9AE19395FF855B2B3F47F0CA81B867B4062DF5D5 40 24C443F87C88C11CD465C733B129D8341459EB06217DCD40E41EFE05253E2711 41 4959A57F214CE93314DEF241FEFD08AC9BF7099F0FD39B81EC8B1A68AF2F4781 42 9739EEAD1A8838E5CF91EF63CEF80F5DF139C3665D3E8EA6EA7238E9AEC68A19 43 9FF4980341DADFE3D9B5A368AB2B4771A40F528EAC43FC8651885B3F12F74DD6 44 A1F0F61534569523D8EE10964FFD40E41C74579F8438F30D28BA1F8256728CBA 45 D95D8C9AC978699F2FEBAFC732312C2F9DDB31012748ACCD577D89E34ADFE2C8 46 B22130583C081BE67DDAABCF7F656A4BF144EDF90562D596EA2B79AD4C6C909F 47 0C1224A0ABE3F50DB4A315ED81BBD176EF226A122F43225FF51C287C4816DCA9 48 40711A5092019465317C576D113AD2FDC5B6C1F0CD648DF9E2319FC3CB5CB206 49 7BCAF0DD64FDD955578CF6876E649EB942244FFACA61C9BAADFC29F0AA80E953 50 559031D3064FF59E1B505353835E3C39D628CBE6B09574FDFB02A82D4543DE3D 51 34E62573549C85FAEB1AC8CBCBEBCDD3549E47D8022E5B063454909856824C5C 52 8E888FA67023F17C453EE97311E3170D8423E7255A1A38EF1F5A9B1813568C79 53 6FFEC2420E4FFBCDB0AF38F1A44C7B0B2736542435DFB1EECD3B926B26B92EA0 54 A698D367EA97FAA46C573B2736EC4E2E7F4E74FFE9BCA97BC99943D4771B0BE8 55 6CE37360B3397C9CA5689EF68FF69B55CBF5DD4CF8760E4FFB46FB40AE07AC48 56 53D13C8D138DB1E0B829DFD5C9698319031B4DC10744F3F438D13ED37130BED8 57 FC7B18679BD38706BFEDBDF8966447FEB956EFFA1B1A7CB7A031602F9A820EA0 58 29E410C975C9BE061AAEA8E265945D2F9EA6AAAA2AA65C1A51DB7FD3FAE06D9F 59 65F0173CE308F7A5DF6B951EFDE03DABBE7E5EEDD773278F95984B7A6EED8BED 60 8317632BBD8459C16771711288DF5BB0FCF1BF212B7AFD203D2BD3CF58FDC725 61 4FA3E5A0F2305C060F83A570D75F0237BDC5703BF4135C0F2EC2E5030B715977 62 012EED9F0F171D45B8682BC079DF3C3869CD8593E61C868DF130418CFB1144BB 63 1F46B49B31A25D8D11E56A441EA10D117989CA00B75DF471CB99C8490F114E87 64 1071F1202EEE9567FCF252377DD62662936B2C9B5C27BBC875B7ABB3139D9D1D 65 E8EC684707557B1BDADBC933455B2B1C35E4E04EFACCBC233D750A2A2A2A7073 66 73239758092CE1DAA85A5B7061CF2C32DEC58C4F555555D8DBDB63CD9A350C6B 67 6464040303031C3C7810FBF7EF87969616F6EC51C7CE9D3BB16DDB36B4B636E3 68 BCFA4C264EDDA4BF16161658BD7A35BCBCBC383E895EF797E7B785F14BD9D616 69 16CEEF9AC1C49833564E9F39FD95C0B670D89666161C764E678E0F6543434361 70 46E6684C7474AF3871D86601B68991BDDA545C22C796C6E9D8B163484C4C84B5 71 B535C31A191972C77F00FB7574A0A9A90975753A7E3532FEAD686635C26EC714 72 322F14993EBBBA5E868989090202FC7BC4B895EBB785EBB799D5C4B0ACA606D8 73 6E9BCCCC274E7FDB05C62AC436F766594DF5B0DDFA233317697F6362A2616B6B 74 8BA8A8C81E317ECD36BE661BEBD144746ECB0FCC3CA67E8D8D8D99F1D379447D 75 1A1A1A425F5F1F070E1C808E8E3619FF5E32FEDD505353C3D6AD5BD1D850071B 76 D5EF71919C03B4CF0E0EF60CEBECE4D423C6AFFBDBC0F86C6AAC63D8C6865A58 77 FF39919C03B399FEB609C749125B5F8B86FA1A58A94C60CE013A8FE95CA4F389 78 CE097BB569CCB1A5C787C698C6898ED566CB24A6CFD62A1361B579022CFF188F 79 BFE1FEFE26D743B1EFEF44BDCF13713FEC17FFB6FE45DE83FE6FE0A5797726EE 80 1E2CCDFD53D23D5CFA77776FC4BFEDF8FF665EE62DCF9FBF3CB93B98C3C5C694 81 11DD9686E1D9D3ED8B9647F963A6DBC2F5C2E9A2B529529262C812AC1636A67A 82 8C6ACA8B18F1F6691DB5F1733BDFA38D5D2AABF0E86E2C53DFD6CA62445317B9 83 2F7771D78CBC726A436DD5B7ACE1B741B76979E4F54B789E9B81DABA3A549517 84 A3242F8D11DDA665B48EDA505B419ED7C6F3E7858CD2126FC38AF477B1FC8F8C 85 E8362DE3D50BB256A6FA387D783FCC0CF622372B03F7EFDC829F8B0D36FEBA84 86 FF58BC65DD2F4C19ADA336D49632943D65A4CD8F736C5404B21F2541FDCF357C 87 96275A46EBA80DFF7365C29E3E72001545398C6E5CF745454981589ED631365C 88 7BCA2E9D3B198AD3C763EBBA9508F4F5427C5418930BB641B705EBA82D6528CB 89 8B032D7B41627DDDD319A52FF2F96DF0585A46EBA80DB5158CFDFC19E399727A 90 9C681E70C50DC5054F117EF31A23BA4DCB046D2823C887DDF063CA936342F879 91 4D590123C1329A535B419ED7C6A9C3BA4CFDFA5F16E1D0DEED7C9E6ED3325A47 92 6D8459C13678757A9A3B51F62C9D11DD16AEEF2BF16CFBC3F092B69F36647690 93 EBCB361968FB68F7FF3A43D86AF267D16D4126AF0C323333D15F9E612B481FFE 94 9441505050FFF86D5CBE8CF09BDF80DFC2E58B08BF4932CF8F15375E94E5F305 95 647B03D13AA2B5446B88569198BA08C454205682922924B6794499444F885288 96 92891289940462CA1B6B25297F49542CC3619F8A61EF102D7F3D26E6F8FEC989 97 131D2BBFBFD95C96F45746996825C72F95F221E51E31A17DA1FB3C31634D274A 98 E5B082753C499C136BB8EC038EDF7E1FBF555CF62EA7BFFDE69505E2B5BCFFBC 99 B6B3362756CB7BC74ADA2418D37E9F3FFF8664611149FA680E4E2EAEFEA0C87A 100 1EBBD5993E1F9D24EBCE9E9F35F0584EBD56AF7A3EBB9E682DB539CEB7E9C1CE 101 219A49EB77233F3F1F3DDB3FC961571329531B636E1BC2EC2EB2FE3DD7EB9872 102 6C8F73D89F899641A45F1E2BE8BF671BC61C761191A2F46CCF360EBE112B3256 103 5388BEA76D6C1511F73E58122B9949241F47348AEE6F14D9863896F699FA65D8 104 61445FD3F2B522DAD82FF618716C3772D8C1445FD2FA55228EBF96D85871DA58 105 CB67C51FFF5D62E3CCA95F25F138D03249C7A8AFFAFFE2F4B6EB1B49EBFC37E6 106 FBF3FD23419FBCED3EBEB323D13F4D6622CAC57DFF46C4BB0DB13C2F97D6BFE0 107 B8C47D7F485AFFC2EDF7C7BFF07ADAACE767416FE35F64EA877F89FCDBF8EF4B 108 6F7DE209ADF3FE0A71E32376FFBF81E73182DB6FD287376105FDBE29FF36BEA9 109 8E727D1F7DC33678DC516E1BD2B6236C2FC8F5D58628DB7F372F38A6FE8CFFEF 110 382F45EA6FF8EB75ADECA73DFF335D71D75E61D6CC8CF9EC8BFF5E5590E3DD8B 111 B9F566BCF7E402BC998872517D14F421D27F1FEF6BCD24F8171C435FB958FF82 112 B9E47B469FFECD24DC93CDA4F42FE99ECE6BA32FFFA2EEB9C263E98F7F11F75F 113 A9FD8BEA8BB8F92BAD7F71F34D9A7BBF9914E79614E71E2FC9120D253A40144F 114 54405448144BA449F41DD13B621E23283B8B7E8D92E809911DD13E2EE748944A 115 74936B232A8DE6D6C710C911BD2F50F701D122A2286EFD2742EC00220DFACA84 116 48414CFBB4DFF3B8E35113AA1BC2EDF709A28FFA785C3A479440F40F81B25144 117 F7E92B6C291EB75488B288BE7E0B3E9BE89BB7E87F9250FFFB13BFE744BBC51C 118 BF00298E5F3B91BC98F9338D2850C2FCA921621385124D16D34FDEFCBD435446 119 544114C71DDF62A207449DF42BC74413DEE0717920FDBA3751175132D18C3768 120 E347A2DB441D44B7DE80A7C7623A913757326FD8C6575CF53C19568E7B77B8D9 121 D2DF971D51F456DFFDC303E375C31F6CD934E6CAE43FC66E1A24FFD500498D8E 122 3ABA6CD270BB55196BAD56C0D162216E9ACAC377FF6438AB8C80F2B689F87CF3 123 C8DC2F7EF97ABA2876F82185C9632D7FAE73F75E879CE8ADC88C50C123FF7588 124 BFB81C41C766C164C7F718A2391983D70D674D5B36484E90FD6EE5B8014B4C14 125 73AC3CD622375D1FD5456751597012458F0E203D7833EEB9AFC0EF762BF1A981 126 1CDED7F901FF58F165D13F677DC63F57F66C9BA8B2C27625521276E3DE733B74 127 B426A1A5C10F2F73F49113B503899795B0D74E09FF3C32071F90F1C8AE1E8A8F 128 170FD4E0F1D62AA3FC033D5661CD5D136C7AE1899B2DA928A90F4059962EE1B7 129 21E1D20ADC30998EC5FBA662C2E6317877C37718B0F48B281E6FAF3A2AEBBAF3 130 CF981C771873D32CB0BECC0F5B4B3D61F9C4047137FEC02DCBF9B8BA6F221C56 131 7C09BD710330E6E7A118B07648199FDF382C37C842019303D52177EF3414D22F 132 60FA23734CBCAD8B636797E0BAFE3438AEFB1627E43F85F68877307BF1207CB0 133 6764058F3FAD3428CC476B024CCD1430DA5315936E196042E87E4C76DE045FDD 134 297021C7CF6AC940187CFF3E74BE93C118A5AFF1F945B924FE3AF5A72FF65A2C 135 FF0AEEDB476396890206D92A63ACFD2A1C569B888B64ACB6CBBFC0B1A91F41E3 136 3B59ECFB4606DFEC9D88F9810B0D78FCAF133FF9E48CE2672F2D167C0EC5AD63 137 F1A9DE2CACD9340AA7160D8485C23F61FCC3077C5667E47BF8E9ECB4EACDBF0C 138 192870F17877E2C0019B4DA77CD8B97ACE3F31EEB76F60F0C387D01DF70F688F 139 7C176A5FCB60E71019863F3CE543F6ECEF3ED8F9AEACCCBB42D7C069633F7FCF 140 4973DCFB6D8BE77D064D62AB4698DD447B86CA4073D8BB3099F93FEDD387BEEF 141 CABD560D103A9FE8B547F9A301B296F2A33E4E9BBF7468FD9FBF7CD3B565EBB8 142 AE9FB78D6D501EFB51FAA7EFBF63CD7CBAC0B115BE97BE47F405F7FAB0827B3F 143 D8C7D5566ED98F5C9BF724DC87DFE3DE073EE35EAF0672B73FE2D6C9FE27BDF8 144 FB7DF3EFF0F4F524F28207C93DAE78C0DDC79D919BB73B5CBDDDE0EAE5CAE497 145 497ED9F3322E11B9785CC206D58DD8B96F174E599A33DFE1EB4F3AEF7C016A9A 146 3BA163B01F376F05E1A4C549A9DBA0ECB5E0EB0C4B9592F90837226E4AD5068F 147 A58C202F4D1B82AC289E2A30FC86C8368459717C5C723C340F69E1C4D9D76D50 148 56C7703F5327898FBF7F071ABA7B9198928480F0401C363D0C931326B81EE2CF 149 94D13A6A238ABFF320017B7435183B411F82A275D486DA0AF2090F13A1BE7F0F 150 BF5C92A80DB5A50C65350F6A415D473AB6471B84A1EC9C9FE642DB4007874CF4 151 FA25CACC5BA280868686B7D2DB9E7FB2B22544A544D765B8CF6EAA34A7FBB2B2 152 655C89AA2BE5B20C7F9C881839A464676783E6745F5022EA8E73D802AA205353 153 4041210B376FDE64F22347D0438275D496321C368BEA969E1E1B9327C7E3F3CF 154 CD995C4BABB38704EBA82D65282B23F390EA8EA66607B2B33BE1EE5E0D5FDF06 155 24265660C78E66BE366FAE83B2722993535BCA7058BA1C48B8BF7D7B1B962E2D 156 C4AA55E58CE8F6A64DF522456D29C361C753EDE77E035A4AD175E9F8FD1C761C 157 D5C1EE6EFAFDE10E12232F383A9E82B7F77966FF75D949FE3EB5A50C871D4BA5 158 DFD545BF2FDCCC9795D561B1FBD496325C96CAA8A38385E6E63AE4E63EC6F1E3 159 3A888ABAC1ECF344CB78DBD496321C760C95495B5B1D99CF157C1D38B05DEC3E 160 B5A50C87A54B8FD1C75B5AAA505353CCE8F9F30CECDCF93B7F9F6EF344F7A92D 161 65382C5D7E8D3AD9DC5C8EFCFC54E8E86C61FA1A1676059595F922456D294359 162 59D9A144232DDBDB2BD1D4542A95A82D65284B9F05646587395DBC7815FD1165 163 B8CF11D36565BF329795FDD6BB7FFACA9CBB8E60526868E8379E9E9E79CECECE 164 E0C9C9C989CC1B47F85CF1B12D44A1C8B53F3927BF767070F8D9DADAFA4C7070 165 301E3E7CC8282B2B1325A5C5888D8D81DF55BF56728FD74BCC497C5798F7F5F5 166 CD7CF2E449776E6E2EF37F49393939CCF71D6EDFBE8DA4BB89E43C4CC0B367CF 167 101C1ADCE673CDE750456D558F3508E9331A1B1BC162B118D1EDEAEA6AA4A6A6 168 E2FEFDFB08BA7903F7921291F2201957AFFAB615143C5D29C87B7878F0AFA5F5 169 F5F58CE8FF46A5A4A420BFF039DCC313A0E71601F3C00458785E435442D20E61 170 FF3C96D74E23D1D38242B8864543E7BC337E3D698AD524960BCFBA609D4BDCE3 171 13A119FCF52BFD7F01FABF849595957C95575623EB592EFC83BD109714009B08 172 7BB8E7936783EB67A075C90BABCE473E36F70B19CDF3FFEAD52BE633611AA70C 173 728D758B8882B7BF131E6546E2E98BBBB08F73846769086CA3CF232236045A1E 174 A158691B724290A76C614101021253A17BD115310957F18CB0D98531B08D7380 175 53A13F4CC3AC101C7D0D97C343B0D6FE669197FFCDF194A77D7EF1E205CAC8F1 176 B68BCCC0FEF38E48CD0E454E513432F26FC3FAD6395865F8C0F09A29AE877BC3 177 3732186BEC43BA6D3DBC94285F51518102E2BBB0E029EC6EA740DDE1221EA6DF 178 40564124B9DF46E0A8EF2998DD75818E97313C03C933604820363ADE64DB7BB8 179 F179E6FFDAC81C0A4A4CC1461B0F84C67AE3514638A293AEC0C0D5083A374E40 180 CD4A0B1E575DE11C128E63BEA1F557AFF9CDF3F6F6C6CB972F51565686929212 181 141515C1D0E736F43DBD119F1C8080B0F3D0B3D0C2B10B4761E762835B311188 182 78908E4BFE8171B79D2C060406061E2273B53632F236222222BA23C2C3BBDD7D 183 AF766F3A7DA95BC5D211FB2C8EC2C2CD1E97C833D0F9A060B84526E1714131C2 184 13EF95DF7FFC60333D06644ECE4B49B9F75B7272D2AF77EEDCF9352921E157C7 185 CBEEBF2C35F5345D657DB568834370F716A71B6C7D8F9B5D0B74ADD986EE6148 186 2D28C5ADFBA99D7DDDDFDDFCAF8FB7F6B8A2E4E0E1B122E846E0D215FBCEEE1B 187 A97ABCCDFAC61DBCAA67FDA5DF23983E7DBA2EFD5F19491A3366CC5A71FCB469 188 D3B4172C58602DAA6EC68C19071514144ED336BEFAEAAB69A26CA64E9DAAB970 189 E142DB615F7DF2E37AC5314779921B3FE8371EFFCE3BEF0CA06D7CFCF1C74384 190 F9C18307CF1C31628412E5D7298E36E1496E1C87DFB06143A2BCBCFCD1458B16 191 D9D13684F9153386EDDDA5F4FD05C51F866EEEF5626AE8D0398435E14998DF30 192 7FCC317FE31530539D9D20CC6EDCB8F1A8A0986FBC08F0648C0C2B4A5CDE4450 193 BDF9D14725F1A29270FF699CA9FD09D5D98982E5A2BEFB278AE7C64F83C66FFE 194 0F4355FA9A6BA27872FC66D1E3272A6692E2273C7F44C54C52FCA499BFD2F45F 195 9AF347507FD579AB387FC1277A874DE6390745FD9951DFD51A5FD18EA017ADF0 196 7ED60CA7EC26D8A735E21C916736AB55C331F4CF9DBAC6F366CF53E4BF873F68 197 6C32ABA499DD9E58D1D19D50D981D4BA2EE434B2F1AC85A8998D8C862E449575 198 C0EA5123F4E3EBBA439E3577F804476D9DA738FF93A973153FB60E8854897CD9 199 DE955AD389D2F66E947474E3595B3772897288D25AD9C822CA27DB57F35AB03B 200 A40AF1452D1DFBF40ECF533D70786E7445472BF55B4CD832C2967702356CA0A5 201 9BA36AB29DD9DA8D98A62EA61DAB7BF5308EAC622BAA1C5458B15B5FC13597C5 202 4E2775F9A4BF85C4EE55175049F48AAB97A4BD3C5217DED0099FFA4EC4BD6CC7 203 669F12F630252D85F9DBF5146C9F34B273586C3C68EEC21D56171E92ED641283 204 84AA4EC4577622BC823C83D776C2AEB20D472ADA9054D789F56E2FD84396EC55 205 58B4434FE1DCE3467612B14D26AC6929B179DA8ABDB18DD0886AC0EEC806FC11 206 5A8703D9CDD85AD082D395ED087BDE823F3C5EB087ADD052D8A06524E797D752 207 E99AD98427C4EFA1A72D5878AD167BF39AA145EC779363B88BB0A35CAAA0FCB8 208 0911A4FFA6B72A61185CCE56DCA4ABF0839CE23F0E38872A5925D7755E27B6A1 209 AF3AB02280F084D52869C11EAAFC664C72ABC2C5E76DF022F3609D4B11C2B21B 210 6BF61E349E4D8FFFDE4387A72715B7D698C6D5C2E97123B6873440F3590B34C9 211 1CA2D220DB2BAFD6C03CBA16EB2F15C12DB9B6D6D12F4289CC21E673029A7B07 212 45292516B5D4EA879441D9B30CABE21BF14B611B96937ED0ED71E605F8C5FE29 213 AEA5D6D5DAFB842B4D9BAD20F81903D3866740D88AE8B417B5EA96BED8EBE48F 214 C58E57A060E582F5866721BFE9100212B26B5DFC4256CC94EFC9F2929CFCDCF7 215 8F985B2A199F39C7727273833D91A5C3799C3C7512BFABA8B1B40E1A29511B49 216 E7D2C2654AE34EDB5D6C0C0B0F43566606E2626371C9C509DB35F6374E9A3A73 217 5C5FE7E2D65D7BC686C6DFABD7D039C8DEAEA6C656515565ABAAED627BDF8CA8 218 DFF0E7B6B17DF133E4E43FDCBA738FFCC41FA7280C1F31426118D1D889DF2B6C 219 DEAA263F6DA6DC8722A1F153DF9559B56D30D1746E3E43423E88B1E7A6112347 220 0E98A87374FCC75EF74E8E09482DFA1FEF647392177FEC954CF74B04F25363FC 221 535F7CE475EF3869E34B1EBF68C9E2612AE79C9C475E7FD4712AAD1AC3AFA7B2 222 4FA7D5E0BB6B8FD867D25FE7C3AFA5B2CD49FDB7571FB5CAA81EDB203B69D954 223 A221849FAB637BA16392FF634C0B28C4E82B0F48FE1CA3AEDC67F2D13EAFF329 224 FE85F8C8F10EBED1F76E1FBCC7B9F57D155B07C22B38B95E66C714966269500A 225 5C63EE62D18D07B81C958085BC3CF0011C236231CC290AC38CAEC0EE6E2EF402 226 533054C3A583F2AE9EEEEC96B636149557A0943C4B1696BD442951612927CF2D 227 2A4650FC03C81FF38543721E0C82D3B1FAF435F617DBED2B39BC07BBB5B59579 228 064E4F4FEFA194478FE011180E45136F3812563F280D6BCE5EC7203587AAF736 229 D9ECE0F1EDEDEDCC737C7979395F2F8A8B119AF090B03EB84058BD9B8FB1C6DC 230 0FC377DB777DB8D97A97EC4F1AFF12E73F35F5313C6F4430AC63522E0E053CC6 231 DAD37E18B1CB163B8E9CE99CBB61F71C992F86BF23CA3F7D9E7E909E8BD9FA6E 232 B890900D5DBF07587BE61A46EEB6C7462D23989C38D14938FA3E495694FFBBF7 233 EEC1C8EC3416A819E3A8E72DFC4EFC8EDAE300ED13763871CA1C274E9B772E5A 234 FC931C77FEF4F04F7D27A7E560D4969318FFF366286C3D84116A36303A771971 235 7712E0EFEF0F0B1B2B9E7F1941FF8585858CFFA090507C396116BEFADD101B77 236 6AC1E0A41522A363C89A360BE1E1E1B0B2B5A1FE670BFBA7EB90D2D252661C31 237 717710FD30138F9FA4316B5ABAB6A06B0CBAAE65F8D7FEE7B9B8B9B269BFE9EF 238 F9C5C4C4885474743493D33536E1E9BC9BC5E5279DB5B1BAE7EC7AA9DBC6DE0E 239 36F6B612656D67CB3E6571269170E3FE8EF7F9B315143FD8AB6734436997B6DC 240 92DDBA728B77E9CA2DDCA625376FA39A9C9CF246B9952A3B668E9F325DECE7D4 241 3B0E198DBD53C1AABD90F1B2F3744655A7794A45E7F1D8E79D86D71E75AADB78 242 B73B8425A5ACDAB24B64DFE5C83DE0A04F88D29ED42AD6D512729F2BECC289D8 243 3A1CF17809BD130FA1AE73AC59658FF634E25FE467206A878C26DEAE6055EB67 244 D4E25679174C525A71E44A05F44FA761CF9173ECE4D4B42CAD7DDA63445E77E7 245 2AFC639F57F032CDC7552D3E2F3A702495DCC7AF5742DF320BEA969EECE4F4AC 246 1C1FBFAB9366CBCB8B7C8FB2EDA0E18F41654D95FBD36B1159D105C338160EDB 247 1741D52E0C2177D21A2FFB85AE7076F3FA4E4E7E8EC8CF60A76ED799BAEBC1CB 248 36FDDC461CCF69C0D9C44A9C8DA8C5914B2530367FD2FDDB8E63D57753B352F6 249 ED3F305A143F5979D30F7F5EBC51B2FEAC6BEDDA6336DD6A0EBED08FA9C1C133 250 3950D6B0EE0E8E4F29BEECED379BF817F9D9D3E031DF0F586F603EECB04F98B2 251 69F05DD6A1A80AE8DA3CC50A639FEEEB310F4B1CDDBCE566CE9617F7B995CCCC 252 D973DE39E5E431D5313EE3A9F19DDA6EDD73CFB0FCB87F77487266F145771FB9 253 E9B3E4DE9334EFD4750E4EBC9BFF2ACF2EE655F701DB7C2C3F1DD21D782FE385 254 8B97EFEC5912FCF2D72F5B774CF58B7FDC661A5A8A95B6B1DDA18FF25E5C22E3 255 9D2937FB3D69E6BD9AA6CE94DB69CF588657A23B6FA5E51779F85D979793C2AF 256 C0F83FDAA2A13D73DEEA4D729A3ABA9367CBCF79F7BFED4BFCFFAFAFFF55178F 257 B7A0EBD791833F9DDADFF53F2F791F5ADA44D7D12304DAE86BFD2A6EEDCE6BA3 258 AFF5AB587ED0A753FAB37E65FAAFB794C5F53DA5BFEB7F5EFC468888DFFF5FFF 259 FF3DEB7F4B5B1B78F8781179F7535EE0B1ED2D2C541566A2AA208351CD8B5CE6 260 37553A98DFDFE964B66919AF9EDA5286E797EE5FD933173EBBE4E0BB570191D6 261 9A785551869ABA3AD4D6D7A3F2D54B44DA683275D486DA5286D717DA262DF7DA 262 39138106BFE279560AAA6B6A18BE8EF0B575B52822658106CA8C0DB5A58C204F 263 DBA6ACBFDE4AC45C3040797101F33FFFF50DF5A828CEC76DABBDB8AEBB0C8186 264 AB88AD620F9E8E2DF29C168AB21F21E6BC1EEE7A9E46666C00D3EFEACA97C888 265 F245C2A56388B6D34549DE6344DBEAA0A6388FCFD3DFBEA9AE2C67FA59515288 266 CC187FE4DD8F4471EE63943E4B477E0A79F68CF5476559111A9B1A515753C9FC 267 A6118FA731AE6F6C4403517D4303D356714E2A6A6BAB514FDA2CCBCF244C159A 268 58CD60B5B4103533BF19C4E3E976537333472C16EAAA5FA1EC591A1AC9D859C4 269 5F55493E9A1A6AD1DAD68A56D2D73622FA1B4D7CFF1D1D68A8AB06AB9985EAB2 270 E7480F7747FEFD5BA8789E83EAD24294663FC0D3C460D4BD2A256C1B9A1BEBD0 271 D5D9F13A7EC5B92436DA78F9F4096E5BA893F868232DF4321A499BCD0D75C88B 272 0FC01D2743445AAAA3A2201D31763A0CD3EBF8E92BE3EABE85B875460DB5E545 273 68236B321ADBFA5765B8757A077C351589CD2F8CADF0F167E68FDA0CA6BE223F 274 9DF90DA2F68E0E26B6B48D57C486D6519B5EF34768FED2FEB534D5336C57171B 275 6DAC46C49232D1F357C4F943C6467F9389C698F93DACAE4EA64CD4F973D6DAF2 276 8DCFDF335696F85FACD1DE12 14 4C7A1A0000001000000010000000642300000000000078DAED9C075C15C7FAF7 15 318937ED9FDC9B9BA231B9B1D798D84554881A2B5162D4D8222A2A2A52045169 16 0A2AA8A8340195A67404A5281DE9028A8A281D9426BDD743E7F0FBCFEC291E0E 17 E7503479EFBDEFFB0E9FDF6777679EEF3C33CFCE96D95D8E84C45F9732AFEC01 18 4F2996BBFAE8FC967918886F696911ABC1F09D9D9D406D615F9134105F971ECD 19 D8156644A324270E49FEFA22F9C1F4136D4D404D3E57797DF881FAC9F39F1171 20 1E79F1167DF881FA89D67AA022EBB504F874ABDDCCB6FF955D08775412D9CFFE 21 FC3FB7D8C96CBFEE5FDF7EF6E73FC974471FFFC27E44251E1F7B76332743B07E 22 213FCF227C99A5B004F9FEFCF7374E06E37F50BC9834102FAA5FA2FAF99F9C46 23 8E8C01554C4C0CDEC476CC9844084A5C3DFD954F9A940C4109DB88CB174E53A7 24 A680279EADE0FA60D2F4E9E910D650789A66CCC8024F436567CF7E01610DB68E 25 79F3F2C0138F11DE1697162C28044FC2B6E2F27969E1C222F0D49FCDDBF083A9 26 63A8B17E93F47FCACF201306D0A0785169D0BC9191C83A44F1467DF338BC883A 27 8479CAF6CB0BD521C8F358410D9617C50E857F5BFF83EEBFD0BE1C72FC07F02F 28 76EC09F16F301E85F9373B0EDE8E9718C23133501DFF969460B41CF70D9721DB 29 411599570F22DD7A2FB3F4D7598CBBDA8BD03FBB0CB92E5A687EF110DD6D8D40 30 4F0FA36E562D1A3363F0D04A1E1E87E788AC23DEE8679486D932B65DA9B1E8F4 31 3C0FF6F92D601B6D42BBFB19B42547A2B3B11CA93775E17A681A7AB32B18BF94 32 ED8CF600747F06C26F907BD666C67F4F6D293A6DD5D11CEC80F68632845FDA0C 33 9B7D93F875C41B2E45C38B3874A6C4003A4B001B354EDB1FF9837D791F3A1FF8 34 A1A7A5112D5AD2A84DF047C9930058C88FE5F329866B99FE7692764273216024 35 07F85E448FCA0F683B30198D960799FA2A0D3721EBEC6EB437D6E0F4EFA3F9FC 36 536A4FE3747A2DA03E0B509E0EB6D214B42B8E07CB52116CE29B959E8007EB47 37 E2DEB6C9C4940D43D96F5FF3A757317CBBEE4A741C9C8A56C58968DC3D068DE7 38 3632F90DD19E48D83E01C16BBF44C896090C6FB07AD46BDE600513BB9A6B4750 39 B17B2C0AB7FF0B2FB77E8DDA5B17183E51EE9F085BFB1902D67E8E877A1BD1DA 40 504342FC359F0FD45988FACC58263679DB472163F308A46EFC1CD927D7A1D8E3 41 1CC2292BFB4F04CBFE03F9611EC87D148ACD8B3FE1F3C15A739169AB8C8E8672 42 E4B919E3E1FACF1123F719723D8C19FF416B3E63D88C1B67D05C530E3BCD0D58 43 33F7935E63C05FFD7BBCBC7D0AEDF5E5280AF74092FE66C46E1D8F982DE3F0C8 44 6033F2EFDD4453753902AC8E63F5AC0F448E4167A5E98831DE8AC247816823FB 45 A887DDCDA885F497B6F986F616AC12C3F2D2E57D537196C4DA78FD973823FB2F 46 E8AFFA1A3ACB4760EBE24FFBB4F9CF4CED49AEA8BBBA44ACDA933DFB9F2B131B 47 E426820409E8EE7C7D01ED6C4387DF41B43FB4456DFC0DF4CB571700F94FC884 48 3B19284A018AD380D20C86EFAE2B4467AA8FD83A18BE85CC315F3DE37328CB26 49 73B0170CDF43E69FDDF545E878E244C6992344F2A4AD1C96CCDBCA5F0095794C 50 9BAAFD4F3075F0D4E0BA15B5B5B5E8C3937D8DD24C0E5B45E7BFAF80BA1234E6 51 3C44534E2247451968F056464E4E4E5F9EA6F21CC2E671D952A0B182C4B40A64 52 E072447C3487E889E72B72499B0B19BF68241C392ED1DAC879FED0D6CC98B0A2 53 8CFBF2D7967278DA6E86ADE4C493321DAD9CD85091D472DFBC2F6F43CE99E4BC 54 80DA224E9BA95FEA93B2DD1D9CD8B0BBB8FC65D1EDA7E3A6BE8C3386A8EF7616 55 D0D5CEE7C06673F81853D13C6D1F6D37AB8EEBBB85F01D1C9EB68DB6819C0F58 56 E186A2791A271A63C17E53BEBB8B5307D307369A038E8AE6E97EA26DA6FD607C 57 B1F9D730CE3AA70D8D5E7BFBF0AD8936FC63ADC1F137347AEE4693AF0A9AFD8F 58 A239F038596A926D6534DEDC85B208AB3E3C4DD5D5D54CFE60446DFF4DF383B7 59 BD97C19F708F23DC9621CF557AB58377AFFAFA7E7548F79D3CB6DF657FF7AD03 60 B103F0626C072F6156F05E5C9C04E2F7162CBFFF6FC88A9E3F0C9E951862ACFE 61 E392ABDE6A50B9E8AE828BCE4A386BAF8093D672381DFF198EC796E1C6D1A5B8 62 A1B904D78FFC04070D1938A84BC3FEF062D8A92D829DEA42868D72314094B33E 63 229D4F22D2E904221D4F20C2518FDC42EB22FC3A950EEE396823CC9EC84E0BA1 64 76C7116A7B0CB62A528C5F5EEAA1F7DA446C728E6593F3643739EF767775A1AB 65 AB135D9D1DE8A4EA68474707B9A7686F838DB2249C499B9967A4E7CF435E5E1E 66 4E4E4EE414DB0F4BB876AAB6565C3B349FF47739E373D7AE5DB0B6B6C6C68D1B 67 19564F4F0F3A3A3A3876EC188E1C39023535351C3AA484FDFBF763CF9E3D686B 68 6BC155A5794C9C7A487B4D4C4CB061C306B8B9B9717C12BD6E2FCF6F2BE397B2 69 6DAD2C5C3D30978931A7AF9C3673DADB0FDBCA615B5B58B8B27F0EB37F281B14 70 1404233246A32223FBC489C3B608B0CD8CAC1567E13AD9B7344EA74F9F467C7C 71 3CCCCDCD19564F4F97DBFFA338A2A1015555552829D1FE2B92FE2BA085D504AB 72 7D33C9B89061DAECE87803060606F0F5F5E915E336AEDF56AEDF165633C3B29A 73 1B61B96706339E38EDED10E8AB10DBD297653537C052E147662CD2F6464545C2 74 D2D2121111E1BD62FC9A6D7ACD3635A099E8F2EE1F98714CFD9E387182E93F1D 75 47D4A7AEAE2EB4B5B571F4E8516868A893FEAB90FE1F84A2A222141414D0D458 76 0F8B5DDFC3961C03B4CD57AE5833ACBD9D5DAF18BF6E6F23E3B3B9A99E619B1A 77 EB60BE731A39061630ED6D178E537F6C431D1A1B6A61263F953906E838A66391 78 8E273A26AC156733FB96EE1F1A631A27DA578BDDD399369BCB4F83D98EA930FD 79 630AFE82EBFB9B9C0FC53EBF13F53C4FC4F57048FCDBFA17790DFABF811FCCB3 80 3371D7E0C15C3FFBBB860FFED9DD1BF16FDBFFBF989778CBE3E74F4FCE578CE1 81 6061C888AE0F86E1D9D3755BD353FC3ED375E172E1646B6E88A484283205AB83 82 85A116A3DAF24246BC6D5A466DBC9CAEF6AAE380FC7A3C7D10CD94B7B7B118D1 83 D44DAECBDDDC39232F9FDA505BA5DD1BF975D0759A1FEE7D1D05D969A8ABAF47 84 7579118A735218D1759A47CBA80DB515E479751414E4334A89BF0733D2DEE552 85 3F32A2EB348F572EC89A196AE3C2C92330D2514176461A1EDD0F83978305B6FD 86 BA827F5BBC7BF33A268F96511B6A4B19CA9ED753E7C7393A2214994F13A0B473 87 239FE589E6D1326AC37FAF4CD80BFA47515198C5E88EB7272A8AF3C4F2B48CB1 88 E1DA5376E5A219909933050A9BD7C2CFD30DB111C1CC52B00EBA2E58466D2943 89 595E1C68DE2B126B6F577B94BCCAE5D7C163691E2DA336D45630F63FCD9DC2E4 90 D3FD4497BE379D5094F70221776F33A2EB344FD08632827CF01D2F263F312A90 91 BFAC2DCD6324984797D45690E7D571FEA42653BE65DD321C57D9CBE7E93ACDA3 92 65D4469815AC8357A6A5BA1FA52F5319D175E1F28112CF76280C2FA97BA94362 93 1F39BFEC9180BA87FAD0CF3384AD217F263D2664F04A203D3D1D43E519B682B4 94 61A704FCFDFD87C6EFE1F2A584DFF106FC6E2E5F48F8EDFDF3FC5871E345593E 95 9F47D6B7126D26DA44B491683D89A983404C05622528897C629B43944EF49C28 96 892891289E485620A6BCBE5691FC32A222090EFB420C7B9F68F5EB3E31FB7727 97 274EB4AFFCF6667259D25E0939A2B51CBF5472C7E57AC584B6856EF3C4F43595 98 2899C30A96F1D4EF98D8C8651F73FC0E79FFADE7B20F38ED1D322F2710AFD543 99 E7D5EDD539B15ADD3756834D82311DF2F1F36F482626E1A48DC6E02CC5951F13 100 59CE6315ECE9FDD13932EFECFDAE81C772CAD5FA94F3D92D449BA8CD19BE4D2F 101 7621D13C5A7E10B9B9B9E85DFF390EBB81488EDA9CE0D621CC1E20F3DFCB7DF6 102 29C7F60C87FD85681544FAE5B182FE7BD77182C32E2392193CDBBB8E636FC48A 103 8CD54CA2EF691D0A22E23E004B6225319D2C27138DA7DBDB44D6218EA56DA67E 104 197634D137347F93883A8E88DD471CDB6D1C7624D197B47CBD88FDAF2636569C 105 3A36F159F1FBFF80D83873CAD7F7BB1F685E7FFB68A0F2FFE2F4B6F39BFEE6F9 106 6FCC0FE5FB23419FBCF501BED9E9D73F4D4622F2C57D7F23E2D986589EB71CAC 107 7FC17E89FB7E68B0FE85EB1F8A7FE1F9B451EF77416FE35F641A82FF7EF9B7F1 108 3F90DEFAC0139AE7FD19E2C647ECF67F03CF6304D7DFA40D6FC20AFA7D53FE6D 109 7C539DE2FA3EF58675F0B853DC3A065B8FB0BD2037501DA26CFFDDBC609F86D2 110 FFBFE2B814A9BFE0AFCFB97288F6FC77BAE2CEBDC2AC9111F3EE8BFF5C5590E3 111 5D8BB9E546BCE7E402BC91887C516D14F421D2FF00CF6B8DFAF12FD887819662 112 FD0B2EFBBF660CE8DFA89F6BB2D120FDF7774DE7D531907F51D75CE1BE0CC5BF 113 88EBEFA0FD8B6A8BB8F13B58FFE2C6DB60AEFD468338B60671ECF1D230A25144 114 47896289F288F289A2895489BE237A47CC6D0465E7D3CF28899E1359111DE672 115 3644C94477B936A2D2046E79149124D1FB02651F102D238AE0967F22C40E2752 116 A68F4C88A4C5D44FDBBD98DB1F45A1B2AFB9ED3E4BF4D100B74B9789E288FE26 117 90379EE8117D843D88DB2D79A20CA26FDE82CF24FAF62DDA9F20D4FEA1C4AF80 118 E8A098FDE73B88FDD741242566FCCC26F2EB67FCD412B1898288668869276FFC 119 DE272A25AA208AE1F66F39D163A22EFAC931D1D437B85DFE9C7EEE4DD44D9448 120 34F70DEAF891E81E512751D81BF0745FCC2172E74AE20DEBF88AABDE07C3DAC9 121 EF8E315AF9FB2A7D1977A5833F3C3EB179CCE3DDDB27DE9CF1C7A4ED23A4BE1A 122 DE5FA5E34FAD9A3EC66A7DDA26B335B031598ABB8652F03C3203F6F26321B767 123 1A3EDB312EFB8B75DFCC11C58E392E3D6392E92FF5CEEE9B9115A980F450793C 124 F5D98C58DBD5F03F3D1F06FBBEC7D7AA333072F318D6EC55232405D9EFD64E1E 125 BEC24026CBCC6513B253B5515378095579E750F8F428520376E0A1F31AFC6EB5 126 169FEA48E27D8D1FF0B7355F16FE7DFE3FF8C7CAA13DD3E4D758AE4552DC413C 127 2CB042675B025A1BBD5096A58DAC887D88BF210B152B59FC5D7F213E20FD19B6 128 61143E5EFEB9328F37971FEFE3E7B21E1B1F1860FB2B57DC6D4D4671832F4A33 129 3409BF0771D7D7E08EC11C2C3F3C0B53774CC4BB5BBFC3F0955F44F078EB5DE3 130 33BCED7FC18C9893589462822DA55E50287185E97303C4DCF90361A63FE1D6E1 131 69B8B2E64B684D1E8E89BF8CC2F04D5F97F2F96DA3B3FD4DA431C34F09920F2F 132 403AF51AE63C35C6B47B9A387D6905BCB567C366F3BF7056EA53A88F7D070B96 133 8FC00787C655F0F80BB223823DD4A6C2D0481A135C77617A980EA6061DC10CFB 134 EDF0D49C0907B2FFCC567C0E9DEFDF87C677129828FB0D3EB3954CE0CF537FFE 135 42C564F55770DE3B01F30DA431C2520E93ACD7E3A4E234D892BE5AAEFE02A767 136 7D04E5EF86E1F0B712F856651A7EF25BAAC3E37F9DF6C9271765FE5166B2E433 137 C8284CC2A75AF3B171FB789C5FF6394CA4FF8E133F7CC06735C6BD879F2FCDAE 138 D9B1EEEBCF054E1EEF4EFB7CF80EC3991F766D58F8774CFEED5BE8FCF0213427 139 FF0DEAE3DE85E23712D8FFB504C39F9CF9217BC1771FEC7F7798C4BB42E7C0D9 140 933E7BCF4E75F2FBEDCB17FF03AAC456913007890E8D9280EAE8776130EF7F3A 141 E68C7ADF917BAE1A2E743CD1738FDC47C387994A8DFF38E5A795A31A76AEFBB6 142 7BB7C2E4EE5FF64C6A949BF451EAA7EFBF63CEBC5DE0D80A5F4BDF23FA827B7E 143 58C3BD1E1CE64A819BF723D7E6BD7EAEC3EF71AF03FFE09EAF3EE7AE7FC42D1B 144 F69FF4E0EFF71DBFC3D5D395C80D2E64E972D305CE1ECE8C9CDC9DE1E8EE0447 145 37476679832C6FB8DEC075220797EBD8BA6B1BF61F3E80F3A6C6CC377C434957 146 EDAF4151753F34748EE06E983FCE999C1B741D94BD1DE0CDB05449E94F7127F4 147 EEA0EAE0B19411E4075387202B8AA7F20BB923B20E61561C1F93180BD5E36A38 148 7BE9751D94D5D03DC294F5C7C73EBA0F654D15C42725C037C40F270D4FC2E0AC 149 01BC037D983C5A466D44F1F71FC7E190A6326327E84350B48CDA505B413EEE49 150 3C948E1CE2E7F7276A436D294359D5636A50D2181CDBAB0EC25076E1CF8BA0AE 151 A381E3065A43126516AF90466363E35BE96D8FBF61C38A894A88BC25B8F76EBB 152 E8926E0F1B56CA95A8B2122ECBF0678888D195A4CCCC4CD025DD169488B2331C 153 368FCADFD0109096CEC0DDBB7799A5BE3E7A49B08CDA5286C36650856969B131 154 63462C3EFBCC9859AAA975F5926019B5A50C6525249E50DD5755ED446666179C 155 9D6BE0E9D988F8F80AECDBD7C2D78E1DF590932B6196D496321C964E07E21EED 156 DDDB8E952BF3B17E7D3923BABE7D7B8348515BCA70D8295447B85F400F52745E 157 3AE508879D4C75ACA7877E3FDC4962E4061B9BF37077BFCA6CBFCE3BC7DFA6B6 158 94E1B093A8B4BBBBE9F7C22D7C99999D14BB4D6D29C365A9F43A3B596869A947 159 76F6339C39A38188883BCC364F348FB74E6D29C361275219B4B7D793F15CC1D7 160 D1A37BC56E535BCA70583AF59870A6B5B51AB5B5458C0A0AD2B07FFFEFFC6DBA 161 CE13DDA6B694E1B074FA35FE5C4B4B39727393A1A1B19B696B70F04D5455E58A 162 14B5A50C65870D1B4534CEB4A3A30ACDCD258312B5A50C65E9BDC0B061A3ED6C 163 6D6F6128A20CF73E62CEB0615F190F1BF62FF7A1E92B63EE3C8249414141DFBA 164 BABAE6D8DBDB83273B3B3B326E6CE071D3C3321FF922E7FEE498FCE6CA952BBF 165 989B9B5F0C0808C093274F186564A4A3B8A408D1D151F0BAE5D546AEF15AF159 166 F1EF0AF39E9E9EE9CF9F3FEFC9CECE66FE2F292B2B8BF9DEE1DEBD7B4878104F 167 8EC338BC7CF912014101ED1EB73D8E57D455F79A839036A3A9A9092C168B115D 168 AFA9A9417272321E3D7A04FFBB77F030211E498F1371EB96677B5EDE8BB582BC 169 8B8B0BFF5CDAD0D0C088FE6F5452521272F30BE01C12072DA75018FBC5C1C4F5 170 3622E212F609FBE7B1BC7A9A885EE4E5C33138121A57EDF1EB39436C20B15C7A 171 C9019B1D629E9D0D4AE3CF5FE9FF0BD0FF25ACAAAAE2ABBCAA06192FB3E113E0 172 8698045F58845AC33997DC1B785F84DA7537ACBF1AFECCD82B7002CF7F656525 173 F34E98C6298D9C639D4223E0EE6387A7E9E178F1EA01AC636CE05A1208CBC8AB 174 088D0E849A4B10D65A069E15E4299B9F9707DFF86468DA3A222AEE165E123633 175 3F0A9631576097EF03C360330444DEC68D90406CB2BE5BE8E673770AE5699B5F 176 BD7A8552B2BFADC2D370E4AA0D92338390551889B4DC7B300FBB0CB3340FE8DE 177 368477883B3CC303B0D13AB0C7D2C54D96F2151515C823BEF3F35EC0EA5E1294 178 AED8E249EA1D64E48593EB6D284E799E87D1030768B89D80AB1FB9070CF4C336 179 9BBB6C6B17273ECFFC5F1B1943FEF149D866E182A068773C4D0B4164C24DE838 180 EA41E3CE59289AA9C1E59623EC034370DA33A8E1D66DAFC5EEEEEE282B2B4369 181 69298A8B8B515858085D8F7BD07675476CA22F7C83AF42CB440DA7AF9D829583 182 05C2A24211FA3815D77DFC62EED9990CF7F3F33B4EC66A5D78F83D848686F684 183 8684F4387BDEEAD97EE17A8FBCA90D0E9B9C82899335AE937BA0ABFE01700A4F 184 C0B3BC2284C43F2C7FF4ECF10EBA0FC8985C9C94F4F0B7C4C4845FEFDFBFFF6B 185 425CDCAF36379CD7AD3474355C6F7EAB70EB95809EDD7677D8DA2E77BB97689A 186 B3759D83919C5782B047C95D035DDF9D7CBCA798BBDC94BDE2E2B2C6FF8EDFCA 187 35872F1D1EB7EB4CBBF99DFBA86C60FDA9DF11CC99334793FEAF4C7F9A3871E2 188 2671FCECD9B3D5972C59622EAA6CEEDCB9C7A4A5A52FD03ABEFAEAABD9A26C66 189 CD9AA5BA74E952CBD15F7DF2E3169989A778929C32E2371EFFCE3BEF0CA7757C 190 FCF1C75F0BF323478E9C3776EC5859CA6F969960C093E4640EBF75EBD6782929 191 A953CB962DB3A27508F36BE68E563920FBFD35991F46EDE8F3606AD4A8858435 192 E04998DFFAD3C4D33E27D6C068D782386176DBB66DA704C57CF122C0933E32AC 193 2871790341F5E5279CEA8F179584DB4FE34CEDCFEE5A102F982FEADB3F513C37 194 7ECA347E3FFD304A7EA0B1268A27FB6F3EDD7FA262D65FFC84C78FA898F517BF 195 C18CDFC1B47F30C78FA0FEACE356E6A7259F689D34586CEF1FB133ADA1BB2DB6 196 A203FEAFDAE0FEB2057699CDB04E69C26522D74C569BB24DD0CEFD9A27162F58 197 2CC37F0E7FEC84C1FCE21676477C45674F5C552792EBBB91D5C4C6CB56A21636 198 D21ABB1151DA09B3A74DD08EADEF097CD9D2E91110A1B058E6A74F662D92F9D8 199 DC375C3EBCACA33BB9B60B251D3D28EEECC1CBF61E64136511A5B4B19141944B 200 D66FE5B4E2606035620B5B3B0F6B9D5CBCEBE8C94591159D6DD46F11614B095B 201 DE05D4B281D61E8E6AC87A7A5B0FA29ABB997ACC1E36E04478355B46FE98F49A 202 83DAD28ED92C762A29CB25EDCD277695DD401551255765A4BE1C5216D2D8058F 203 862EC49475608747317BB4AC9AF44F7BB5A42D9F37B1B3586C3C6EE9C67D5637 204 9E90F5441283B8EA2EC4567521A482DC83D775C1AAAA1DFA15ED48A8EFC216A7 205 57ECAF57A8482FDBA7257DF959133B81D82612D6B084D8BC68834A741394231A 206 7130BC117F04D5E368660B14F25A71A1AA03C105ADF8C3E5157BF41A35E9AD6A 207 7A925E39AD558EE9CD784EFC1E7FD18AA5B7EBA092D30235627F90ECC303841D 208 EF500DB967CD0825ED370CAB826E40395B66BBA6F40F92327F3B6A1F246B9658 209 DFE54D6C832A3BB1C697F084552E6EC521AADC164C77AA866D413BDCC838D8EC 210 5088E0CCA65A95632716D0FDAF72FCE49C84A2B65AC3983AD83D6BC2DEC046A8 211 BE6C852A194354CA647DEDAD5A1847D661CBF5423825D6D5D97885CA9231C4BC 212 27A04B77FF08D9F8C2D63AEDC052C8B996627D6C13D6E5B7633569075D9F6C9C 213 8775D62F703BB9BECEDA234476F60269C1770C4C1DAEBEC16B22535ED529997A 214 42C5CE07CB6D6E42DACC015B742F416AFB71F8C665D6397805AE9927D59BE525 215 49A945EFEB1B9BCA9EB8789965E7E4046B22D32B5771EEFC39FC2EAFC8523BA6 216 274B6DFA3B9696AE929D7CC1CAB62938241819E96988898EC675073BEC553ED2 217 347DD6BCC9031D8B0A070E4D0A8A7DD8A0AC718CBD5751912DBF6B177B97E201 218 B6FBDDD086AD3BF74C1A889F2B29F5A1C2FE4352D37E9C293D66EC58E9D14493 219 A67D2FBD4341516AF63CC90F45425366BD2BB17ECF48A239DCE5DC7E9623187B 220 6E1A3B6EDCF0691AA7A67CECF6F0DC44DFE4C2FF714F3426CBA28FDD12E976B1 221 C0F2FC449FE4571FB93D3C43EAF892C72F5BB17CB4FC653BFB71DE4F3BCFA7D4 222 608C7732FB424A2DBEBBFD947D31F5F572CCED64B63129FFD7ADA76D12BB4E6F 223 1D367DD52CA2AF09BF48C3F25AE7749F6798ED9B8F09371F936501C6DF7CC42C 224 2778BC5ECEF4C9C74736F7F1ADB67BC7C843F66DEFCB5B5E21BCB49DE30D7654 225 7E0956FA27C131EA0196DD798C1B117158CA5BFA3D864D683446DB4560B4DE4D 226 583DC886965F1246293B7452DED1D599DDDADE8EC2F20A94907BC9FCD2329410 227 E5977096D98545F08F7D0CA9D39EB89298039D80546CB8709BFDC55EEB2A0EEF 228 C26E6B6B63EE815353537B29E9E953B8F88540C6C01D3684D5F64FC1C64BDE18 229 A178A5FABDED16FB787C474707731F5F5E5ECED7ABA22204C53D21AC07AE1156 230 EBEE336C34F6C29883D6DD1FEE303F30EC67E57F8AF39F9CFC0CAE774219D626 231 211BC77D9F61D3052F8C3D60897DFA17BB166D3DB850E28B31EF88F24FEFA71F 232 A7666381B613AEC56542D3EB31365DBC8D7107ADB14D4D0F0667CF76118E3E4F 233 1A26CAFF83870FA16774014B144FE0946B187E277EC71FBA02F5B356387BDE18 234 672F18772D5BFEB32477FCF4F24F7D27A66461FCEE7398F2CB0E482B1CC75845 235 0BE85DBE8198FB71F0F1F181898519CFBF84A0FFFCFC7CC6BF7F6010BE9C3A1F 236 5FFDAE8B6DFBD5A073CE0CE19151644E9B8190901098595A50FF0B84FDD37948 237 494909D38FA898FB887C928E67CF5398392D9D5BD039069DD732FC6BFF8B1D9C 238 1CD9B4DDF4F7FCA2A2A2442A32329259D23936E1E9B89BCFE5A75FB2307B68EF 239 78BDC7C2DA0A16D696FDCADCCA927DDEE4623CE126FF15CFF31748CB7CA0A2A5 240 3757F680BAE48A839A92CB0F684A2EDDA326B9789BA2A4A4DC36C9B5F2FBE64D 241 993947EC7BEA7DC7F526DDAF60D55D4B2BEBBA9056DD659C54D17526BAA04BF7 242 F6D32E250BF78E2BC10949EB771F10D97649720D38E611287B28B99A75AB985C 243 E7F2BB7136BA1EFA2E65D03AFB044A1AA75BE40FA9CF26FE45BE03513CAE37ED 244 5E05AB463BAD0E61E5DD30486A83FECD0A685F48C121FDCBECC4E4940CB5C3EA 245 13459E771749FFEDB05BC02AD567D5AD1EAF3AA19F4CAEE3DE55D036CD8092A9 246 2B3B313523CBC3EBD6F4055252229FA3EC39A6FBA37F6973D591D43A84577443 247 37868593D685D865158CC0FB294D37BC82D6D83BB97D2729B550E43BD8597B35 248 661D785CD6AE9DDD8433598DB8145F854BA175D0BF5E8C13C6CF7B7EDB77BAE6 249 417246D2E123472788E267C86DFF61A7ED9DE22D971CEB369DB6E851BCE209ED 250 A85A1CBB98053965F39E80D8A4A21BEE5E0B887F91EF9E464EFC7EF8161DE3D1 251 273D82E50C031EB08E475440D3E205D69CF0E8F18E7A526CE3E42E396F8194B8 252 F75612F3162C7CE7BC9DCB2C9BD8B41727EED7F5685E7E89D5677C7A0213D38B 253 6C9D3D24E7CC977CAFBF71A7A4716CDA83DCCA1CABA8CA9EA396B9587D21B0C7 254 EF61DA2B0737CF05F3FBF1CB9FBF28EC9BE515FBACDD30A8046B2DA37B829EE6 255 BCBA4EFA3B4F72C17B8319F78AAA1A33EFA5BC64E9DE8CEC0A4BC92D74F1F296 256 921C845F81FE7FB45B597DDEE20DDB25553534672C905AF8EE7FDB47FCFFAFCF 257 FF772D9F6242E7AFE3467E3A6BA8F37F5E723FBEB299CEA3C70AD431D0FC55DC 258 DC9D57C740F357B1FC884F670E65FECAB45F6B258BEB7BE650E7FFBCF88D1511 259 BFFF3FFFFF6BE6FFA6961670F17023721FA2DCC0633B5A59A8CE4F47755E1AA3 260 DA57D9CC6FAA7432BFBFD3C5ACD33C5E39B5A50CCF2FDDBE7968113C0E48C253 261 451AE1E6AAA8AC28456D7D3DEA1A1A50555986700B55A68CDA505BCAF0DA42EB 262 A4F96EFBE7C14FE757146424A1A6B696E1EB095F575F874292E7A723C7D8505B 263 CA08F2B46ECAFA68AD45D4351D9417E531FFF3DFD0D8808AA25CDC335381B7E6 264 2AF8E9AE27B632BD78DAB7F0CB6A28CC7C8AA8AB5A78E07A01E9D1BE4CBB6BAA 265 CA9016E189B8EBA71169A589E29C6788B4D4406D510E9FA7BF7D535355CEB4B3 266 A2381FE9513EC879148EA2EC672879998ADC2472EF19ED83AAD242343537A1BE 267 B68AF94D231E4F63DCD0D48446A286C646A6AEA2AC64D4D5D5A081D4599A9B4E 268 986A34B35AC06A6D256A617E3388C7D3F5E696168E582CD4D754A2F4650A9A48 269 DF59C45F75712E9A1BEBD0D6DE8636D2D67622FA1B4D7CFF9D9D68ACAF01AB85 270 859AD202A4863823F751182A0AB25053928F92CCC778111F80FACA12C2B6A3A5 271 A91EDD5D9DAFE357944D62A38EB217CF71CF4489C4471D294137D044EA6C69AC 272 474EAC2FEEDBE922DC54091579A988B2D260983EFB4F5B0EB70E2F45D84545D4 273 9517A29DCCC9686C1B2A4B1176611F3C556588CD3AC65678FF33E347712E535E 274 919BCAFC0651476727135B5A4725B1A165D4A6CFF8111ABFB47DADCD0D0CDBDD 275 CD463BAB09D1244FF4F81571FC90BED1DF64A231667E0FABBB8BC91375FC5C32 276 377DE3E3F7A299E95FF27F84C7B5B496681D3BF6F2BCA1618FE129837C7D3D2D 277 67D34B67154CCF1B4B999A997D278E3B75EAD42784B53133BDD455F0321B4D64 278 9C3F89BE034BDD9DC8497F86C40771F0F5F1A6DF6727FEF1C71F82DFB04AD8DA 279 DACA58595995060705A1B4B80859A949303EF2070C146460716036D8ED0DF417 280 419877E7B191A1D05055DEF7FAFF3F4D46383B3BB764656621F9C903589D3D0A 281 A96F247068D5B7781C720336CAF3C1EEA0BF9DC946415E2E2A0BB3A0ABAD19FE 282 FA7F3B75D4E99CAFA4A418FACA5BA0A5B01A0D15AF1075DB1616AACB61B7FD43 283 74359690B96909622342919410093747BBF675EBE4E80B7C8993274FC6D37780 284 6964EE594F96ED2D4DE864D582DD5A8FA2D418049D9343734D313CBD3CE1EA68 285 8FC4D87B789C108B83070E18927B12A9BB77EFF654565691F96B1EB232D2909B 286 9D8E3272FE6A20C7713BAB919C036A1116120C331313B85CB7435A523C8A725F 287 D0DF344B26D71163FAEEAFA0A0002F5FBC40516101F25F64A2382F1B95E4BCD7 288 505180E6AA22F8FBDEC6F9F367E172C31EE9C90F91F2FC19B66FDFDE79FAF4E9 289 6CFACE95BE7F4C4F4B47DECB1C1417E6A1383F87F02FD1585E80965A72FC05DD 290 C139234378B9BB90F97026FCFCFC40EEA39A49ECD9745E4CDF9BD69373555969 291 09C397BDCA4555711EEA09DF46F8A8B040181A9E21FBFF361E3F7902729D05B9 292 DE9A696969859B999931BFD775FBB63799A367926397F35B62F43CC3AA273168 293 28477C74182E5B5C66E6DF72727220D75AFAFDAEC4EAD5ABDF575252DABA72E5 294 CABB1B376E64EDDDBB97A9CBD7D70F69A43F745E4F532999D7D377B59B376F06 295 B9174C21F70A7DE6B08B172FFEF0B7DF7EDBB06EDD3ABF2D5BB634ABA8A8405F 296 5F1F1E1E1EB8666303928FF9F3E717CF9C39F38B818E215959D9F7495DB29B36 297 6DBA4A7C66FFF2CB2F5D844B9B3E7DFAB77FE6B1FABFE275F47C 277 298 } 278 299 end … … 282 303 Top = 200 283 304 object AExit: TAction 305 Category = 'File' 284 306 Caption = 'Exit' 285 307 ImageIndex = 2 … … 326 348 end 327 349 object AAbout: TAction 350 Category = 'Help' 328 351 Caption = 'About...' 329 352 ImageIndex = 3 … … 331 354 end 332 355 object AHomePage: TAction 356 Category = 'Help' 333 357 Caption = 'Home page' 334 358 OnExecute = AHomePageExecute … … 406 430 end 407 431 object AFullScreen: TAction 432 Category = 'View' 408 433 Caption = 'Full screen' 409 434 ImageIndex = 24 410 435 OnExecute = AFullScreenExecute 411 436 ShortCut = 122 437 end 438 object AKeyShortcuts: TAction 439 Category = 'Help' 440 Caption = 'Key shortcuts' 441 ImageIndex = 25 442 OnExecute = AKeyShortcutsExecute 412 443 end 413 444 end -
trunk/Core.lrj
r174 r177 23 23 {"hash":124338510,"name":"tcore.afileimport.caption","sourcebytes":[73,109,112,111,114,116,46,46,46],"value":"Import..."}, 24 24 {"hash":131549534,"name":"tcore.afullscreen.caption","sourcebytes":[70,117,108,108,32,115,99,114,101,101,110],"value":"Full screen"}, 25 {"hash":122803571,"name":"tcore.akeyshortcuts.caption","sourcebytes":[75,101,121,32,115,104,111,114,116,99,117,116,115],"value":"Key shortcuts"}, 25 26 {"hash":190444780,"name":"tcore.applicationinfo1.description","sourcebytes":[118,67,97,114,100,32,102,105,108,101,115,32,109,97,110,97,103,101,109,101,110,116,32,116,111,111,108],"value":"vCard files management tool"}, 26 27 {"hash":51995065,"name":"tcore.selectdirectorydialog1.title","sourcebytes":[83,101,108,101,99,116,32,100,105,114,101,99,116,111,114,121],"value":"Select directory"} -
trunk/Core.pas
r176 r177 7 7 LastOpenedList, ApplicationInfo, PersistentForm, ScaleDPI, Common, 8 8 Translator, DataFile, VCard, Menus, RegistryEx, Theme, FormMain, 9 Registry, VCardFile ;9 Registry, VCardFile, FormKeyShortcuts; 10 10 11 11 type … … 15 15 TCore = class(TDataModule) 16 16 AAbout: TAction; 17 AKeyShortcuts: TAction; 17 18 AFullScreen: TAction; 18 19 AFileImport: TAction; … … 66 67 procedure AGenerateExecute(Sender: TObject); 67 68 procedure AHomePageExecute(Sender: TObject); 69 procedure AKeyShortcutsExecute(Sender: TObject); 68 70 procedure ANormalizeExecute(Sender: TObject); 69 71 procedure ARemoveExactDuplicatesExecute(Sender: TObject); … … 86 88 RecentFileRegistryContext: TRegistryContext; 87 89 FormMain: TFormMain; 90 FormKeyShortcuts: TFormKeyShortcuts; 88 91 procedure FileModified(Sender: TObject); 89 92 function FindFirstNonOption: string; … … 277 280 {$ENDIF} 278 281 {$IFDEF UNIX} 279 ExecuteProgram('/usr/bin/xdg-open', [SelectDirectoryDialog1.FileName] );282 ExecuteProgram('/usr/bin/xdg-open', [SelectDirectoryDialog1.FileName], []); 280 283 {$ENDIF} 281 284 end; … … 329 332 begin 330 333 OpenWebPage(ApplicationInfo1.HomePage); 334 end; 335 336 procedure TCore.AKeyShortcutsExecute(Sender: TObject); 337 begin 338 if not Assigned(FormKeyShortcuts) then 339 FormKeyShortcuts := TFormKeyShortcuts.Create(nil); 340 FormKeyShortcuts.ImageList := ImageList1; 341 FormKeyShortcuts.MainForm := FormMain; 342 FormKeyShortcuts.SourceComponents.Clear; 343 FormKeyShortcuts.SourceComponents.Add(Self); 344 FormKeyShortcuts.Show; 331 345 end; 332 346 … … 496 510 if Assigned(ProfileImage) then 497 511 FreeAndNil(ProfileImage); 512 if Assigned(FormKeyShortcuts) then 513 FreeAndNil(FormKeyShortcuts); 498 514 end; 499 515 -
trunk/Forms/FormCompare.pas
r162 r177 151 151 SaveStringToFile(TextRight, TempFileRight); 152 152 if FileExists(Core.Core.CompareTool) then 153 ExecuteProgram(Core.Core.CompareTool, [TempFileLeft, TempFileRight] )153 ExecuteProgram(Core.Core.CompareTool, [TempFileLeft, TempFileRight], []) 154 154 else ShowMessage(Format(SCompareToolNotFound, [Core.Core.CompareTool])); 155 155 end; -
trunk/Forms/FormMain.lfm
r174 r177 229 229 Action = Core.AHomePage 230 230 end 231 object MenuItem18: TMenuItem 232 Action = Core.AKeyShortcuts 233 end 231 234 object MenuItemAbout: TMenuItem 232 235 Action = Core.AAbout -
trunk/Forms/FormMain.pas
r176 r177 23 23 MenuItem16: TMenuItem; 24 24 MenuItem17: TMenuItem; 25 MenuItem18: TMenuItem; 25 26 MenuItemColumns: TMenuItem; 26 27 MenuItem3: TMenuItem; -
trunk/Languages/vCardStudio.cs.po
r174 r177 243 243 msgstr "Domovská stránka" 244 244 245 #: tcore.akeyshortcuts.caption 246 msgid "Key shortcuts" 247 msgstr "Klávesové zkratky" 248 245 249 #: tcore.anormalize.caption 246 250 msgctxt "tcore.anormalize.caption" -
trunk/Languages/vCardStudio.pot
r174 r177 233 233 msgstr "" 234 234 235 #: tcore.akeyshortcuts.caption 236 msgid "Key shortcuts" 237 msgstr "" 238 235 239 #: tcore.anormalize.caption 236 240 msgctxt "tcore.anormalize.caption" -
trunk/Languages/vCardStudio.sv.po
r174 r177 244 244 msgstr "Hemsida" 245 245 246 #: tcore.akeyshortcuts.caption 247 msgid "Key shortcuts" 248 msgstr "" 249 246 250 #: tcore.anormalize.caption 247 251 msgctxt "tcore.anormalize.caption" -
trunk/Packages/Common/Common.lpk
r162 r177 43 43 <License Value="Copy left."/> 44 44 <Version Minor="12"/> 45 <Files Count="3 6">45 <Files Count="37"> 46 46 <Item1> 47 47 <Filename Value="StopWatch.pas"/> … … 201 201 <UnitName Value="FormAbout"/> 202 202 </Item36> 203 <Item37> 204 <Filename Value="Forms\FormKeyShortcuts.pas"/> 205 <UnitName Value="FormKeyShortcuts"/> 206 </Item37> 203 207 </Files> 204 208 <CompatibilityMode Value="True"/> -
trunk/Packages/Common/Common.pas
r173 r177 55 55 function EndsWith(Text, What: string): Boolean; 56 56 function Explode(Separator: Char; Data: string): TStringArray; 57 procedure ExecuteProgram(Executable: string; Parameters: array of string); 57 procedure ExecuteProgram(Executable: string; Parameters: array of string; 58 Environment: array of string; CurrentDirectory: string = ''); 59 procedure ExecuteProgramOutput(Executable: string; Parameters: array of string; 60 Environment: array of string; out Output, Error: string; 61 out ExitCode: Integer; CurrentDirectory: string = ''); 58 62 procedure FileDialogUpdateFilterFileType(FileDialog: TOpenDialog); 59 63 procedure FreeThenNil(var Obj); … … 63 67 function GetBit(Variable: QWord; Index: Byte): Boolean; 64 68 function GetStringPart(var Text: string; Separator: string): string; 69 function GetEnvironmentVariables: TStringArray; 65 70 function GenerateNewName(OldName: string): string; 66 71 function GetFileFilterItemExt(Filter: string; Index: Integer): string; 67 72 function IntToBin(Data: Int64; Count: Byte): string; 68 function Implode(Separator: string; List: TList<string>): string; 69 function Implode(Separator: string; List: TStringList; Around: string = ''): string; 73 function Implode(Separator: string; List: TList<string>): string; overload; 74 function Implode(Separator: string; List: array of string): string; overload; 75 function Implode(Separator: string; List: TStringList; Around: string = ''): string; overload; 70 76 function LastPos(const SubStr: String; const S: String): Integer; 71 77 function LoadFileToStr(const FileName: TFileName): AnsiString; … … 98 104 implementation 99 105 106 resourcestring 107 SExecutionError = 'Excution error: %s (exit code: %d)'; 108 100 109 function StartsWith(Text, What: string): Boolean; 101 110 begin … … 108 117 end; 109 118 110 function BinToInt(BinStr : string): Int64;111 var 112 i : byte;113 RetVar 119 function BinToInt(BinStr: string): Int64; 120 var 121 I: Byte; 122 RetVar: Int64; 114 123 begin 115 124 BinStr := UpperCase(BinStr); 116 if BinStr[length(BinStr)] = 'B' then Delete(BinStr, length(BinStr),1);125 if BinStr[length(BinStr)] = 'B' then Delete(BinStr, Length(BinStr), 1); 117 126 RetVar := 0; 118 for i := 1 to length(BinStr) do begin119 if not (BinStr[ i] in ['0','1']) then begin127 for I := 1 to Length(BinStr) do begin 128 if not (BinStr[I] in ['0','1']) then begin 120 129 RetVar := 0; 121 130 Break; 122 131 end; 123 RetVar := (RetVar shl 1) + ( byte(BinStr[i]) and 1);132 RetVar := (RetVar shl 1) + (Byte(BinStr[I]) and 1); 124 133 end; 125 134 … … 136 145 end; 137 146 end; 138 139 147 140 148 procedure DeleteFiles(APath, AFileSpec: string); … … 154 162 FindClose(SearchRec); 155 163 end; 156 157 164 158 165 function GetFileFilterItemExt(Filter: string; Index: Integer): string; … … 177 184 if FileExt <> '.*' then 178 185 FileDialog.FileName := ChangeFileExt(FileDialog.FileName, FileExt) 186 end; 187 188 function GetEnvironmentVariables: TStringArray; 189 var 190 I: Integer; 191 begin 192 SetLength(Result, GetEnvironmentVariableCount); 193 for I := 0 to GetEnvironmentVariableCount - 1 do 194 Result[I] := GetEnvironmentString(I); 179 195 end; 180 196 … … 219 235 end;*) 220 236 237 function Implode(Separator: string; List: array of string): string; 238 var 239 I: Integer; 240 begin 241 Result := ''; 242 for I := 0 to Length(List) - 1 do begin 243 Result := Result + List[I]; 244 if I < Length(List) - 1 then Result := Result + Separator; 245 end; 246 end; 247 221 248 function Implode(Separator: string; List: TStringList; Around: string = ''): string; 222 249 var … … 494 521 end; 495 522 496 procedure ExecuteProgram(Executable: string; Parameters: array of string); 523 procedure ExecuteProgram(Executable: string; Parameters: array of string; 524 Environment: array of string; CurrentDirectory: string = ''); 497 525 var 498 526 Process: TProcess; 499 527 I: Integer; 500 528 begin 529 Process := TProcess.Create(nil); 501 530 try 502 Process := TProcess.Create(nil);503 531 Process.Executable := Executable; 504 532 for I := 0 to Length(Parameters) - 1 do 505 533 Process.Parameters.Add(Parameters[I]); 534 for I := 0 to Length(Environment) - 1 do 535 Process.Environment.Add(Environment[I]); 536 Process.CurrentDirectory := CurrentDirectory; 537 Process.ShowWindow := swoHIDE; 506 538 Process.Options := [poNoConsole]; 507 539 Process.Execute; … … 511 543 end; 512 544 545 procedure ExecuteProgramOutput(Executable: string; Parameters: array of string; 546 Environment: array of string; out Output, Error: string; out ExitCode: Integer; 547 CurrentDirectory: string); 548 var 549 Process: TProcess; 550 I: Integer; 551 ReadCount: Integer; 552 Buffer: string; 553 const 554 BufferSize = 1000; 555 begin 556 Process := TProcess.Create(nil); 557 try 558 Process.Executable := Executable; 559 for I := 0 to Length(Parameters) - 1 do 560 Process.Parameters.Add(Parameters[I]); 561 for I := 0 to Length(Environment) - 1 do 562 Process.Environment.Add(Environment[I]); 563 Process.CurrentDirectory := CurrentDirectory; 564 Process.ShowWindow := swoHIDE; 565 Process.Options := [poNoConsole, poUsePipes]; 566 Process.Execute; 567 568 Output := ''; 569 Error := ''; 570 Buffer := ''; 571 SetLength(Buffer, BufferSize); 572 while Process.Running do begin 573 if Process.Output.NumBytesAvailable > 0 then begin 574 ReadCount := Process.Output.Read(Buffer[1], Length(Buffer)); 575 Output := Output + Copy(Buffer, 1, ReadCount); 576 end; 577 578 if Process.Stderr.NumBytesAvailable > 0 then begin 579 ReadCount := Process.Stderr.Read(Buffer[1], Length(Buffer)); 580 Error := Error + Copy(Buffer, 1, ReadCount) 581 end; 582 583 Sleep(10); 584 end; 585 586 if Process.Output.NumBytesAvailable > 0 then begin 587 ReadCount := Process.Output.Read(Buffer[1], Length(Buffer)); 588 Output := Output + Copy(Buffer, 1, ReadCount); 589 end; 590 591 if Process.Stderr.NumBytesAvailable > 0 then begin 592 ReadCount := Process.Stderr.Read(Buffer[1], Length(Buffer)); 593 Error := Error + Copy(Buffer, 1, ReadCount); 594 end; 595 596 ExitCode := Process.ExitCode; 597 598 if (ExitCode <> 0) or (Error <> '') then 599 raise Exception.Create(Format(SExecutionError, [Output + Error, ExitCode])); 600 finally 601 Process.Free; 602 end; 603 end; 604 513 605 procedure FreeThenNil(var Obj); 514 606 begin … … 529 621 procedure OpenFileInShell(FileName: string); 530 622 begin 531 ExecuteProgram('cmd.exe', ['/c', 'start', FileName] );623 ExecuteProgram('cmd.exe', ['/c', 'start', FileName], []); 532 624 end; 533 625 -
trunk/Packages/Common/CommonPackage.pas
r162 r177 14 14 ScaleDPI, Theme, StringTable, MetaCanvas, Geometric, Translator, Languages, 15 15 PixelPointer, DataFile, TestCase, Generics, Table, FormEx, FormTests, 16 FormTest, FormAbout, LazarusPackageIntf;16 FormTest, FormAbout, FormKeyShortcuts, LazarusPackageIntf; 17 17 18 18 implementation -
trunk/Packages/Common/FormEx.pas
r176 r177 82 82 procedure TFormEx.DoClose(var CloseAction: TCloseAction); 83 83 begin 84 if 84 if (not (csDesigning in ComponentState)) then begin 85 85 PersistentForm.FormFullScreen := FullScreen; 86 86 PersistentForm.Save(Self); -
trunk/Packages/Common/ListViewSort.pas
r172 r177 358 358 List.Clear; 359 359 List.AddRange(Source); 360 end else List.Clear;360 end; 361 361 if ListView.Items.Count <> List.Count then 362 362 ListView.Items.Count := List.Count; -
trunk/Packages/Common/PersistentForm.pas
r176 r177 336 336 end; 337 337 Form.OnWindowStateChange := OldHandler; 338 FormFullScreen := True; 338 339 {$ENDIF} 339 340 end else begin
Note:
See TracChangeset
for help on using the changeset viewer.