Issue #1169: separate Firebird network types from those for Interbase, and provide fitting dll files in library pulldown

This commit is contained in:
Ansgar Becker
2022-03-09 20:54:49 +01:00
parent 5be13ca849
commit 0e8d77bbba
3 changed files with 535 additions and 15 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@ -293,7 +293,9 @@ type
ntSQLite,
ntMySQL_ProxySQLAdmin,
ntInterbase_TCPIP,
ntInterbase_Local
ntInterbase_Local,
ntFirebird_TCPIP,
ntFirebird_Local
);
TNetTypeGroup = (ngMySQL, ngMSSQL, ngPgSQL, ngSQLite, ngInterbase);
TNetGroupLibs = TDictionary<TNetTypeGroup, TStringList>;
@ -339,6 +341,8 @@ type
function IsAzure: Boolean;
function IsMemSQL: Boolean;
function IsRedshift: Boolean;
function IsInterbase: Boolean;
function IsFirebird: Boolean;
property ImageIndex: Integer read GetImageIndex;
function GetLibraries: TStringList;
function DefaultLibrary: String;
@ -759,6 +763,8 @@ type
//FLib: TSQLiteLib;
FLastRawResults: TInterbaseRawResults;
//FMainDbName: UTF8String;
class var FIbDriver: TFDPhysIBDriverLink;
class var FFbDriver: TFDPhysFBDriverLink;
procedure SetActive(Value: Boolean); override;
procedure DoBeforeConnect; override;
function GetThreadId: Int64; override;
@ -1570,6 +1576,7 @@ const
PrefixRedshift = 'Redshift PG';
PrefixSqlite = 'SQLite';
PrefixInterbase = 'Interbase';
PrefixFirebird = 'Firebird';
begin
// Return the name of a net type, either in short or long format
Result := 'Unknown';
@ -1590,6 +1597,8 @@ begin
ntSQLite: Result := PrefixSqlite;
ntInterbase_TCPIP: Result := PrefixInterbase+' (TCP/IP, experimental)';
ntInterbase_Local: Result := PrefixInterbase+' (Local, experimental)';
ntFirebird_TCPIP: Result := PrefixFirebird+' (TCP/IP, experimental)';
ntFirebird_Local: Result := PrefixFirebird+' (Local, experimental)';
end;
end
else begin
@ -1628,7 +1637,7 @@ begin
Result := ngPgSQL;
ntSQLite:
Result := ngSQLite;
ntInterbase_TCPIP, ntInterbase_Local:
ntInterbase_TCPIP, ntInterbase_Local, ntFirebird_TCPIP, ntFirebird_Local:
Result := ngInterbase;
else begin
// Return default net group here. Raising an exception lets the app die for some reason.
@ -1741,6 +1750,18 @@ begin
end;
function TConnectionParameters.IsInterbase: Boolean;
begin
Result := NetType in [ntInterbase_TCPIP, ntInterbase_Local];
end;
function TConnectionParameters.IsFirebird: Boolean;
begin
Result := NetType in [ntFirebird_TCPIP, ntFirebird_Local];
end;
function TConnectionParameters.GetImageIndex: Integer;
begin
if IsFolder then
@ -1765,7 +1786,10 @@ begin
if IsRedshift then Result := 195;
end;
ngSQLite: Result := 196;
ngInterbase: Result := 203;
ngInterbase: begin
Result := 203;
if IsFirebird then Result := 204;
end
else Result := ICONINDEX_SERVER;
end;
end;
@ -1802,13 +1826,18 @@ end;
function TConnectionParameters.DefaultLibrary: String;
begin
Result := '';
case NetTypeGroup of
ngMySQL: Result := 'libmariadb.dll';
ngMSSQL: Result := 'MSOLEDBSQL'; // Prefer MSOLEDBSQL provider on newer systems
ngPgSQL: Result := 'libpq.dll';
ngSQLite: Result := 'sqlite3.dll';
ngInterbase: Result := 'IB';
else Result := '';
ngInterbase: begin
if IsInterbase then
Result := IfThen(GetExecutableBits=64, 'ibclient64.dll', 'gds32.dll')
else if IsFirebird then
Result := 'fbclient.dll';
end
end;
end;
@ -1896,9 +1925,11 @@ begin
rx.Expression := '^libpq.*\.dll$';
ngSQLite:
rx.Expression := '^sqlite.*\.dll$';
ngInterbase:
rx.Expression := '^(gds32|ibclient|fbclient).*\.dll$';
end;
case NetTypeGroup of
ngMySQL, ngPgSQL, ngSQLite: begin
ngMySQL, ngPgSQL, ngSQLite, ngInterbase: begin
Dlls := TDirectory.GetFiles(ExtractFilePath(ParamStr(0)), '*.dll');
for DllPath in Dlls do begin
DllFile := ExtractFileName(DllPath);
@ -1918,10 +1949,6 @@ begin
end;
Providers.Free;
end;
ngInterbase: begin
FoundLibs.Add('IB');
FoundLibs.Add('FB');
end;
end;
rx.Free;
FLibraries.Add(NetTypeGroup, FoundLibs);
@ -2856,16 +2883,39 @@ begin
FFDHandle := TFDConnection.Create(Owner);
FFDHandle.OnError := OnFdError;
FFDHandle.DriverName := Parameters.LibraryOrProvider; // Auto-sets Params.DriverID
//FFDHandle.DriverName := Parameters.LibraryOrProvider; // Auto-sets Params.DriverID
FFDHandle.LoginPrompt := False;
// Create virtual Interbase or Firebird driver id, once
if Parameters.IsInterbase then begin
if not Assigned(FIbDriver) then begin
FIbDriver := TFDPhysIBDriverLink.Create(Owner);
FIbDriver.VendorLib := Parameters.LibraryOrProvider;
FIbDriver.DriverID := Parameters.LibraryOrProvider;
end;
FFDHandle.Params.Values['DriverID'] := FIbDriver.DriverID;
end
else if Parameters.IsFirebird then begin
if not Assigned(FFbDriver) then begin
FFbDriver := TFDPhysFBDriverLink.Create(Owner);
FFbDriver.VendorLib := Parameters.LibraryOrProvider;
FFbDriver.DriverID := Parameters.LibraryOrProvider;
end;
FFDHandle.Params.Values['DriverID'] := FFbDriver.DriverID;
end;
// TCP/IP or local?
case Parameters.NetType of
ntInterbase_TCPIP: begin
ntInterbase_TCPIP, ntFirebird_TCPIP: begin
FFDHandle.Params.Values['Protocol'] := 'ipTCPIP';
FFDHandle.Params.Values['Server'] := Parameters.Hostname;
FFDHandle.Params.Values['Port'] := Parameters.Port.ToString;
end;
ntInterbase_Local: FFDHandle.Params.Values['Protocol'] := 'ipLocal';
ntInterbase_Local, ntFirebird_Local: begin
FFDHandle.Params.Values['Protocol'] := 'ipLocal';
end;
end;
FFDHandle.Params.Values['Database'] := Parameters.AllDatabasesStr;
FFDHandle.Params.Values['User_Name'] := Parameters.Username;
FFDHandle.Params.Values['Password'] := Parameters.Password;
@ -2885,7 +2935,7 @@ begin
FServerDateTimeOnStartup := GetVar('SELECT ' + GetSQLSpecifity(spFuncNow));
if Self.Parameters.LibraryOrProvider.Equals('IB') then
if Parameters.IsInterbase then
FServerVersionUntouched := ''
else
FServerVersionUntouched := GetVar('SELECT rdb$get_context(''SYSTEM'', ''ENGINE_VERSION'') as version from rdb$database');
@ -7161,7 +7211,7 @@ begin
obj.Database := db;
obj.Comment := Results.Col('RDB$DESCRIPTION');
if self. Parameters.LibraryOrProvider.Equals('IB') then
if Parameters.IsInterbase then
begin
if Results.Col('ViewContext') = 'PERSISTENT' then
obj.NodeType := lntTable

View File

@ -16945,6 +16945,241 @@ object MainForm: TMainForm
21DCE09ED36E36E0A76E35975B74D0415B11F93FEDD2997558D6CC7C00000000
49454E44AE426082}
end>
end
item
Name = 'server-firebird'
SourceImages = <
item
Image.Data = {
89504E470D0A1A0A0000000D494844520000006400000064080600000070E295
54000000017352474200AECE1CE90000000467414D410000B18F0BFC61050000
00097048597300000EC300000EC301C76FA86400001BFF49444154785EED5D07
7C1445DB9FD97235BD9142124A08096008A10602848E5445942A2845407C05C1
82A828EAEBAB48B1BCA27C82D850414069D2A4482886DE6B42124A202424A45F
D9DDF99ED9BBC3CB650381DC8500EFFFF7FBDFEDCC3CBB33B3CFF4B618D56CE8
1806356DD7966FDAA2391F1514C8D4F3F06482D42AE4C7715877E1A288DF78AB
680AC8FD48859F7C4233B46F1FF527924488C1804A8A8B494ECE75E94A5ABA98
B67397F9F4A54BE251103B0C2CA6F23511354D21BCB737133F7CB0A667D3A65C
E7B0DA6C33F85705F83356678472F32474E6AC8852CF8B68E72E135AB0B0F44D
B0FE37756BDC887B7DF433DA0FA21AB2A8513487424359C45863284A08A5A408
68FF41C17CEE9C7078FB0EF3B6BF924C1BC06917D0240BD500D4048530B54398
0E639FD50E8B8DE1FB436EF0F7F5B128C0642268EF010125C18BDFBBCF2C1E3D
2E9C4DCF108F4A123A01CEA9C0B3C0034002A4A0F169018CA6841C15DBBC191F
D73C8E0B486CAF42F1AD79A4565BA24CE08ED36704B4798B2977CB76D3EAB5EB
8D3FC173B78293280B3C6CC018F98D18AA99B6F43BCFD49C0C3F420A036466C3
F5A2F91EE4B13E6AC1DB0BEF01D1F7805D811EF4BEBB00D54003E0181F1F66E9
9303D4B9DF2EF0207997FC6FFA49792CD987BCF3BA3EA3417DF62D900DA4373E
1450AB709DB75ED5CFDFB9D1BB44BA012F233F80987202C88A1F3D49DF47D502
A4605A8C8C02FAC937381F2A60377737BC70E8539ABC0D2BBD889867090765F1
157FB2F0737743423CBF10E422E53B1E44A85438E49DD7F40B8E24F998087D01
C0EBA97EE4FD37F504EA8A3410791D18240B571FB4C0A79B36E1767F3ECB9D14
5D865C630D9B0089E4A7AF3D848436FC77205357967E40A09B385A3B73DF666F
68F3406481D7CFF991699374C4CB13D3F2FF2920274BDE5BB4090F657F9FF58E
9B587C1114630DABE96A00F9BFB9EE868611EC2C90B9DB62B366A05302DF67D5
F79E19E25588E0357F6284727BF64C37E2E7C39C04E7C78135A151E188D8C8FA
EC1F8B3FF3209670836220ECB967FDC82B13759950A4D204747F816590EFBFA7
E97FBA76DC97102893299356799147A2B93C70FE179097056B36BA7569AF3A79
788BF7CD3850EE5AE345DAB6E07F07F7FBA3E26FDF8AEFB2F917CF4B8496C7C0
D2F37E64F2582D6159B4129CEFB7D68B4AAFC333DE7B556F306558E2435992E2
475E7D5E970509AFAF55AE46827961A47646C61E1F915C8080034F6FF721CD1A
7305E036C22272DF22A64B82EA58DA6E1F395E36AE5AE4298587C8754B4DA803
FF01F4293C66BFE1B6D600E52C4987C002572FF224DE9EF838383F284D476D68
30B368C3F79E37E348790E125DBBE63CED50FA5AC4EE31A0820EFFF5BFEE4709
346109144FF4FF93B7F484E3D01A7076B7483D38D06AF0F8FFCE7433DD8C2F30
FF882F79B297FA0C38DFDBC4D728826DB4F507CF8B049AB1364E9FA0A3C3185F
016B56367622A044E8F6D60BBA02899608D6789B4EF99109433559E01C6791AA
66C44673717B967A65933310202B5F19ADA5CAF81858139BB3CE46CB97476BAF
4BA7FF893FBD86777003DCDA5A44AA094D1B724DF72EF3CA2127212056BEF382
9C33E65A241E1AC44D1FA7BB6EFF1E24E0ABA3B5F9E0D6DA22E262D4ABCD46EE
FCC1F31A390E01B0F26BE8EC4136A6430C0F43CE7044FCDC57F5C5F6EF433AE6
47260ED1E482DB2316111741AFC5811BBEF448215089D9B8FD1B0FA256E16DE0
4C07ED1E4AA878D47FE53C77D1FEBD980FFA92413DD417C139D422E57CA817CF
74DB430E8187565EDEE44D82FD990C70F3B7883CBC080E60A69F5CE175F3DD50
16EEF22109CDB883E0ACB348391133C66A1789FBC0A30316D2EBAEAD793AD316
6F9178E8C12436E7D795D2CEA3F51D51A6AFF126E181CCCF5699DBA25265FE90
EEEA67E6BFA65FECE5FE8FF8A7BF18D0E4B9C56FC3E5BB161BE7222196EB3520
513DC1D30D47491252971A49415E21B996992D5D38744638B7FF94705C22F26C
E125CB1D3502FE33C6688FCD7C4E57CB6A96B1618F19F59D52305110D17CAB55
85B8AD42C26A310DD7CC71DF1F13C1B959AD505AA688629FCE3F5C504C5A8251
B0D83A0F5D5AF0BDBF7BDB6D4D88BF6D46DC01D09ECBBE21A17DA70474E2BC48
15B46D75927973B1816C02D76C8BD0BD81568D076CFFD26345AB4665BB61AFCF
2F29FDF0FB52DAF23A66B151C6ED14C27EF7967EE7889EEA3656B38CC7A61549
AB924CD46E9FC5C6B998FBA2EED7970669065A8D95C2F57C8236ED350B7B4F0A
7FAFFCCBF4FB852CE937B03E6F71BD2DE8EC648EE5B2EAE815CFAF5D33CBBD37
F3CFDA0C643411D47162E1A1E49302558AD9625B1E76B794C7E8DEEA17077702
654860B072CB5E335A9D64FA164C2E51060504CACFDECFCAD0178AD3215D54DC
BC7FE912CE2CF19CBD76967BCAEBC3B5871AD7656780442CB0A2C4E7D1B60997
0EFF0D2DC6AAE38F3DE6977ED96C32D9874FCD61F4E9245D336891BD220B5500
D6FA5F0E6E5A5CFB8BC9BA15A17E8C4A5ED30124F0E021EF16975CCE9106804D
A12CE802B488E4FA748EE51B513F4FA489E8B94F7DD0375B03D1C2B5025ABD3D
171516131419C2CA91B485CD9E1C9474E08EBBC4F181E3FA693A756BC18F8F0C
659F75D3E0E8D44C510D750F1DE22805A2E691DC63339FD50E5DB2D94427CDF6
533B2720F74A8E1438A29BBA154B9381355CB5FD1894934FDA269F127E021BDA
A32F870A8BAC3913744B5E7A5233D46A94B1162AA77E6F14CE81CB972D364E05
1D2D8DF6D0E1E0368DB9511B3E72EF412D37EF37A38D99A3518FEE8FA2D0D050
C4B11C5ABF713DFA7EF167E8B9AE57D1D83E6A2A56695CCB93D0F62382947249
3C0E09EB707C633EA663532E367CF08DFF82339D3C73166AFF30DD2D65585755
9900E61610143B367FC5A56C49B148565448C3DA6CCB4DB3DC92431D2AD50E53
0A0D3B8F09F5E132D3625335F01CAA3BE651F598D6D1DC63750399E886A12CF6
F5C08896BD368F69E2BA784D42F0F250E675095D81FEAF89EA4E1D8436EF3882
7E9DA1456E1A8BECDD22EDAA84EA3F9DBF002EC75B6C9C835EADF96FD6BCEFF6
ACE34BFE6485914CF9AAA43D5CD2457A65A0A890AF5FD2AD1FDD53DDD36A94B1
EF8C805ABF58F80D5C8EB6D854099EAF0FD67C38A8A36A4C4C3D48F22EC05F47
05F4C56AA3181DC6B0D1612C8A0A6551BD2006B9EB709948435314BDBBA494BC
BFC430068C347ECE44F31D73DDF727342E1B450354F0B1E30BB79DBD2C76B65A
DD443985D40F62E277CC76DF1D645D3D68C3E8792568F1266373B8A43DCFBB46
881F53FFB3F1BA0D8FB7E52394938373700CEA9E51F38AD71C3827D2A9635A5E
37849C1711E0C984D7F2C6817A0D76370B88A4658957A05CA77337B3814E6FC2
4F1FAC39F0FE486DB921F9CF5719D1A4AF4A12E1F22F8B8D05E55EC9FCE775CB
C7F7523F6135CA80F63DAA3D22FF507E09A9D2583FC6C8FBF737DDF6F76DCDD7
B35AB914B4B84B3E2DA0EFB7988E2EDA6C7C1714409543ADAB0D0D829929C7E6
7BCE51399403254682A2C615ACBE9423F5B75AC928930D343CAE97D8847BCCBE
B946B91A2A7350C60F54A62A78ED09CDDB7D5B82321C9EEF2A62609B480ECD9F
A08BD9F591C7F26EB1F2546B04B0DA702E53FAEDAFA3D0ED70089B8EC7E8E944
551F309599652CA390497DD563A2821816899088ECB86237147A082DB748DD35
B8B60DD9118ECFAE2EB6A8C7A0756FEA13DF1BAA3904A9B54CEBD1C5483B9422
9E500AD398AE2A866311ADBB6EC25E215C4214BC30074D1A8D086D3D2AD07A83
0E25570521B5BD196FC7E7572769B7E58D27346EBFBEACFF31C013BF0FB62EAC
C5FEC1C154619B5278EAFA33A85B537E38986EAE53BBA9908840A67387282E44
5E8C6FC7DDA70474A398ACA7325584E946114D1970758FD9378EC7BFBDA27F23
D89BF91C6C5CAE9475FB859D2525CA711FD89AA7EB99E9EA7E19371532B6B37A
80BB0AC2E6A0C5EDC7E486072D7BAB8AAB3B4E08698ECFBF578C8FE0D0CF9374
13BD74986E7770298A8DE4D0D174F0D4210C94FD9BF348ABC274E443864D212C
D41DFD9534B8E7AC40E73C9281550599B5CAF8F2F23D6649C91F1B0DD0FA3874
5E442BFE36A3C55B4D08E4D179E8B829C95695ED1B7068CE70ED1B602AD3AA74
015252AF88254A61F0D162D4218AA52B20E5612C39BBEA54382E65AEFB8140CF
B2B957825C1638B1E0604E21A1FD0FA740C3A391EF0CD02C98DA4BAD66ADC9E1
CC1509FDB0CB44924E8B8507D2C4E41213A1634A749DD375A0069ACB4DFBC5F1
23E60ED384D172D7D9E83FAF2473CD4173145CBA6C7CEEF311DAE313BBA91A5B
8D65F0F13A237AED17039DCAD82FC76E701BBE53209D7C72C84EE959120265D0
4920A7C16046DF4D5B6A68FFE8ACE293FB532189803F33571AC40F56191393CE
087EA08CEE20361D48174DAC052E2704BDB5EA8039AAC747C5DF4233B25C38AB
CA37FBAA8341E92F80C965806E438692DF949DA3E44E4A27FA232BA479389BA8
949D4E5DA677A053F4C7C9D8F7E70921AEEDBB455387CC2FB986C9CD51E70AE7
0900A52959D2E869CB0C9B95C25A15B60C6751C786DC04305538FA5D55408326
5BC96FCAA6B559E4EB8669AFDDA290104FDC524973A9B4EC86F28FFEB8004641
427397269BEBFE9C6C1E05E62B16EB5B42FAED80F9BDB350C42985B72AEC1FCB
D1D5212E5BE0566420794AFE52D2FC0199826E56951552BBAE0F534BA9E372F1
3ABD03D1C91B57A204B818784E36DD1E472E6443B814C25B152642050F908B0D
57A0D4480C4AFEDAD838880900B150C6478F631AD28AD24E633666E5D30B7495
FED4144043A0767DDFF2F55D5549DF01CFBA6E611B84B8CC0CA2231B07C9A565
0CD32D8A8BA0DD0FD9C156AE59AFF34A08ED84D0659135066FF6544FA9EB0D09
C82E9C657897761A78A48F0EBB6C4391BB1AEB95FCB5D9C99902FAE74C841F13
715388FEDB5D979AE4130E6ACA2907FAC989AA4FFED54135DA319C6558153B4B
71EE12D472C30115FA0B76722243A83EE3A7C3A1E504AC1444521394E13BB819
FFCA9AB1BAB3B3FB6926F9689C5F5C511A21A6502228CE733B03816E4C7D257F
6D0CD063A4E1A00EF154A300A54A8612A20E17F7049A46B598011FF755AF487A
417779C970CDACDE516C3043CFC35008A733782E0B529F2877465D01AE961EC5
28F96B2307710BF26002181583FC953446C933D5BB803AC00DB799D155B570CD
28EDD5BD2FEA564CEDA01AD02E9C55D3790DA5F03993AB8F09B4262D337BE72C
A858D4AC4508EBA6E4AF3DBD75D89FE111F690CB3505EA794C15E2F22DCC3141
4C8F0503343B0FBCA8DFF34E57F5E8DE919CA78EAE9F5108932B586A4068C1DF
A60B605A07743AC6B4E27BD5D2DD3E3E6E3C7267388CD44ADAA2F4D662AA0C97
9D5E50C79B6936BFBF66DB9FA3741BC6B6E0DB85B8B9A67EB81DE72599D0C51B
848EFABAA2CEC4EDC3B9414AFE3A52CD6268EC49900314B44519445F906BF696
6B26C5F3B3378ED4EE1BDF824FF4A315B582FFD5C174E8FC7EF497898ED7D1CE
A9D311EE85DB76AAC3462BF9ED4828143846920828052A1605867BC80A09A33F
CE02B4EAEA7CF7B866CF9C1EEAA90DBC31ABE46F759140653A61954128349271
1034FA5A9C8EC9F1AAC901F4881B05FF1D2911C230A288CC8E59C7C60696B6B1
D3160534F4651A2F1BA8D9FD740C17CB401894FCAC4E2ED867461B53C48FC0E4
D4116D1B02DD7093DE11ECE34A7E2B51109189310BA8C831EBD8D8D897A14B77
14C7F0EF143E5A1C36FF51F5A6C4303648C9AFEAE6E92C094DFB532EAA5CB2BF
85627A3BD57F223CE9A211305482252664604A4D245F495B94015A8C22BC1967
ECBBE66777562DEB14C6062BF953DD3440D53DFC77435181910C031B97747E3B
86B17D0645737D94FCAF88370C24972932A26B4ADAB231AE16130357B414BC6B
8C69CA4D1DD6886BADF4FC7BC197FF34A28357A58960725547D0F3B5D6FC17FE
F47C4705FF95488059C52487C92E96321D2B177BB60F61E8EAED321B76EE1001
A39AF06FC89D1985E75737979D34A32F0F9A698BEA7B1A245760663BD5173DEB
B0614AFE57C4825209E519C81526ED064953D2988DDDC2E461613AAD7A5798DA
9C9FD2A616E3A6F4ECEAE63968E24ED86C3A0CAFC065D3B543A2B871FF8AE586
29F97F2BA6E741A8104A63922E8929D0D2022D29B381078362FD19BAE4F16EA0
ED1EC68E557A6E75B3146A8A216B8D85900A07830D9D14733A1282D9C4B75BF3
9F79F177DEC13D974B2FD079E67211397E3E0F0C0E1AB367EF3A6C13B8A2AB32
EE08ED83D9C71383591FA56756375FDD614207AF4974DEDC25F546231F26664E
826A65A407A352F2FF763C91232BE404ED689C387A4D82BE48D932CD9E432338
3AF27BC7EB6187346087F174C058E199D5C9AD1744F4E53133DD2BBEC41232E7
A281276EFC5547D5A696FED85BC9FFCAF0F035896AE418554849460139AE948D
6C8CF6C2A863303B124C77B22AC3B38937D345E979D5490952DFD45DA67C88F3
64B0713AE2FC98568B3BABB7270432B594FCAF0C690BEB50B6444FE92E94BBE2
87B3A5DD4AD9C89EA31B42AB0155FE8CC1601D4E68E90B2D3485675527B75F12
D1911C896E57BB06742A7A87B1031727AAB6B6F567FC94FCAE2CCFDF20E84211
D90926CB32A055E9C2F6BC529A75C050019FACC341058FE997082A85F6814C23
F9987585675527F7428F1C404FCB7626D4931A73731624A8963DE2C5E895FCBD
136E834403D8417F6485149AD1D6ED97A11E71D09C3DE9C4C8F3D13CDDA8D801
785B0469712DA5E75437F5F2BE64E721DA93895FD251B5F7E396AA29C16A8C95
FCBC536EBA44BFDD8036032D0A01E41ECC11F7285536F67CAE014B7349A5C67E
340C8294A3FC9CEA64BF10080887EEE854082578A970EC47CDF9A57F7455ED1A
52878DA153AE4AFEDD290D6682B65C91E8989ABCDCCAA610B43C5D5C69A40B39
153468231D3F99DE84EF087FFD80B704B41918A5675437C3B518CD88E19F0353
B91DAF95409D7EB5D9490BDBA8920FF6561F7C259A7B0A9EE7945C61E36628AE
F28C841E0322C33E3FD75EDD5195DE2784BD654B8A2AB6EB5663EAF62C89F64D
0C16DBF298D490FB6C5E73DE991BF1EF1A1064F46DAA685C7E41FC69F355719D
4010FDD20E5DBA6A0B3FDDE9EE0FA55B9D76FE4C74C70026AE813B9310E38523
1FF1664003AEC3D05D26F24B8648A738E47359CAF8352992DB342F8EEF663556
88C3D0916CF7A7F1835211D1BD158A185997FD60716B15FDE2418D428E91A0B3
8504651B08314A48A0558C9E455C8006E33A7A8C7CE8AA41576AC00E792682C2
571B76150928C16A55B65F71BA80984686B303DD692869B2AA8081D07C12096A
B33D5BA2AD17C5531D7CA1CC1D11C67557BAFF5E52C760140AC558943B831B7B
306C2377868D7063709006232D3DB842E11E5771E17911ADCE94E807648E0065
DCAC4328F2CDE4B79F3384AB8E158F125F8FE4F8CEFE0CFD1897E261C927F2C9
5591AE3952B8F77F24D061256841AA403724FD6A796316945108C0F46DBA389F
0EC4295540F6E4E1B98B9AF191615AFC35D894CBE4594672F15A051B1DFF4784
D6664AE86401A127CCC9A712D9E0A810741C847EBC20162975601C190ED9FC9B
587E1094C1D3C0C61169E7E9AE5B85FB1E76D263AE3E3A2B5045D01388CAA09C
4200D7BFCE10BF28BD4D13D8C6CE3E0CFAAC09FF3E543B43C0C61E99E945A4C2
F9FA87997F5C91D09E5C89E68E72C3398A4DDC4C03391CA442E35A79628D5265
E4C866EE18438FB8EF9F39D221B0B16DBC21095ECC80782F1CAC74CFC34ADA27
1F7AD85C70D5287FEAA9DCBC4C457D8E9273C5040D0964BAD25689D2831DD9D6
9361350C1EB02557A22D063A7289EA6971ABDE7E4C9C92FCC3CA45D011FCFA92
F40E98E8819DE550612730D72C1F7737A4AB37E3A3F46025B6F362383F1E0FDC
9227A54323E2283C23E4F910B60F56907D18791DFA1D838E08E78A44F90337B4
002B875BF5CA85830524B593173334940EDB2A78A0C456B46DAF631EDF9E47C8
6523D932C09F1D5F8B4E692AC83E6C7CE18C4876E54B74A24F2E4194702B8520
81A073A9A52872901FFB88BC6A44C1132546EB30CE34914EC905E4E3166E7864
333D53A9BAE841E61FD725342D55A0A7B9DEF20B12B75408458681EC80F4FD74
274FECAEE45145BC2120B42247DAD540833DBA7BE12825998785D9D0AFEB7F42
C82810E54F055638FE47715B85004AF61490E32DF47858033AFEAFE0A1127DE0
C99F664AD72E9BD09E09B5D8DEAC82CCC340DA311F7C5A100F16113A425E6151
6583523FA41CA0E8DA38F9BCF89FF4DBCC2ADA3398C3088AABEE1946B26E7B1E
1D2B50967BD0F9DE0511ADCF93E85121F214EDED50991C222357407F1D2F41F1
03BC98FAF23E37BB5450112F9A90EF8E42B2B09E1AB74A74634294641E64AECC
95D0A40C71195C567AEABBD20A01903423597BC9441EEBE7C1F8C959CB21008E
F4875CF255B69493654607C7F8B1DDE53DC70A720F22938B087A3255483648F2
D14F955ED05D6E50B012A8373980D9353B980DACCCCC4DFBB3C2F9DDC5A4C3B2
BA6CDA135E8CCBF72BD6049C3410D4354548818448E739E8B1E695C69DE4101B
F2FE2E265BA1E3F754271DA3554A1DF684DE8FF7DA02B25183B1C763EE4CB492
CC83C47346821E4D152F649AE529E3CBC03BC2DDE4101B5A4DF76736BE5B8BF5
BAD5434AA0628B3A27ACBF2A9059C9F5B86DCDB455F1B266E3345546BA78E982
99506554F6309D32B89B1C62C3E5A412B2394F4003BAEA18BDBC454D81B48C2A
9650C4D662F219D421B1BDF44C6D25B9FB9DFBA005DA2B4348B92CC8270A55F6
BB25E5E08CE41A35D88359B7A01653CFADECD9FD3741D771C6A4096BB245343F
298C5BDF9CEEBA7D80B0BA484223AF88FB0A2479354E954E4FAA4A0EB121E7B8
912C4D2A25F11DD528CC9BBE6B87D4439774F01845AE2D268BAF8B24E8493DAE
FF200C38D2A5591F42D376E235E937C820F4C870FABDF82AC1190AA128BE28A0
1F7F2B26FEF538DC224AE1432B712A8CFF2C252D36979271A12C7AA6990ACB0B
E3EF57E6426B657896287E994F664035F922D83A65AFA2B314422142965DF76B
11390D81ED96A0C21A955D04681D13ABC2014B8AC9F53D06B2B6A706F7F4A7ED
663B99FB855B213BF4CD922E251B09ED63D0AD71D4C52970A6426440C84EEC35
929FFE28214DEAB1B87E7DBB2545C150C740C5DEF6F75232EB801169FB6B9926
7AEB4DF7030B20574CCD93D04B79D252F8A3F505FD4C9253E1748558919F25A1
1F7F2E21E7CF0B24A1198FF572DB182215AFC2CC5901F5DC6424CF1C329166FD
D4384CFE408E43E46B12695DB1B484A081D7C58B5B8C640418FF0D2E65568B38
0BAE52880C08F891A366B4F0BB12C2E74B28AE298B399A237AA8B15BB21975DC
6A22830F9A51FCA33C0E91BF4D6A7D0135893B4D048DC823A59F14910FF389BC
90E338D065A0E9B6BA50C79F416F8ED2E21113B50C4F176E0FCA970E6D359341
2D79FCE5F71E4C974897268F3B439299A0FF1413F32613F906F442BFA4502D5F
14AD4E85D810AAC368F240151E35508DBD7E3192B49F8C64482083867CA0635E
1CA1C62E5DDC7C2BD099A3159023BE2C25457B0442BF47350FE8EA6372CBE05E
C59D82965E839BB0F8992C89B4C826A8379855BD78FCC55B1A5CAF156D3A5703
E8B445B240D0CFA088E566720CEA3EBA12932E91AD729FE26E702F15628FBA40
FAE9537A183E3DB1755C4F1E4F19CEA3B03EA018B925E644D02FCFEFA0B36E02
429B0492922EC9DFA6FA057818486B8F7B869AA21025D0E9939E9E180DEAC0E2
1EAD18E41F07754C14349D4320D49519C7A78B2F2FC3EB4D91083A0559E130A5
48328F4B6817E822099C37026F3BAD5A9DA8C90AB1079D0FA30717D0CF663452
23542F18A3205F8CFCF418B9F3086B418085F72D9810311612549C43D0F5AB04
658352E807F8E960DF69205DC4579933E6EF1110FA7F1C2F8A6483B809ED0000
000049454E44AE426082}
end>
end>
Left = 593
Top = 339
@ -24924,6 +25159,241 @@ object MainForm: TMainForm
21DCE09ED36E36E0A76E35975B74D0415B11F93FEDD2997558D6CC7C00000000
49454E44AE426082}
end>
end
item
Name = 'server-firebird'
SourceImages = <
item
Image.Data = {
89504E470D0A1A0A0000000D494844520000006400000064080600000070E295
54000000017352474200AECE1CE90000000467414D410000B18F0BFC61050000
00097048597300000EC300000EC301C76FA86400001BFF49444154785EED5D07
7C1445DB9FD97235BD9142124A08096008A10602848E5445942A2845407C05C1
82A828EAEBAB48B1BCA27C82D850414069D2A4482886DE6B42124A202424A45F
D9DDF99ED9BBC3CB650381DC8500EFFFF7FBDFEDCC3CBB33B3CFF4B618D56CE8
1806356DD7966FDAA2391F1514C8D4F3F06482D42AE4C7715877E1A288DF78AB
680AC8FD48859F7C4233B46F1FF527924488C1804A8A8B494ECE75E94A5ABA98
B67397F9F4A54BE251103B0C2CA6F23511354D21BCB737133F7CB0A667D3A65C
E7B0DA6C33F85705F83356678472F32474E6AC8852CF8B68E72E135AB0B0F44D
B0FE37756BDC887B7DF433DA0FA21AB2A8513487424359C45863284A08A5A408
68FF41C17CEE9C7078FB0EF3B6BF924C1BC06917D0240BD500D4048530B54398
0E639FD50E8B8DE1FB436EF0F7F5B128C0642268EF010125C18BDFBBCF2C1E3D
2E9C4DCF108F4A123A01CEA9C0B3C0034002A4A0F169018CA6841C15DBBC191F
D73C8E0B486CAF42F1AD79A4565BA24CE08ED36704B4798B2977CB76D3EAB5EB
8D3FC173B78293280B3C6CC018F98D18AA99B6F43BCFD49C0C3F420A036466C3
F5A2F91EE4B13E6AC1DB0BEF01D1F7805D811EF4BEBB00D54003E0181F1F66E9
9303D4B9DF2EF0207997FC6FFA49792CD987BCF3BA3EA3417DF62D900DA4373E
1450AB709DB75ED5CFDFB9D1BB44BA012F233F80987202C88A1F3D49DF47D502
A4605A8C8C02FAC937381F2A60377737BC70E8539ABC0D2BBD889867090765F1
157FB2F0737743423CBF10E422E53B1E44A85438E49DD7F40B8E24F998087D01
C0EBA97EE4FD37F504EA8A3410791D18240B571FB4C0A79B36E1767F3ECB9D14
5D865C630D9B0089E4A7AF3D848436FC77205357967E40A09B385A3B73DF666F
68F3406481D7CFF991699374C4CB13D3F2FF2920274BDE5BB4090F657F9FF58E
9B587C1114630DABE96A00F9BFB9EE868611EC2C90B9DB62B366A05302DF67D5
F79E19E25588E0357F6284727BF64C37E2E7C39C04E7C78135A151E188D8C8FA
EC1F8B3FF3209670836220ECB967FDC82B13759950A4D204747F816590EFBFA7
E97FBA76DC97102893299356799147A2B93C70FE179097056B36BA7569AF3A79
788BF7CD3850EE5AE345DAB6E07F07F7FBA3E26FDF8AEFB2F917CF4B8496C7C0
D2F37E64F2582D6159B4129CEFB7D68B4AAFC333DE7B556F306558E2435992E2
475E7D5E970509AFAF55AE46827961A47646C61E1F915C8080034F6FF721CD1A
7305E036C22272DF22A64B82EA58DA6E1F395E36AE5AE4298587C8754B4DA803
FF01F4293C66BFE1B6D600E52C4987C002572FF224DE9EF838383F284D476D68
30B368C3F79E37E348790E125DBBE63CED50FA5AC4EE31A0820EFFF5BFEE4709
346109144FF4FF93B7F484E3D01A7076B7483D38D06AF0F8FFCE7433DD8C2F30
FF882F79B297FA0C38DFDBC4D728826DB4F507CF8B049AB1364E9FA0A3C3185F
016B56367622A044E8F6D60BBA02899608D6789B4EF99109433559E01C6791AA
66C44673717B967A65933310202B5F19ADA5CAF81858139BB3CE46CB97476BAF
4BA7FF893FBD86777003DCDA5A44AA094D1B724DF72EF3CA2127212056BEF382
9C33E65A241E1AC44D1FA7BB6EFF1E24E0ABA3B5F9E0D6DA22E262D4ABCD46EE
FCC1F31A390E01B0F26BE8EC4136A6430C0F43CE7044FCDC57F5C5F6EF433AE6
47260ED1E482DB2316111741AFC5811BBEF448215089D9B8FD1B0FA256E16DE0
4C07ED1E4AA878D47FE53C77D1FEBD980FFA92413DD417C139D422E57CA817CF
74DB430E8187565EDEE44D82FD990C70F3B7883CBC080E60A69F5CE175F3DD50
16EEF22109CDB883E0ACB348391133C66A1789FBC0A30316D2EBAEAD793AD316
6F9178E8C12436E7D795D2CEA3F51D51A6AFF126E181CCCF5699DBA25265FE90
EEEA67E6BFA65FECE5FE8FF8A7BF18D0E4B9C56FC3E5BB161BE7222196EB3520
513DC1D30D47491252971A49415E21B996992D5D38744638B7FF94705C22F26C
E125CB1D3502FE33C6688FCD7C4E57CB6A96B1618F19F59D52305110D17CAB55
85B8AD42C26A310DD7CC71DF1F13C1B959AD505AA688629FCE3F5C504C5A8251
B0D83A0F5D5AF0BDBF7BDB6D4D88BF6D46DC01D09ECBBE21A17DA70474E2BC48
15B46D75927973B1816C02D76C8BD0BD81568D076CFFD26345AB4665BB61AFCF
2F29FDF0FB52DAF23A66B151C6ED14C27EF7967EE7889EEA3656B38CC7A61549
AB924CD46E9FC5C6B998FBA2EED7970669065A8D95C2F57C8236ED350B7B4F0A
7FAFFCCBF4FB852CE937B03E6F71BD2DE8EC648EE5B2EAE815CFAF5D33CBBD37
F3CFDA0C643411D47162E1A1E49302558AD9625B1E76B794C7E8DEEA17077702
654860B072CB5E335A9D64FA164C2E51060504CACFDECFCAD0178AD3215D54DC
BC7FE912CE2CF19CBD76967BCAEBC3B5871AD7656780442CB0A2C4E7D1B60997
0EFF0D2DC6AAE38F3DE6977ED96C32D9874FCD61F4E9245D336891BD220B5500
D6FA5F0E6E5A5CFB8BC9BA15A17E8C4A5ED30124F0E021EF16975CCE9106804D
A12CE802B488E4FA748EE51B513F4FA489E8B94F7DD0375B03D1C2B5025ABD3D
171516131419C2CA91B485CD9E1C9474E08EBBC4F181E3FA693A756BC18F8F0C
659F75D3E0E8D44C510D750F1DE22805A2E691DC63339FD50E5DB2D94427CDF6
533B2720F74A8E1438A29BBA154B9381355CB5FD1894934FDA269F127E021BDA
A32F870A8BAC3913744B5E7A5233D46A94B1162AA77E6F14CE81CB972D364E05
1D2D8DF6D0E1E0368DB9511B3E72EF412D37EF37A38D99A3518FEE8FA2D0D050
C4B11C5ABF713DFA7EF167E8B9AE57D1D83E6A2A56695CCB93D0F62382947249
3C0E09EB707C633EA663532E367CF08DFF82339D3C73166AFF30DD2D65585755
9900E61610143B367FC5A56C49B148565448C3DA6CCB4DB3DC92431D2AD50E53
0A0D3B8F09F5E132D3625335F01CAA3BE651F598D6D1DC63750399E886A12CF6
F5C08896BD368F69E2BA784D42F0F250E675095D81FEAF89EA4E1D8436EF3882
7E9DA1456E1A8BECDD22EDAA84EA3F9DBF002EC75B6C9C835EADF96FD6BCEFF6
ACE34BFE6485914CF9AAA43D5CD2457A65A0A890AF5FD2AD1FDD53DDD36A94B1
EF8C805ABF58F80D5C8EB6D854099EAF0FD67C38A8A36A4C4C3D48F22EC05F47
05F4C56AA3181DC6B0D1612C8A0A6551BD2006B9EB709948435314BDBBA494BC
BFC430068C347ECE44F31D73DDF727342E1B450354F0B1E30BB79DBD2C76B65A
DD443985D40F62E277CC76DF1D645D3D68C3E8792568F1266373B8A43DCFBB46
881F53FFB3F1BA0D8FB7E52394938373700CEA9E51F38AD71C3827D2A9635A5E
37849C1711E0C984D7F2C6817A0D76370B88A4658957A05CA77337B3814E6FC2
4F1FAC39F0FE486DB921F9CF5719D1A4AF4A12E1F22F8B8D05E55EC9FCE775CB
C7F7523F6135CA80F63DAA3D22FF507E09A9D2583FC6C8FBF737DDF6F76DCDD7
B35AB914B4B84B3E2DA0EFB7988E2EDA6C7C1714409543ADAB0D0D829929C7E6
7BCE51399403254682A2C615ACBE9423F5B75AC928930D343CAE97D8847BCCBE
B946B91A2A7350C60F54A62A78ED09CDDB7D5B82321C9EEF2A62609B480ECD9F
A08BD9F591C7F26EB1F2546B04B0DA702E53FAEDAFA3D0ED70089B8EC7E8E944
551F309599652CA390497DD563A2821816899088ECB86237147A082DB748DD35
B8B60DD9118ECFAE2EB6A8C7A0756FEA13DF1BAA3904A9B54CEBD1C5483B9422
9E500AD398AE2A866311ADBB6EC25E215C4214BC30074D1A8D086D3D2AD07A83
0E25570521B5BD196FC7E7572769B7E58D27346EBFBEACFF31C013BF0FB62EAC
C5FEC1C154619B5278EAFA33A85B537E38986EAE53BBA9908840A67387282E44
5E8C6FC7DDA70474A398ACA7325584E946114D1970758FD9378EC7BFBDA27F23
D89BF91C6C5CAE9475FB859D2525CA711FD89AA7EB99E9EA7E19371532B6B37A
80BB0AC2E6A0C5EDC7E486072D7BAB8AAB3B4E08698ECFBF578C8FE0D0CF9374
13BD74986E7770298A8DE4D0D174F0D4210C94FD9BF348ABC274E443864D212C
D41DFD9534B8E7AC40E73C9281550599B5CAF8F2F23D6649C91F1B0DD0FA3874
5E442BFE36A3C55B4D08E4D179E8B829C95695ED1B7068CE70ED1B602AD3AA74
015252AF88254A61F0D162D4218AA52B20E5612C39BBEA54382E65AEFB8140CF
B2B957825C1638B1E0604E21A1FD0FA740C3A391EF0CD02C98DA4BAD66ADC9E1
CC1509FDB0CB44924E8B8507D2C4E41213A1634A749DD375A0069ACB4DFBC5F1
23E60ED384D172D7D9E83FAF2473CD4173145CBA6C7CEEF311DAE313BBA91A5B
8D65F0F13A237AED17039DCAD82FC76E701BBE53209D7C72C84EE959120265D0
4920A7C16046DF4D5B6A68FFE8ACE293FB532189803F33571AC40F56191393CE
087EA08CEE20361D48174DAC052E2704BDB5EA8039AAC747C5DF4233B25C38AB
CA37FBAA8341E92F80C965806E438692DF949DA3E44E4A27FA232BA479389BA8
949D4E5DA677A053F4C7C9D8F7E70921AEEDBB455387CC2FB986C9CD51E70AE7
0900A52959D2E869CB0C9B95C25A15B60C6751C786DC04305538FA5D55408326
5BC96FCAA6B559E4EB8669AFDDA290104FDC524973A9B4EC86F28FFEB8004641
427397269BEBFE9C6C1E05E62B16EB5B42FAED80F9BDB350C42985B72AEC1FCB
D1D5212E5BE0566420794AFE52D2FC0199826E56951552BBAE0F534BA9E372F1
3ABD03D1C91B57A204B818784E36DD1E472E6443B814C25B152642050F908B0D
57A0D4480C4AFEDAD838880900B150C6478F631AD28AD24E633666E5D30B7495
FED4144043A0767DDFF2F55D5549DF01CFBA6E611B84B8CC0CA2231B07C9A565
0CD32D8A8BA0DD0FD9C156AE59AFF34A08ED84D0659135066FF6544FA9EB0D09
C82E9C657897761A78A48F0EBB6C4391BB1AEB95FCB5D9C99902FAE74C841F13
715388FEDB5D979AE4130E6ACA2907FAC989AA4FFED54135DA319C6558153B4B
71EE12D472C30115FA0B76722243A83EE3A7C3A1E504AC1444521394E13BB819
FFCA9AB1BAB3B3FB6926F9689C5F5C511A21A6502228CE733B03816E4C7D257F
6D0CD063A4E1A00EF154A300A54A8612A20E17F7049A46B598011FF755AF487A
417779C970CDACDE516C3043CFC35008A733782E0B529F2877465D01AE961EC5
28F96B2307710BF26002181583FC953446C933D5BB803AC00DB799D155B570CD
28EDD5BD2FEA564CEDA01AD02E9C55D3790DA5F03993AB8F09B4262D337BE72C
A858D4AC4508EBA6E4AF3DBD75D89FE111F690CB3505EA794C15E2F22DCC3141
4C8F0503343B0FBCA8DFF34E57F5E8DE919CA78EAE9F5108932B586A4068C1DF
A60B605A07743AC6B4E27BD5D2DD3E3E6E3C7267388CD44ADAA2F4D662AA0C97
9D5E50C79B6936BFBF66DB9FA3741BC6B6E0DB85B8B9A67EB81DE72599D0C51B
848EFABAA2CEC4EDC3B9414AFE3A52CD6268EC49900314B44519445F906BF696
6B26C5F3B3378ED4EE1BDF824FF4A315B582FFD5C174E8FC7EF497898ED7D1CE
A9D311EE85DB76AAC3462BF9ED4828143846920828052A1605867BC80A09A33F
CE02B4EAEA7CF7B866CF9C1EEAA90DBC31ABE46F759140653A61954128349271
1034FA5A9C8EC9F1AAC901F4881B05FF1D2911C230A288CC8E59C7C60696B6B1
D3160534F4651A2F1BA8D9FD740C17CB401894FCAC4E2ED867461B53C48FC0E4
D4116D1B02DD7093DE11ECE34A7E2B51109189310BA8C831EBD8D8D897A14B77
14C7F0EF143E5A1C36FF51F5A6C4303648C9AFEAE6E92C094DFB532EAA5CB2BF
85627A3BD57F223CE9A211305482252664604A4D245F495B94015A8C22BC1967
ECBBE66777562DEB14C6062BF953DD3440D53DFC77435181910C031B97747E3B
86B17D0645737D94FCAF88370C24972932A26B4ADAB231AE16130357B414BC6B
8C69CA4D1DD6886BADF4FC7BC197FF34A28357A58960725547D0F3B5D6FC17FE
F47C4705FF95488059C52487C92E96321D2B177BB60F61E8EAED321B76EE1001
A39AF06FC89D1985E75737979D34A32F0F9A698BEA7B1A245760663BD5173DEB
B0614AFE57C4825209E519C81526ED064953D2988DDDC2E461613AAD7A5798DA
9C9FD2A616E3A6F4ECEAE63968E24ED86C3A0CAFC065D3B543A2B871FF8AE586
29F97F2BA6E741A8104A63922E8929D0D2022D29B381078362FD19BAE4F16EA0
ED1EC68E557A6E75B3146A8A216B8D85900A07830D9D14733A1282D9C4B75BF3
9F79F177DEC13D974B2FD079E67211397E3E0F0C0E1AB367EF3A6C13B8A2AB32
EE08ED83D9C71383591FA56756375FDD614207AF4974DEDC25F546231F26664E
826A65A407A352F2FF763C91232BE404ED689C387A4D82BE48D932CD9E432338
3AF27BC7EB6187346087F174C058E199D5C9AD1744F4E53133DD2BBEC41232E7
A281276EFC5547D5A696FED85BC9FFCAF0F035896AE418554849460139AE948D
6C8CF6C2A863303B124C77B22AC3B38937D345E979D5490952DFD45DA67C88F3
64B0713AE2FC98568B3BABB7270432B594FCAF0C690BEB50B6444FE92E94BBE2
87B3A5DD4AD9C89EA31B42AB0155FE8CC1601D4E68E90B2D3485675527B75F12
D1911C896E57BB06742A7A87B1031727AAB6B6F567FC94FCAE2CCFDF20E84211
D90926CB32A055E9C2F6BC529A75C050019FACC341058FE997082A85F6814C23
F9987585675527F7428F1C404FCB7626D4931A73731624A8963DE2C5E895FCBD
136E834403D8417F6485149AD1D6ED97A11E71D09C3DE9C4C8F3D13CDDA8D801
785B0469712DA5E75437F5F2BE64E721DA93895FD251B5F7E396AA29C16A8C95
FCBC536EBA44BFDD8036032D0A01E41ECC11F7285536F67CAE014B7349A5C67E
340C8294A3FC9CEA64BF10080887EEE854082578A970EC47CDF9A57F7455ED1A
52878DA153AE4AFEDD290D6682B65C91E8989ABCDCCAA610B43C5D5C69A40B39
153468231D3F99DE84EF087FFD80B704B41918A5675437C3B518CD88E19F0353
B91DAF95409D7EB5D9490BDBA8920FF6561F7C259A7B0A9EE7945C61E36628AE
F28C841E0322C33E3FD75EDD5195DE2784BD654B8A2AB6EB5663EAF62C89F64D
0C16DBF298D490FB6C5E73DE991BF1EF1A1064F46DAA685C7E41FC69F355719D
4010FDD20E5DBA6A0B3FDDE9EE0FA55B9D76FE4C74C70026AE813B9310E38523
1FF1664003AEC3D05D26F24B8648A738E47359CAF8352992DB342F8EEF663556
88C3D0916CF7A7F1835211D1BD158A185997FD60716B15FDE2418D428E91A0B3
8504651B08314A48A0558C9E455C8006E33A7A8C7CE8AA41576AC00E792682C2
571B76150928C16A55B65F71BA80984686B303DD692869B2AA8081D07C12096A
B33D5BA2AD17C5531D7CA1CC1D11C67557BAFF5E52C760140AC558943B831B7B
306C2377868D7063709006232D3DB842E11E5771E17911ADCE94E807648E0065
DCAC4328F2CDE4B79F3384AB8E158F125F8FE4F8CEFE0CFD1897E261C927F2C9
5591AE3952B8F77F24D061256841AA403724FD6A796316945108C0F46DBA389F
0EC4295540F6E4E1B98B9AF191615AFC35D894CBE4594672F15A051B1DFF4784
D6664AE86401A127CCC9A712D9E0A810741C847EBC20162975601C190ED9FC9B
587E1094C1D3C0C61169E7E9AE5B85FB1E76D263AE3E3A2B5045D01388CAA09C
4200D7BFCE10BF28BD4D13D8C6CE3E0CFAAC09FF3E543B43C0C61E99E945A4C2
F9FA87997F5C91D09E5C89E68E72C3398A4DDC4C03391CA442E35A79628D5265
E4C866EE18438FB8EF9F39D221B0B16DBC21095ECC80782F1CAC74CFC34ADA27
1F7AD85C70D5287FEAA9DCBC4C457D8E9273C5040D0964BAD25689D2831DD9D6
9361350C1EB02557A22D063A7289EA6971ABDE7E4C9C92FCC3CA45D011FCFA92
F40E98E8819DE550612730D72C1F7737A4AB37E3A3F46025B6F362383F1E0FDC
9227A54323E2283C23E4F910B60F56907D18791DFA1D838E08E78A44F90337B4
002B875BF5CA85830524B593173334940EDB2A78A0C456B46DAF631EDF9E47C8
6523D932C09F1D5F8B4E692AC83E6C7CE18C4876E54B74A24F2E4194702B8520
81A073A9A52872901FFB88BC6A44C1132546EB30CE34914EC905E4E3166E7864
333D53A9BAE841E61FD725342D55A0A7B9DEF20B12B75408458681EC80F4FD74
274FECAEE45145BC2120B42247DAD540833DBA7BE12825998785D9D0AFEB7F42
C82810E54F055638FE47715B85004AF61490E32DF47858033AFEAFE0A1127DE0
C99F664AD72E9BD09E09B5D8DEAC82CCC340DA311F7C5A100F16113A425E6151
6583523FA41CA0E8DA38F9BCF89FF4DBCC2ADA3398C3088AABEE1946B26E7B1E
1D2B50967BD0F9DE0511ADCF93E85121F214EDED50991C222357407F1D2F41F1
03BC98FAF23E37BB5450112F9A90EF8E42B2B09E1AB74A74634294641E64AECC
95D0A40C71195C567AEABBD20A01903423597BC9441EEBE7C1F8C959CB21008E
F4875CF255B69493654607C7F8B1DDE53DC70A720F22938B087A3255483648F2
D14F955ED05D6E50B012A8373980D9353B980DACCCCC4DFBB3C2F9DDC5A4C3B2
BA6CDA135E8CCBF72BD6049C3410D4354548818448E739E8B1E695C69DE4101B
F2FE2E265BA1E3F754271DA3554A1DF684DE8FF7DA02B25183B1C763EE4CB492
CC83C47346821E4D152F649AE529E3CBC03BC2DDE4101B5A4DF76736BE5B8BF5
BAD5434AA0628B3A27ACBF2A9059C9F5B86DCDB455F1B266E3345546BA78E982
99506554F6309D32B89B1C62C3E5A412B2394F4003BAEA18BDBC454D81B48C2A
9650C4D662F219D421B1BDF44C6D25B9FB9DFBA005DA2B4348B92CC8270A55F6
BB25E5E08CE41A35D88359B7A01653CFADECD9FD3741D771C6A4096BB245343F
298C5BDF9CEEBA7D80B0BA484223AF88FB0A2479354E954E4FAA4A0EB121E7B8
912C4D2A25F11DD528CC9BBE6B87D4439774F01845AE2D268BAF8B24E8493DAE
FF200C38D2A5591F42D376E235E937C820F4C870FABDF82AC1190AA128BE28A0
1F7F2B26FEF538DC224AE1432B712A8CFF2C252D36979271A12C7AA6990ACB0B
E3EF57E6426B657896287E994F664035F922D83A65AFA2B314422142965DF76B
11390D81ED96A0C21A955D04681D13ABC2014B8AC9F53D06B2B6A706F7F4A7ED
663B99FB855B213BF4CD922E251B09ED63D0AD71D4C52970A6426440C84EEC35
929FFE28214DEAB1B87E7DBB2545C150C740C5DEF6F75232EB801169FB6B9926
7AEB4DF7030B20574CCD93D04B79D252F8A3F505FD4C9253E1748558919F25A1
1F7F2E21E7CF0B24A1198FF572DB182215AFC2CC5901F5DC6424CF1C329166FD
D4384CFE408E43E46B12695DB1B484A081D7C58B5B8C640418FF0D2E65568B38
0BAE52880C08F891A366B4F0BB12C2E74B28AE298B399A237AA8B15BB21975DC
6A22830F9A51FCA33C0E91BF4D6A7D0135893B4D048DC823A59F14910FF389BC
90E338D065A0E9B6BA50C79F416F8ED2E21113B50C4F176E0FCA970E6D359341
2D79FCE5F71E4C974897268F3B439299A0FF1413F32613F906F442BFA4502D5F
14AD4E85D810AAC368F240151E35508DBD7E3192B49F8C64482083867CA0635E
1CA1C62E5DDC7C2BD099A3159023BE2C25457B0442BF47350FE8EA6372CBE05E
C59D82965E839BB0F8992C89B4C826A8379855BD78FCC55B1A5CAF156D3A5703
E8B445B240D0CFA088E566720CEA3EBA12932E91AD729FE26E702F15628FBA40
FAE9537A183E3DB1755C4F1E4F19CEA3B03EA018B925E644D02FCFEFA0B36E02
429B0492922EC9DFA6FA057818486B8F7B869AA21025D0E9939E9E180DEAC0E2
1EAD18E41F07754C14349D4320D49519C7A78B2F2FC3EB4D91083A0559E130A5
48328F4B6817E822099C37026F3BAD5A9DA8C90AB1079D0FA30717D0CF663452
23542F18A3205F8CFCF418B9F3086B418085F72D9810311612549C43D0F5AB04
658352E807F8E960DF69205DC4579933E6EF1110FA7F1C2F8A6483B809ED0000
000049454E44AE426082}
end>
end>
Left = 689
Top = 339