XSD schema import support : GUI handling, store relative fie name

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2993 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
inoussa
2014-05-03 15:27:53 +00:00
parent 42bf26f5f4
commit a0ef2a66bf
8 changed files with 634 additions and 349 deletions

View File

@ -22,6 +22,9 @@ uses
type type
EWstEditException = class(Exception)
end;
TEditType = ( etCreate, etUpdate, etDelete, etClone ); TEditType = ( etCreate, etUpdate, etDelete, etClone );
{ TObjectUpdater } { TObjectUpdater }
@ -82,6 +85,11 @@ type
ASymbol : TwstPasTreeContainer ASymbol : TwstPasTreeContainer
); );
resourcestring
s_CantDeleteMainModule = 'Can not delete the main module : "%s".';
s_CantDeleteStillReferencedObject = 'Can not delete a still referenced Object : "%s".';
s_NoHandlerFound = 'No handler found.';
implementation implementation
uses Contnrs, Forms, ufEnumedit, ufclassedit, uinterfaceedit, uprocedit, uses Contnrs, Forms, ufEnumedit, ufclassedit, uinterfaceedit, uprocedit,
@ -143,7 +151,7 @@ var
h : TObjectUpdaterClass; h : TObjectUpdaterClass;
begin begin
if not UpdaterRegistryInst.FindHandler(AObject,etUpdate,h) then begin if not UpdaterRegistryInst.FindHandler(AObject,etUpdate,h) then begin
raise Exception.Create('No handler found.'); raise EWstEditException.Create('No handler found.');
end; end;
Result := h.UpdateObject(AObject,ASymbolTable); Result := h.UpdateObject(AObject,ASymbolTable);
end; end;
@ -156,7 +164,7 @@ var
h : TObjectUpdaterClass; h : TObjectUpdaterClass;
begin begin
if not UpdaterRegistryInst.FindHandler(AObject,etDelete,h) then begin if not UpdaterRegistryInst.FindHandler(AObject,etDelete,h) then begin
raise Exception.Create('No handler found.'); raise EWstEditException.Create('No handler found.');
end; end;
h.DeleteObject(AObject,ASymbolTable); h.DeleteObject(AObject,ASymbolTable);
end; end;
@ -263,6 +271,10 @@ type
var AObject : TPasElement; var AObject : TPasElement;
ASymbolTable : TwstPasTreeContainer ASymbolTable : TwstPasTreeContainer
):Boolean;override; ):Boolean;override;
class procedure DeleteObject(
AObject : TPasElement;
ASymbolTable : TwstPasTreeContainer
);override;
end; end;
{ TBindingUpdater } { TBindingUpdater }
@ -380,7 +392,8 @@ end;
class function TModuleUpdater.CanHandle(AObject : TObject; const AEditAction : TEditType): Boolean; class function TModuleUpdater.CanHandle(AObject : TObject; const AEditAction : TEditType): Boolean;
begin begin
Result := ( inherited CanHandle(AObject,AEditAction) ) and AObject.InheritsFrom(TPasModule); Result := (AObject <> nil) and (AEditAction <> etClone) and
AObject.InheritsFrom(TPasModule);
end; end;
class function TModuleUpdater.UpdateObject( class function TModuleUpdater.UpdateObject(
@ -401,6 +414,95 @@ begin
end; end;
end; end;
function IsDependentOn(AType : TPasType; AUnit : TPasModule) : Boolean;
var
locElement : TPasElement;
locList : TList2;
i : Integer;
locVar : TPasVariable;
begin
Result := False;
if (AType = nil) then
exit;
if AType.InheritsFrom(TPasEnumType) then
exit;
if (AType.Parent = AUnit.InterfaceSection) then
exit(True);
if AType.InheritsFrom(TPasAliasType) then begin
locElement := TPasAliasType(AType).DestType;
if (locElement <> nil) and IsDependentOn(TPasType(locElement),AUnit) then
exit(True);
end;
if AType.InheritsFrom(TPasClassType) then begin
locElement := TPasClassType(AType).AncestorType;
if (locElement <> nil) and IsDependentOn(TPasType(locElement),AUnit) then
exit(True);
locList := TPasClassType(AType).Members;
for i := 0 to locList.Count-1 do begin
locElement := TPasElement(locList[i]);
if locElement.InheritsFrom(TPasVariable) then begin
locVar := TPasVariable(locElement);
if (locVar.VarType <> nil) and IsDependentOn(locVar.VarType,AUnit) then
exit(True);
end;
end;
locList := TPasClassType(AType).ClassVars;
for i := 0 to locList.Count-1 do begin
locElement := TPasElement(locList[i]);
if locElement.InheritsFrom(TPasVariable) then begin
locVar := TPasVariable(locElement);
if (locVar.VarType <> nil) and IsDependentOn(locVar.VarType,AUnit) then
exit(True);
end;
end;
end;
if AType.InheritsFrom(TPasRecordType) then begin
locList := TPasClassType(AType).Members;
for i := 0 to locList.Count-1 do begin
locElement := TPasElement(locList[i]);
if locElement.InheritsFrom(TPasVariable) then begin
locVar := TPasVariable(locElement);
if (locVar.VarType <> nil) and IsDependentOn(locVar.VarType,AUnit) then
exit(True);
end;
end;
end;
end;
class procedure TModuleUpdater.DeleteObject(
AObject : TPasElement;
ASymbolTable : TwstPasTreeContainer
);
var
locModule : TPasModule;
i : Integer;
locTypes : TList2;
begin
locModule := AObject as TPasModule;
if (locModule = ASymbolTable.CurrentModule) then
raise EWstEditException.CreateFmt(s_CantDeleteMainModule,[locModule.Name]);
if (ASymbolTable.CurrentModule = nil) then
exit;
locTypes := ASymbolTable.CurrentModule.InterfaceSection.Types;
for i := 0 to locTypes.Count-1 do begin
if IsDependentOn(TPasType(locTypes[i]),locModule) then
raise EWstEditException.CreateFmt(s_CantDeleteStillReferencedObject,[locModule.Name]);
end;
if (locModule.RefCount > 0) and
(ASymbolTable.CurrentModule.InterfaceSection.UsesList.IndexOf(locModule) >= 0)
then begin
ASymbolTable.CurrentModule.InterfaceSection.UsesList.Extract(locModule);
locModule.Release();
if (locModule.RefCount = 0) and
(ASymbolTable.Package.Modules.IndexOf(locModule) >= 0)
then begin
ASymbolTable.Package.Modules.Extract(locModule);
locModule.Release();
end;
end;
end;
{ TArgumentUpdater } { TArgumentUpdater }
class function TArgumentUpdater.CanHandle(AObject : TObject; const AEditAction : TEditType): Boolean; class function TArgumentUpdater.CanHandle(AObject : TObject; const AEditAction : TEditType): Boolean;
@ -757,7 +859,9 @@ class function TObjectUpdater.CanHandle(
const AEditAction : TEditType const AEditAction : TEditType
) : Boolean; ) : Boolean;
begin begin
Result := Assigned(AObject) and ( AEditAction <> etClone ); Result :=
(Assigned(AObject) and (AEditAction <> etClone)) and
(not(AObject.InheritsFrom(TPasModule)) or (AEditAction = etUpdate));
end; end;
class procedure TObjectUpdater.DeleteObject ( class procedure TObjectUpdater.DeleteObject (
@ -767,13 +871,15 @@ class procedure TObjectUpdater.DeleteObject (
var var
sct : TPasSection; sct : TPasSection;
begin begin
if ( AObject <> nil ) then begin if (AObject = nil) then
exit;
if (AObject.RefCount > 1) then
raise EWstEditException.CreateFmt(s_CantDeleteStillReferencedObject,[AObject.Name]);
sct := ASymbolTable.CurrentModule.InterfaceSection; sct := ASymbolTable.CurrentModule.InterfaceSection;
sct.Declarations.Extract(AObject); sct.Declarations.Extract(AObject);
sct.Types.Extract(AObject); sct.Types.Extract(AObject);
sct.Classes.Extract(AObject); sct.Classes.Extract(AObject);
AObject.Release(); AObject.Release();
end;
end; end;
procedure InternalFillList( procedure InternalFillList(

View File

@ -1,7 +1,7 @@
object fWstTypeLibraryEdit: TfWstTypeLibraryEdit object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
Left = 321 Left = 287
Height = 644 Height = 644
Top = 186 Top = 261
Width = 833 Width = 833
AllowDropFiles = True AllowDropFiles = True
Caption = '[Web Services Toolkit ] Type Library Editor' Caption = '[Web Services Toolkit ] Type Library Editor'
@ -3447,66 +3447,66 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
Style = tbsDivider Style = tbsDivider
end end
object ToolButton4: TToolButton object ToolButton4: TToolButton
Left = 98 Left = 126
Top = 2 Top = 2
Action = actEnumCreate Action = actEnumCreate
end end
object ToolButton5: TToolButton object ToolButton5: TToolButton
Left = 121 Left = 149
Top = 2 Top = 2
Action = actCompoundCreate Action = actCompoundCreate
end end
object ToolButton6: TToolButton object ToolButton6: TToolButton
Left = 144 Left = 172
Top = 2 Top = 2
Action = actRecordCreate Action = actRecordCreate
end end
object ToolButton7: TToolButton object ToolButton7: TToolButton
Left = 167 Left = 195
Top = 2 Top = 2
Action = actArrayCreate Action = actArrayCreate
end end
object ToolButton8: TToolButton object ToolButton8: TToolButton
Left = 190 Left = 218
Top = 2 Top = 2
Action = actTypeALiasCreate Action = actTypeALiasCreate
end end
object ToolButton10: TToolButton object ToolButton10: TToolButton
Left = 218 Left = 246
Top = 2 Top = 2
Action = actClone Action = actClone
end end
object ToolButton11: TToolButton object ToolButton11: TToolButton
Left = 213 Left = 241
Top = 2 Top = 2
Width = 5 Width = 5
Caption = 'ToolButton11' Caption = 'ToolButton11'
Style = tbsDivider Style = tbsDivider
end end
object ToolButton9: TToolButton object ToolButton9: TToolButton
Left = 241 Left = 269
Top = 2 Top = 2
Action = actUpdateObject Action = actUpdateObject
end end
object ToolButton12: TToolButton object ToolButton12: TToolButton
Left = 264 Left = 292
Top = 2 Top = 2
Action = actDelete Action = actDelete
end end
object ToolButton13: TToolButton object ToolButton13: TToolButton
Left = 310 Left = 338
Top = 2 Top = 2
Width = 5 Width = 5
Caption = 'ToolButton13' Caption = 'ToolButton13'
Style = tbsDivider Style = tbsDivider
end end
object ToolButton14: TToolButton object ToolButton14: TToolButton
Left = 315 Left = 343
Top = 2 Top = 2
Action = actIntfCreate Action = actIntfCreate
end end
object ToolButton15: TToolButton object ToolButton15: TToolButton
Left = 287 Left = 315
Top = 2 Top = 2
Action = actRefreshView Action = actRefreshView
end end
@ -3520,6 +3520,18 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
Top = 2 Top = 2
Action = actNewFile Action = actNewFile
end end
object ToolButton18: TToolButton
Left = 98
Top = 2
Action = actAddXsdImport
end
object ToolButton19: TToolButton
Left = 121
Top = 2
Width = 5
Caption = 'ToolButton19'
Style = tbsDivider
end
end end
object MainMenu1: TMainMenu object MainMenu1: TMainMenu
Images = DM.IM Images = DM.IM
@ -3554,6 +3566,9 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
Action = actSaveXSD Action = actSaveXSD
OnClick = actSaveXSDExecute OnClick = actSaveXSDExecute
end end
object MenuItem56: TMenuItem
Action = actAddXsdImport
end
object MenuItem17: TMenuItem object MenuItem17: TMenuItem
Caption = '-' Caption = '-'
end end
@ -3768,6 +3783,12 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
OnExecute = actCloneExecute OnExecute = actCloneExecute
OnUpdate = actCloneUpdate OnUpdate = actCloneUpdate
end end
object actAddXsdImport: TAction
Caption = 'Add Schema Import'
ImageIndex = 2
OnExecute = actAddXsdImportExecute
OnUpdate = actAddXsdImportUpdate
end
end end
object OD: TOpenDialog object OD: TOpenDialog
Filter = 'wsdl files(*.wsdl)|*.wsdl|Pascal file (*.pas)|*.pas|XSD files ( *.xsd )|*.xsd|WDSL files(*.WSDL)|*.WSDL' Filter = 'wsdl files(*.wsdl)|*.wsdl|Pascal file (*.pas)|*.pas|XSD files ( *.xsd )|*.xsd|WDSL files(*.WSDL)|*.WSDL'
@ -4742,4 +4763,12 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
left = 576 left = 576
top = 143 top = 143
end end
object odOpenXSD: TOpenDialog
Filter = 'XSD files ( *.xsd )|*.xsd'
FilterIndex = 0
InitialDir = '.\'
Options = [ofPathMustExist, ofFileMustExist, ofEnableSizing, ofViewDetail]
left = 416
top = 164
end
end end

View File

@ -1,8 +1,8 @@
{ This is an automatically generated lazarus resource file } { This is an automatically generated lazarus resource file }
LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
'TPF0'#20'TfWstTypeLibraryEdit'#19'fWstTypeLibraryEdit'#4'Left'#3'A'#1#6'Heig' 'TPF0'#20'TfWstTypeLibraryEdit'#19'fWstTypeLibraryEdit'#4'Left'#3#31#1#6'Heig'
+'ht'#3#132#2#3'Top'#3#186#0#5'Width'#3'A'#3#14'AllowDropFiles'#9#7'Caption'#6 +'ht'#3#132#2#3'Top'#3#5#1#5'Width'#3'A'#3#14'AllowDropFiles'#9#7'Caption'#6
+'+[Web Services Toolkit ] Type Library Editor'#12'ClientHeight'#3'q'#2#11'Cl' +'+[Web Services Toolkit ] Type Library Editor'#12'ClientHeight'#3'q'#2#11'Cl'
+'ientWidth'#3'A'#3#4'Menu'#7#9'MainMenu1'#7'OnClose'#7#9'FormClose'#11'OnDro' +'ientWidth'#3'A'#3#4'Menu'#7#9'MainMenu1'#7'OnClose'#7#9'FormClose'#11'OnDro'
+'pFiles'#7#13'FormDropFiles'#6'OnShow'#7#8'FormShow'#8'Position'#7#15'poDesk' +'pFiles'#7#13'FormDropFiles'#6'OnShow'#7#8'FormShow'#8'Position'#7#15'poDesk'
@ -780,299 +780,305 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+'ton'#11'ToolButton2'#4'Left'#2'F'#3'Top'#2#2#6'Action'#7#9'actExport'#0#0#11 +'ton'#11'ToolButton2'#4'Left'#2'F'#3'Top'#2#2#6'Action'#7#9'actExport'#0#0#11
+'TToolButton'#11'ToolButton3'#4'Left'#2']'#3'Top'#2#2#5'Width'#2#5#7'Caption' +'TToolButton'#11'ToolButton3'#4'Left'#2']'#3'Top'#2#2#5'Width'#2#5#7'Caption'
+#6#11'ToolButton3'#5'Style'#7#10'tbsDivider'#0#0#11'TToolButton'#11'ToolButt' +#6#11'ToolButton3'#5'Style'#7#10'tbsDivider'#0#0#11'TToolButton'#11'ToolButt'
+'on4'#4'Left'#2'b'#3'Top'#2#2#6'Action'#7#13'actEnumCreate'#0#0#11'TToolButt' +'on4'#4'Left'#2'~'#3'Top'#2#2#6'Action'#7#13'actEnumCreate'#0#0#11'TToolButt'
+'on'#11'ToolButton5'#4'Left'#2'y'#3'Top'#2#2#6'Action'#7#17'actCompoundCreat' +'on'#11'ToolButton5'#4'Left'#3#149#0#3'Top'#2#2#6'Action'#7#17'actCompoundCr'
+'e'#0#0#11'TToolButton'#11'ToolButton6'#4'Left'#3#144#0#3'Top'#2#2#6'Action' +'eate'#0#0#11'TToolButton'#11'ToolButton6'#4'Left'#3#172#0#3'Top'#2#2#6'Acti'
+#7#15'actRecordCreate'#0#0#11'TToolButton'#11'ToolButton7'#4'Left'#3#167#0#3 +'on'#7#15'actRecordCreate'#0#0#11'TToolButton'#11'ToolButton7'#4'Left'#3#195
+'Top'#2#2#6'Action'#7#14'actArrayCreate'#0#0#11'TToolButton'#11'ToolButton8' +#0#3'Top'#2#2#6'Action'#7#14'actArrayCreate'#0#0#11'TToolButton'#11'ToolButt'
+#4'Left'#3#190#0#3'Top'#2#2#6'Action'#7#18'actTypeALiasCreate'#0#0#11'TToolB' +'on8'#4'Left'#3#218#0#3'Top'#2#2#6'Action'#7#18'actTypeALiasCreate'#0#0#11'T'
+'utton'#12'ToolButton10'#4'Left'#3#218#0#3'Top'#2#2#6'Action'#7#8'actClone'#0 +'ToolButton'#12'ToolButton10'#4'Left'#3#246#0#3'Top'#2#2#6'Action'#7#8'actCl'
+#0#11'TToolButton'#12'ToolButton11'#4'Left'#3#213#0#3'Top'#2#2#5'Width'#2#5#7 +'one'#0#0#11'TToolButton'#12'ToolButton11'#4'Left'#3#241#0#3'Top'#2#2#5'Widt'
+'Caption'#6#12'ToolButton11'#5'Style'#7#10'tbsDivider'#0#0#11'TToolButton'#11 +'h'#2#5#7'Caption'#6#12'ToolButton11'#5'Style'#7#10'tbsDivider'#0#0#11'TTool'
+'ToolButton9'#4'Left'#3#241#0#3'Top'#2#2#6'Action'#7#15'actUpdateObject'#0#0 +'Button'#11'ToolButton9'#4'Left'#3#13#1#3'Top'#2#2#6'Action'#7#15'actUpdateO'
+#11'TToolButton'#12'ToolButton12'#4'Left'#3#8#1#3'Top'#2#2#6'Action'#7#9'act' +'bject'#0#0#11'TToolButton'#12'ToolButton12'#4'Left'#3'$'#1#3'Top'#2#2#6'Act'
+'Delete'#0#0#11'TToolButton'#12'ToolButton13'#4'Left'#3'6'#1#3'Top'#2#2#5'Wi' +'ion'#7#9'actDelete'#0#0#11'TToolButton'#12'ToolButton13'#4'Left'#3'R'#1#3'T'
+'dth'#2#5#7'Caption'#6#12'ToolButton13'#5'Style'#7#10'tbsDivider'#0#0#11'TTo' +'op'#2#2#5'Width'#2#5#7'Caption'#6#12'ToolButton13'#5'Style'#7#10'tbsDivider'
+'olButton'#12'ToolButton14'#4'Left'#3';'#1#3'Top'#2#2#6'Action'#7#13'actIntf' +#0#0#11'TToolButton'#12'ToolButton14'#4'Left'#3'W'#1#3'Top'#2#2#6'Action'#7
+'Create'#0#0#11'TToolButton'#12'ToolButton15'#4'Left'#3#31#1#3'Top'#2#2#6'Ac' +#13'actIntfCreate'#0#0#11'TToolButton'#12'ToolButton15'#4'Left'#3';'#1#3'Top'
+'tion'#7#14'actRefreshView'#0#0#11'TToolButton'#12'ToolButton16'#4'Left'#2#24 +#2#2#6'Action'#7#14'actRefreshView'#0#0#11'TToolButton'#12'ToolButton16'#4'L'
+#3'Top'#2#2#6'Action'#7#11'actOpenFile'#0#0#11'TToolButton'#12'ToolButton17' +'eft'#2#24#3'Top'#2#2#6'Action'#7#11'actOpenFile'#0#0#11'TToolButton'#12'Too'
+#4'Left'#2#1#3'Top'#2#2#6'Action'#7#10'actNewFile'#0#0#0#9'TMainMenu'#9'Main' +'lButton17'#4'Left'#2#1#3'Top'#2#2#6'Action'#7#10'actNewFile'#0#0#11'TToolBu'
+'Menu1'#6'Images'#7#5'DM.IM'#4'left'#3'`'#1#3'top'#2'p'#0#9'TMenuItem'#9'Men' +'tton'#12'ToolButton18'#4'Left'#2'b'#3'Top'#2#2#6'Action'#7#15'actAddXsdImpo'
+'uItem1'#7'Caption'#6#6'&Files'#0#9'TMenuItem'#10'MenuItem16'#6'Action'#7#10 +'rt'#0#0#11'TToolButton'#12'ToolButton19'#4'Left'#2'y'#3'Top'#2#2#5'Width'#2
+'actNewFile'#7'OnClick'#7#17'actNewFileExecute'#0#0#9'TMenuItem'#9'MenuItem2' +#5#7'Caption'#6#12'ToolButton19'#5'Style'#7#10'tbsDivider'#0#0#0#9'TMainMenu'
+#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem5'#6'Action'#7#11'actOpenFile' +#9'MainMenu1'#6'Images'#7#5'DM.IM'#4'left'#3'`'#1#3'top'#2'p'#0#9'TMenuItem'
+#7'OnClick'#7#18'actOpenFileExecute'#0#0#9'TMenuItem'#9'MenuItem3'#6'Action' +#9'MenuItem1'#7'Caption'#6#6'&Files'#0#9'TMenuItem'#10'MenuItem16'#6'Action'
+#7#9'actExport'#7'OnClick'#7#16'actExportExecute'#0#0#9'TMenuItem'#9'MenuIte' +#7#10'actNewFile'#7'OnClick'#7#17'actNewFileExecute'#0#0#9'TMenuItem'#9'Menu'
+'m7'#6'Action'#7#7'actSave'#7'OnClick'#7#14'actSaveExecute'#0#0#9'TMenuItem' +'Item2'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem5'#6'Action'#7#11'actOp'
+#10'MenuItem32'#6'Action'#7#9'actSaveAs'#7'OnClick'#7#16'actSaveAsExecute'#0 +'enFile'#7'OnClick'#7#18'actOpenFileExecute'#0#0#9'TMenuItem'#9'MenuItem3'#6
+#0#9'TMenuItem'#10'MenuItem53'#6'Action'#7#10'actSaveXSD'#7'OnClick'#7#17'ac' +'Action'#7#9'actExport'#7'OnClick'#7#16'actExportExecute'#0#0#9'TMenuItem'#9
+'tSaveXSDExecute'#0#0#9'TMenuItem'#10'MenuItem17'#7'Caption'#6#1'-'#0#0#9'TM' +'MenuItem7'#6'Action'#7#7'actSave'#7'OnClick'#7#14'actSaveExecute'#0#0#9'TMe'
+'enuItem'#9'MenuItem4'#6'Action'#7#7'actExit'#7'OnClick'#7#14'actExitExecute' +'nuItem'#10'MenuItem32'#6'Action'#7#9'actSaveAs'#7'OnClick'#7#16'actSaveAsEx'
+#0#0#0#9'TMenuItem'#10'MenuItem14'#7'Caption'#6#5'&View'#0#9'TMenuItem'#10'M' +'ecute'#0#0#9'TMenuItem'#10'MenuItem53'#6'Action'#7#10'actSaveXSD'#7'OnClick'
+'enuItem15'#6'Action'#7#14'actRefreshView'#7'OnClick'#7#21'actRefreshViewExe' +#7#17'actSaveXSDExecute'#0#0#9'TMenuItem'#10'MenuItem56'#6'Action'#7#15'actA'
+'cute'#0#0#9'TMenuItem'#10'MenuItem50'#6'Action'#7#13'actEditSearch'#7'OnCli' +'ddXsdImport'#0#0#9'TMenuItem'#10'MenuItem17'#7'Caption'#6#1'-'#0#0#9'TMenuI'
+'ck'#7#20'actEditSearchExecute'#0#0#9'TMenuItem'#10'MenuItem29'#7'Caption'#6 +'tem'#9'MenuItem4'#6'Action'#7#7'actExit'#7'OnClick'#7#14'actExitExecute'#0#0
+#1'-'#0#0#9'TMenuItem'#10'MenuItem30'#6'Action'#7#13'actFullExpand'#7'OnClic' +#0#9'TMenuItem'#10'MenuItem14'#7'Caption'#6#5'&View'#0#9'TMenuItem'#10'MenuI'
+'k'#7#20'actFullExpandExecute'#0#0#9'TMenuItem'#10'MenuItem31'#6'Action'#7#15 +'tem15'#6'Action'#7#14'actRefreshView'#7'OnClick'#7#21'actRefreshViewExecute'
+'actFullCollapse'#7'OnClick'#7#22'actFullCollapseExecute'#0#0#0#9'TMenuItem' +#0#0#9'TMenuItem'#10'MenuItem50'#6'Action'#7#13'actEditSearch'#7'OnClick'#7
+#10'MenuItem10'#7'Caption'#6#8'&Edition'#0#9'TMenuItem'#10'MenuItem11'#6'Act' +#20'actEditSearchExecute'#0#0#9'TMenuItem'#10'MenuItem29'#7'Caption'#6#1'-'#0
+'ion'#7#13'actEnumCreate'#7'OnClick'#7#20'actEnumCreateExecute'#0#0#9'TMenuI' +#0#9'TMenuItem'#10'MenuItem30'#6'Action'#7#13'actFullExpand'#7'OnClick'#7#20
+'tem'#10'MenuItem23'#6'Action'#7#17'actCompoundCreate'#7'OnClick'#7#24'actCo' +'actFullExpandExecute'#0#0#9'TMenuItem'#10'MenuItem31'#6'Action'#7#15'actFul'
+'mpoundCreateExecute'#0#0#9'TMenuItem'#10'MenuItem48'#6'Action'#7#15'actReco' +'lCollapse'#7'OnClick'#7#22'actFullCollapseExecute'#0#0#0#9'TMenuItem'#10'Me'
+'rdCreate'#7'OnClick'#7#22'actRecordCreateExecute'#0#0#9'TMenuItem'#10'MenuI' +'nuItem10'#7'Caption'#6#8'&Edition'#0#9'TMenuItem'#10'MenuItem11'#6'Action'#7
+'tem25'#6'Action'#7#13'actIntfCreate'#7'OnClick'#7#20'actIntfCreateExecute'#0 +#13'actEnumCreate'#7'OnClick'#7#20'actEnumCreateExecute'#0#0#9'TMenuItem'#10
+#0#9'TMenuItem'#10'MenuItem35'#6'Action'#7#14'actArrayCreate'#7'OnClick'#7#21 +'MenuItem23'#6'Action'#7#17'actCompoundCreate'#7'OnClick'#7#24'actCompoundCr'
+'actArrayCreateExecute'#0#0#9'TMenuItem'#10'MenuItem36'#6'Action'#7#18'actTy' +'eateExecute'#0#0#9'TMenuItem'#10'MenuItem48'#6'Action'#7#15'actRecordCreate'
+'peALiasCreate'#7'OnClick'#7#25'actTypeALiasCreateExecute'#0#0#9'TMenuItem' +#7'OnClick'#7#22'actRecordCreateExecute'#0#0#9'TMenuItem'#10'MenuItem25'#6'A'
+#10'MenuItem12'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem55'#6'Action'#7 +'ction'#7#13'actIntfCreate'#7'OnClick'#7#20'actIntfCreateExecute'#0#0#9'TMen'
+#8'actClone'#7'OnClick'#7#15'actCloneExecute'#0#0#9'TMenuItem'#10'MenuItem13' +'uItem'#10'MenuItem35'#6'Action'#7#14'actArrayCreate'#7'OnClick'#7#21'actArr'
+#6'Action'#7#15'actUpdateObject'#7'Caption'#6#13'Update Object'#7'OnClick'#7 +'ayCreateExecute'#0#0#9'TMenuItem'#10'MenuItem36'#6'Action'#7#18'actTypeALia'
+#22'actUpdateObjectExecute'#0#0#9'TMenuItem'#10'MenuItem34'#6'Action'#7#9'ac' +'sCreate'#7'OnClick'#7#25'actTypeALiasCreateExecute'#0#0#9'TMenuItem'#10'Men'
+'tDelete'#7'OnClick'#7#16'actDeleteExecute'#0#0#0#9'TMenuItem'#9'MenuItem6'#6 +'uItem12'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem55'#6'Action'#7#8'ac'
+'Action'#7#8'actAbout'#7'Caption'#6#6'&About'#7'OnClick'#7#15'actAboutExecut' +'tClone'#7'OnClick'#7#15'actCloneExecute'#0#0#9'TMenuItem'#10'MenuItem13'#6
+'e'#0#0#0#11'TActionList'#2'AL'#6'Images'#7#5'DM.IM'#4'left'#3'X'#1#3'top'#2 +'Action'#7#15'actUpdateObject'#7'Caption'#6#13'Update Object'#7'OnClick'#7#22
+'8'#0#7'TAction'#11'actOpenFile'#7'Caption'#6#9'Open File'#10'ImageIndex'#2 +'actUpdateObjectExecute'#0#0#9'TMenuItem'#10'MenuItem34'#6'Action'#7#9'actDe'
,#12#9'OnExecute'#7#18'actOpenFileExecute'#8'ShortCut'#3'O@'#0#0#7'TAction'#7 ,'lete'#7'OnClick'#7#16'actDeleteExecute'#0#0#0#9'TMenuItem'#9'MenuItem6'#6'A'
+'actExit'#7'Caption'#6#4'Exit'#10'ImageIndex'#2#15#9'OnExecute'#7#14'actExit' +'ction'#7#8'actAbout'#7'Caption'#6#6'&About'#7'OnClick'#7#15'actAboutExecute'
+'Execute'#8'ShortCut'#3's@'#0#0#7'TAction'#9'actExport'#7'Caption'#6#24'Save' +#0#0#0#11'TActionList'#2'AL'#6'Images'#7#5'DM.IM'#4'left'#3'X'#1#3'top'#2'8'
+' generated files ...'#10'ImageIndex'#2#16#9'OnExecute'#7#16'actExportExecut' +#0#7'TAction'#11'actOpenFile'#7'Caption'#6#9'Open File'#10'ImageIndex'#2#12#9
+'e'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAction'#8'actAbout'#7'Caption'#6 +'OnExecute'#7#18'actOpenFileExecute'#8'ShortCut'#3'O@'#0#0#7'TAction'#7'actE'
+#5'About'#10'ImageIndex'#2#17#9'OnExecute'#7#15'actAboutExecute'#0#0#7'TActi' +'xit'#7'Caption'#6#4'Exit'#10'ImageIndex'#2#15#9'OnExecute'#7#14'actExitExec'
+'on'#9'actSaveAs'#7'Caption'#6#11'Save As ...'#10'ImageIndex'#2#14#9'OnExecu' +'ute'#8'ShortCut'#3's@'#0#0#7'TAction'#9'actExport'#7'Caption'#6#24'Save gen'
+'te'#7#16'actSaveAsExecute'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAction' +'erated files ...'#10'ImageIndex'#2#16#9'OnExecute'#7#16'actExportExecute'#8
+#13'actEnumCreate'#7'Caption'#6#18'Create Enumeration'#10'ImageIndex'#2#6#9 +'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAction'#8'actAbout'#7'Caption'#6#5'A'
+'OnExecute'#7#20'actEnumCreateExecute'#8'OnUpdate'#7#19'actEnumCreateUpdate' +'bout'#10'ImageIndex'#2#17#9'OnExecute'#7#15'actAboutExecute'#0#0#7'TAction'
+#0#0#7'TAction'#15'actUpdateObject'#7'Caption'#6#6'Update'#7'Enabled'#8#10'I' +#9'actSaveAs'#7'Caption'#6#11'Save As ...'#10'ImageIndex'#2#14#9'OnExecute'#7
+'mageIndex'#2#20#9'OnExecute'#7#22'actUpdateObjectExecute'#8'OnUpdate'#7#21 +#16'actSaveAsExecute'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAction'#13'ac'
+'actUpdateObjectUpdate'#0#0#7'TAction'#14'actRefreshView'#7'Caption'#6#14'&R' +'tEnumCreate'#7'Caption'#6#18'Create Enumeration'#10'ImageIndex'#2#6#9'OnExe'
+'efresh Views'#10'ImageIndex'#2#13#9'OnExecute'#7#21'actRefreshViewExecute'#8 +'cute'#7#20'actEnumCreateExecute'#8'OnUpdate'#7#19'actEnumCreateUpdate'#0#0#7
+'ShortCut'#2't'#0#0#7'TAction'#10'actNewFile'#7'Caption'#6#8'New File'#10'Im' +'TAction'#15'actUpdateObject'#7'Caption'#6#6'Update'#7'Enabled'#8#10'ImageIn'
+'ageIndex'#2#18#9'OnExecute'#7#17'actNewFileExecute'#8'ShortCut'#3'N@'#0#0#7 +'dex'#2#20#9'OnExecute'#7#22'actUpdateObjectExecute'#8'OnUpdate'#7#21'actUpd'
+'TAction'#17'actCompoundCreate'#7'Caption'#6#17'Create Class Type'#10'ImageI' +'ateObjectUpdate'#0#0#7'TAction'#14'actRefreshView'#7'Caption'#6#14'&Refresh'
+'ndex'#2#4#9'OnExecute'#7#24'actCompoundCreateExecute'#8'OnUpdate'#7#19'actE' +' Views'#10'ImageIndex'#2#13#9'OnExecute'#7#21'actRefreshViewExecute'#8'Shor'
+'numCreateUpdate'#0#0#7'TAction'#13'actIntfCreate'#7'Caption'#6#16'Create In' +'tCut'#2't'#0#0#7'TAction'#10'actNewFile'#7'Caption'#6#8'New File'#10'ImageI'
+'terface'#10'ImageIndex'#2#5#9'OnExecute'#7#20'actIntfCreateExecute'#8'OnUpd' +'ndex'#2#18#9'OnExecute'#7#17'actNewFileExecute'#8'ShortCut'#3'N@'#0#0#7'TAc'
+'ate'#7#19'actEnumCreateUpdate'#0#0#7'TAction'#13'actFullExpand'#7'Caption'#6 +'tion'#17'actCompoundCreate'#7'Caption'#6#17'Create Class Type'#10'ImageInde'
+#11'Full expand'#10'ImageIndex'#2#24#9'OnExecute'#7#20'actFullExpandExecute' +'x'#2#4#9'OnExecute'#7#24'actCompoundCreateExecute'#8'OnUpdate'#7#19'actEnum'
+#0#0#7'TAction'#15'actFullCollapse'#7'Caption'#6#13'Full Collapse'#10'ImageI' +'CreateUpdate'#0#0#7'TAction'#13'actIntfCreate'#7'Caption'#6#16'Create Inter'
+'ndex'#2#23#9'OnExecute'#7#22'actFullCollapseExecute'#0#0#7'TAction'#7'actSa' +'face'#10'ImageIndex'#2#5#9'OnExecute'#7#20'actIntfCreateExecute'#8'OnUpdate'
+'ve'#7'Caption'#6#4'Save'#10'ImageIndex'#2#11#9'OnExecute'#7#14'actSaveExecu' +#7#19'actEnumCreateUpdate'#0#0#7'TAction'#13'actFullExpand'#7'Caption'#6#11
+'te'#8'ShortCut'#3'S@'#0#0#7'TAction'#9'actDelete'#7'Caption'#6#6'Delete'#7 +'Full expand'#10'ImageIndex'#2#24#9'OnExecute'#7#20'actFullExpandExecute'#0#0
+'Enabled'#8#10'ImageIndex'#2#21#9'OnExecute'#7#16'actDeleteExecute'#8'OnUpda' +#7'TAction'#15'actFullCollapse'#7'Caption'#6#13'Full Collapse'#10'ImageIndex'
+'te'#7#15'actDeleteUpdate'#0#0#7'TAction'#14'actArrayCreate'#7'Caption'#6#12 +#2#23#9'OnExecute'#7#22'actFullCollapseExecute'#0#0#7'TAction'#7'actSave'#7
+'Create Array'#10'ImageIndex'#2#25#9'OnExecute'#7#21'actArrayCreateExecute'#8 +'Caption'#6#4'Save'#10'ImageIndex'#2#11#9'OnExecute'#7#14'actSaveExecute'#8
+'OnUpdate'#7#19'actEnumCreateUpdate'#0#0#7'TAction'#18'actTypeALiasCreate'#7 +'ShortCut'#3'S@'#0#0#7'TAction'#9'actDelete'#7'Caption'#6#6'Delete'#7'Enable'
+'Caption'#6#17'Create Type ALias'#10'ImageIndex'#2#28#9'OnExecute'#7#25'actT' +'d'#8#10'ImageIndex'#2#21#9'OnExecute'#7#16'actDeleteExecute'#8'OnUpdate'#7
+'ypeALiasCreateExecute'#8'OnUpdate'#7#19'actEnumCreateUpdate'#0#0#7'TAction' +#15'actDeleteUpdate'#0#0#7'TAction'#14'actArrayCreate'#7'Caption'#6#12'Creat'
+#15'actRecordCreate'#7'Caption'#6#13'Create Record'#10'ImageIndex'#2#26#9'On' +'e Array'#10'ImageIndex'#2#25#9'OnExecute'#7#21'actArrayCreateExecute'#8'OnU'
+'Execute'#7#22'actRecordCreateExecute'#8'OnUpdate'#7#19'actEnumCreateUpdate' +'pdate'#7#19'actEnumCreateUpdate'#0#0#7'TAction'#18'actTypeALiasCreate'#7'Ca'
+#0#0#7'TAction'#13'actEditSearch'#7'Caption'#6#6'Search'#10'ImageIndex'#2#19 +'ption'#6#17'Create Type ALias'#10'ImageIndex'#2#28#9'OnExecute'#7#25'actTyp'
+#9'OnExecute'#7#20'actEditSearchExecute'#8'OnUpdate'#7#19'actEditSearchUpdat' +'eALiasCreateExecute'#8'OnUpdate'#7#19'actEnumCreateUpdate'#0#0#7'TAction'#15
+'e'#8'ShortCut'#3'F@'#0#0#7'TAction'#13'actTreeSearch'#7'Caption'#6#6'Search' +'actRecordCreate'#7'Caption'#6#13'Create Record'#10'ImageIndex'#2#26#9'OnExe'
+#10'ImageIndex'#2#19#9'OnExecute'#7#20'actTreeSearchExecute'#8'OnUpdate'#7#19 +'cute'#7#22'actRecordCreateExecute'#8'OnUpdate'#7#19'actEnumCreateUpdate'#0#0
+'actTreeSearchUpdate'#0#0#7'TAction'#10'actSaveXSD'#7'Caption'#6#20'Save as ' +#7'TAction'#13'actEditSearch'#7'Caption'#6#6'Search'#10'ImageIndex'#2#19#9'O'
+'XSD file ...'#10'ImageIndex'#2#11#9'OnExecute'#7#17'actSaveXSDExecute'#0#0#7 +'nExecute'#7#20'actEditSearchExecute'#8'OnUpdate'#7#19'actEditSearchUpdate'#8
+'ShortCut'#3'F@'#0#0#7'TAction'#13'actTreeSearch'#7'Caption'#6#6'Search'#10
+'ImageIndex'#2#19#9'OnExecute'#7#20'actTreeSearchExecute'#8'OnUpdate'#7#19'a'
+'ctTreeSearchUpdate'#0#0#7'TAction'#10'actSaveXSD'#7'Caption'#6#20'Save as X'
+'SD file ...'#10'ImageIndex'#2#11#9'OnExecute'#7#17'actSaveXSDExecute'#0#0#7
+'TAction'#8'actClone'#7'Caption'#6#5'Clone'#10'ImageIndex'#2#27#9'OnExecute' +'TAction'#8'actClone'#7'Caption'#6#5'Clone'#10'ImageIndex'#2#27#9'OnExecute'
+#7#15'actCloneExecute'#8'OnUpdate'#7#14'actCloneUpdate'#0#0#0#11'TOpenDialog' +#7#15'actCloneExecute'#8'OnUpdate'#7#14'actCloneUpdate'#0#0#7'TAction'#15'ac'
+#2'OD'#6'Filter'#6'gwsdl files(*.wsdl)|*.wsdl|Pascal file (*.pas)|*.pas|XSD ' +'tAddXsdImport'#7'Caption'#6#17'Add Schema Import'#10'ImageIndex'#2#2#9'OnEx'
+'files ( *.xsd )|*.xsd|WDSL files(*.WSDL)|*.WSDL'#10'InitialDir'#6#2'.\'#7'O' +'ecute'#7#22'actAddXsdImportExecute'#8'OnUpdate'#7#21'actAddXsdImportUpdate'
+'ptions'#11#15'ofPathMustExist'#15'ofFileMustExist'#14'ofEnableSizing'#12'of' +#0#0#0#11'TOpenDialog'#2'OD'#6'Filter'#6'gwsdl files(*.wsdl)|*.wsdl|Pascal f'
+'ViewDetail'#0#4'left'#3#153#1#3'top'#2'X'#0#0#10'TSynPasSyn'#10'SynPasSyn1' +'ile (*.pas)|*.pas|XSD files ( *.xsd )|*.xsd|WDSL files(*.WSDL)|*.WSDL'#10'I'
+#7'Enabled'#8#19'AsmAttri.FrameEdges'#7#9'sfeAround'#23'CommentAttri.Foregro' +'nitialDir'#6#2'.\'#7'Options'#11#15'ofPathMustExist'#15'ofFileMustExist'#14
+'und'#7#6'clBlue'#23'CommentAttri.FrameEdges'#7#9'sfeAround'#18'CommentAttri' +'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3#153#1#3'top'#2'X'#0#0#10'TSynP'
+'.Style'#11#6'fsBold'#0#28'IDEDirectiveAttri.FrameEdges'#7#9'sfeAround'#26'I' +'asSyn'#10'SynPasSyn1'#7'Enabled'#8#19'AsmAttri.FrameEdges'#7#9'sfeAround'#23
+'dentifierAttri.FrameEdges'#7#9'sfeAround'#19'KeyAttri.FrameEdges'#7#9'sfeAr' +'CommentAttri.Foreground'#7#6'clBlue'#23'CommentAttri.FrameEdges'#7#9'sfeAro'
+'ound'#22'NumberAttri.FrameEdges'#7#9'sfeAround'#21'SpaceAttri.FrameEdges'#7 +'und'#18'CommentAttri.Style'#11#6'fsBold'#0#28'IDEDirectiveAttri.FrameEdges'
+#9'sfeAround'#22'StringAttri.Foreground'#7#8'clMaroon'#22'StringAttri.FrameE' +#7#9'sfeAround'#26'IdentifierAttri.FrameEdges'#7#9'sfeAround'#19'KeyAttri.Fr'
+'dges'#7#9'sfeAround'#22'SymbolAttri.FrameEdges'#7#9'sfeAround'#17'SymbolAtt' +'ameEdges'#7#9'sfeAround'#22'NumberAttri.FrameEdges'#7#9'sfeAround'#21'Space'
+'ri.Style'#11#6'fsBold'#0#25'CaseLabelAttri.FrameEdges'#7#9'sfeAround'#25'Di' +'Attri.FrameEdges'#7#9'sfeAround'#22'StringAttri.Foreground'#7#8'clMaroon'#22
+'rectiveAttri.Foreground'#7#7'clGreen'#25'DirectiveAttri.FrameEdges'#7#9'sfe' +'StringAttri.FrameEdges'#7#9'sfeAround'#22'SymbolAttri.FrameEdges'#7#9'sfeAr'
+'Around'#20'DirectiveAttri.Style'#11#6'fsBold'#0#12'CompilerMode'#7#9'pcmDel' +'ound'#17'SymbolAttri.Style'#11#6'fsBold'#0#25'CaseLabelAttri.FrameEdges'#7#9
+'phi'#14'NestedComments'#9#4'left'#3#183#1#3'top'#2'h'#0#0#11'TSaveDialog'#2 +'sfeAround'#25'DirectiveAttri.Foreground'#7#7'clGreen'#25'DirectiveAttri.Fra'
+'SD'#10'DefaultExt'#6#5'.WSDL'#6'Filter'#6'Owsdl files (*.wsdl)|*.wsdl|XSD f' +'meEdges'#7#9'sfeAround'#20'DirectiveAttri.Style'#11#6'fsBold'#0#12'Compiler'
+'iles ( *.xsd )|*.xsd|WDSL files (*.WDSL)|*.WDSL'#11'FilterIndex'#2#0#7'Opti' +'Mode'#7#9'pcmDelphi'#14'NestedComments'#9#4'left'#3#183#1#3'top'#2'h'#0#0#11
+'ons'#11#15'ofPathMustExist'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3 +'TSaveDialog'#2'SD'#10'DefaultExt'#6#5'.WSDL'#6'Filter'#6'Owsdl files (*.wsd'
+#242#1#3'top'#3#176#0#0#0#10'TPopupMenu'#10'PopupMenu1'#6'Images'#7#5'DM.IM' ,'l)|*.wsdl|XSD files ( *.xsd )|*.xsd|WDSL files (*.WDSL)|*.WDSL'#11'FilterIn'
+#4'left'#3#152#0#3'top'#3#152#0#0#9'TMenuItem'#10'MenuItem28'#6'Action'#7#13 +'dex'#2#0#7'Options'#11#15'ofPathMustExist'#14'ofEnableSizing'#12'ofViewDeta'
+'actFullExpand'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0 +'il'#0#4'left'#3#242#1#3'top'#3#176#0#0#0#10'TPopupMenu'#10'PopupMenu1'#6'Im'
+#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0 +'ages'#7#5'DM.IM'#4'left'#3#152#0#3'top'#3#152#0#0#9'TMenuItem'#10'MenuItem2'
,#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +'8'#6'Action'#7#13'actFullExpand'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4
+#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'
+#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#0#0#255#255#0#0#255#255#0#0#255 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#255#255#0#0#255
+#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255 +#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255
+#0#0#255#255#0#0#255#255#0#0#255#255#255#255#255#0#255#255#255#0#255#255#255 +#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#255#255#255#0#255#255#255#0
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#153'['#30#196#150'X'#26#201#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#134#134#136#255#134#134#136#255#134#134#136#255
+#134#134#136#255#159'c'''#207#175'xA'#255#173'u='#255#151'Y'#27#209#134#134
+#136#255#134#134#136#255#134#134#136#255#134#134#136#255#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#171'r:'#6
+#168'n5'#217#181#128'K'#255#204#163'z'#255#204#163'z'#255#174'v?'#255#151'Y'
+#27#219#149'W'#25#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#175'xA'#184#172't<'
+#247#193#146'c'#255#206#166'~'#255#205#164'|'#255#177'zD'#255#154'] '#247#152
+'Z'#29#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#134#134#136#255#134#134#136#255#134#134#136#255#134#134
+#136#255#181#128'K'#255#208#169#131#255#207#168#129#255#162'f+'#255#134#134
+#136#255#134#134#136#255#134#134#136#255#134#134#136#255#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#177'zD'#255#210#172#135#255#209#171#133#255#166'l2'#255
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#183#131'O'#255#211#174#138#255#211#174#138#255#171'r:'
+#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#134#134#136#255#134#134#136#255
+#134#134#136#255#134#134#136#255#190#147'i'#255#210#181#151#255#209#179#148
+#255#182#135'W'#255#134#134#136#255#134#134#136#255#134#134#136#255#134#134
+#136#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#194#154'q'#255#212#184#156#255
+#211#182#153#255#186#141'a'#255#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#196#157'u'#255#213#185#158
+#255#212#184#156#255#189#146'g'#255#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#134
+#134#136#255#134#134#136#255#134#134#136#255#134#134#136#255#197#158'w'#255
+#197#158'w'#255#194#154'q'#255#193#152'n'#255#134#134#136#255#134#134#136#255
+#134#134#136#255#134#134#136#255#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#7'OnClick'#7
+#20'actFullExpandExecute'#0#0#9'TMenuItem'#10'MenuItem27'#6'Action'#7#15'act'
+'FullCollapse'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0
+#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0
+#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#134#134#136#255#134#134#136#255#134
+#134#136#255#134#134#136#255#197#158'w'#255#197#158'w'#255#194#154'q'#255#193
+#152'n'#255#134#134#136#255#134#134#136#255#134#134#136#255#134#134#136#255
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#196#157'u'#255#213#185#158#255#212#184
+#156#255#189#146'g'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#194#154'q'#255#212#184#156#255#211#182
+#153#255#186#141'a'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#134#134#136#255
+#134#134#136#255#134#134#136#255#134#134#136#255#190#147'i'#255#210#181#151
+#255#209#179#148#255#182#135'W'#255#134#134#136#255#134#134#136#255#134#134
+#136#255#134#134#136#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#183#131'O'#255
+#211#174#138#255#211#174#138#255#171'r:'#255#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#177'zD'#255
+#210#172#135#255#209#171#133#255#166'l2'#255#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#134#134#136#255#134#134#136#255#134#134#136#255#134#134#136#255#181
+#128'K'#255#208#169#131#255#207#168#129#255#162'f+'#255#134#134#136#255#134
+#134#136#255#134#134#136#255#134#134#136#255#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#175'xA'#184#172't<'#247
+#193#146'c'#255#206#166'~'#255#205#164'|'#255#177'zD'#255#154'] '#247#152'Z'
+#29#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#171'r:'#6#168'n5'#217#181#128'K'
+#255#204#163'z'#255#204#163'z'#255#174'v?'#255#151'Y'#27#219#149'W'#25#6#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#134#134#136#255#134#134#136#255#134#134#136#255#134#134#136#255#159'c'
+''''#207#175'xA'#255#173'u='#255#151'Y'#27#209#134#134#136#255#134#134#136
+#255#134#134#136#255#134#134#136#255#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#153'['#30#196#150'X'#26#201#255#255#255#0#255#255#255#0#255#255 +#255#255#0#153'['#30#196#150'X'#26#201#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#134#134#136#255#134#134#136#255#134#134#136#255#134#134#136
+#255#159'c'''#207#175'xA'#255#173'u='#255#151'Y'#27#209#134#134#136#255#134
+#134#136#255#134#134#136#255#134#134#136#255#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#171'r:'#6#168'n5'#217
+#181#128'K'#255#204#163'z'#255#204#163'z'#255#174'v?'#255#151'Y'#27#219#149
+'W'#25#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#175'xA'#184#172't<'#247#193#146
+'c'#255#206#166'~'#255#205#164'|'#255#177'zD'#255#154'] '#247#152'Z'#29#187
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#134#134#136#255#134#134#136#255#134#134#136#255#134#134#136#255
+#181#128'K'#255#208#169#131#255#207#168#129#255#162'f+'#255#134#134#136#255
+#134#134#136#255#134#134#136#255#134#134#136#255#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#177'zD'#255#210#172#135#255#209#171#133#255#166'l2'#255#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#183#131'O'#255#211#174#138#255#211#174#138#255#171'r:'#255#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#134#134#136#255#134#134#136#255#134#134#136#255
+#134#134#136#255#190#147'i'#255#210#181#151#255#209#179#148#255#182#135'W'
+#255#134#134#136#255#134#134#136#255#134#134#136#255#134#134#136#255#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#194#154'q'#255#212#184#156#255#211#182#153#255
+#186#141'a'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#196#157'u'#255#213#185#158#255#212#184#156
+#255#189#146'g'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#134#134#136#255#134
+#134#136#255#134#134#136#255#134#134#136#255#197#158'w'#255#197#158'w'#255
+#194#154'q'#255#193#152'n'#255#134#134#136#255#134#134#136#255#134#134#136
+#255#134#134#136#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#7'OnClick'#7#20'actFullExpa'
+'ndExecute'#0#0#9'TMenuItem'#10'MenuItem27'#6'Action'#7#15'actFullCollapse'
+#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16
+#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#134#134#136#255#134#134#136#255#134#134#136#255 +#255#255#255#0#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0
+#134#134#136#255#197#158'w'#255#197#158'w'#255#194#154'q'#255#193#152'n'#255 +#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0
+#134#134#136#255#134#134#136#255#134#134#136#255#134#134#136#255#255#255#255 +#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#196#157'u'#255#213#185#158#255#212#184#156#255#189
+#146'g'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#194#154'q'#255#212#184#156#255#211#182#153#255
+#186#141'a'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#134#134#136#255#134#134
+#136#255#134#134#136#255#134#134#136#255#190#147'i'#255#210#181#151#255#209
+#179#148#255#182#135'W'#255#134#134#136#255#134#134#136#255#134#134#136#255
+#134#134#136#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#183#131'O'#255#211#174
+#138#255#211#174#138#255#171'r:'#255#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#177'zD'#255#210#172#135
+#255#209#171#133#255#166'l2'#255#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#134
+#134#136#255#134#134#136#255#134#134#136#255#134#134#136#255#181#128'K'#255
+#208#169#131#255#207#168#129#255#162'f+'#255#134#134#136#255#134#134#136#255
+#134#134#136#255#134#134#136#255#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#175'xA'#184#172't<'#247#193#146'c'
+#255#206#166'~'#255#205#164'|'#255#177'zD'#255#154'] '#247#152'Z'#29#187#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#171'r:'#6#168'n5'#217#181#128'K'#255#204
+#163'z'#255#204#163'z'#255#174'v?'#255#151'Y'#27#219#149'W'#25#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#134
+#134#136#255#134#134#136#255#134#134#136#255#134#134#136#255#159'c'''#207#175
+'xA'#255#173'u='#255#151'Y'#27#209#134#134#136#255#134#134#136#255#134#134
+#136#255#134#134#136#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#153'['#30#196#150'X'#26#201#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255 +#255#0#255#255#255#0#255#255#255#0#7'OnClick'#7#22'actFullCollapseExecute'#0
+#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255 +#0#9'TMenuItem'#10'MenuItem39'#6'Action'#7#14'actRefreshView'#11'Bitmap.Data'
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0
+#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#164
+'e4'#162#164'e4'#1#255#255#255#0#255#255#255#0#164'e4'#5#164'e4S'#167'j:'#190
+#166'i8'#233#164'f5'#250#167'j:'#228#167'k;'#170#164'e4$'#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#164'e4'#255#165'g6'#147#255#255#255#0
+#164'e4T'#166'g7'#238#181#128'U'#243#206#166#132#255#216#182#151#255#219#185
+#153#255#211#172#138#255#194#148'm'#252#166'h8'#246#164'f5['#255#255#255#0
+#255#255#255#0#255#255#255#0#165'g7'#254#183#132'['#247#165'g6'#212#177'zN'
+#244#227#202#180#255#236#218#201#255#231#209#188#255#227#201#176#255#222#190
+#160#255#210#171#136#255#206#165#130#255#211#174#142#255#166'h8'#245#164'e4*'
+#255#255#255#0#255#255#255#0#166'h8'#253#241#228#216#255#212#178#149#254#244
+#233#224#255#243#232#221#255#237#220#204#255#210#173#143#254#176'xL'#245#165
+'f5'#251#166'i9'#255#166'i9'#254#169'm='#255#176'xL'#255#167'j:'#168#255#255
+#255#0#255#255#255#0#165'g7'#253#246#238#230#255#245#236#227#255#245#237#228
+#255#230#210#193#255#176'yM'#245#166'i8'#202#164'e46'#255#255#255#0#164'e4j'
+#169'k<'#237#182'|O'#255#167'j:'#254#165'h7'#250#255#255#255#0#255#255#255#0
+#164'f5'#252#246#238#230#255#235#215#196#255#234#217#201#255#164'e4'#254#164
+'e4j'#255#255#255#0#255#255#255#0#255#255#255#0#164'e4'#11#165'f5'#233#201
+#149'l'#141#183#127'S'#194#164'e4'#255#164'e4'#5#255#255#255#0#164'e4'#252
+#245#237#229#255#246#237#229#255#245#236#228#255#215#183#156#253#166'h7'#224
,#164'e4'#16#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#213#164
+'~'#26#205#153'r9'#164'e4'#252#164'e4'#12#255#255#255#0#164'e4'#249#164'e4'
+#254#164'e4'#254#164'e4'#253#164'e4'#252#164'e4'#251#164'e4'#185#164'e4'#29
+#164'e4'#24#164'e4'#24#164'e4'#24#164'e4'#24#164'e4'#24#164'e4'#28#255#255
+#255#0#255#255#255#0#164'e4'#13#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#164'e4'#160#164'e4'#255#173'tG'#248
+#175'wL'#247#175'wL'#247#175'xL'#247#164'e4'#255#164'e4'#8#255#255#255#0#164
+'e4'#252#179'yL~'#207#157'v+'#187#131'W'#19#164'e4'#2#255#255#255#0#255#255
+#255#0#164'e4'#4#166'h8'#196#208#172#143#250#246#238#231#255#242#230#219#255
+#246#238#230#255#166'j:'#251#164'e4'#9#255#255#255#0#164'e5'#254#167'j:'#251
+#199#145'h'#157#165'g7'#230#164'e4#'#255#255#255#0#255#255#255#0#255#255#255
+#0#164'e4`'#164'f5'#255#233#215#199#255#235#216#198#255#245#236#227#255#166
+'j:'#250#164'e4'#10#255#255#255#0#166'h8'#243#171'pA'#255#169'l<'#254#167'j:'
+#245#164'e4u'#164'e4'#25#164'e4E'#166'i8'#205#185#136'a'#245#235#219#205#255
+#245#235#226#255#246#238#230#255#246#238#230#255#167'j:'#250#164'e4'#11#255
+#255#255#0#167'i9'#155#192#144'i'#253#197#152'r'#255#168'k<'#255#164'f5'#255
+#167'j:'#252#183#133']'#243#217#187#161#254#241#228#216#255#242#230#219#255
+#243#232#221#255#206#167#136#253#234#216#200#255#167'j:'#249#164'e4'#13#255
+#255#255#0#164'e4)'#166'i9'#245#211#173#140#255#220#189#157#255#221#190#161
+#255#229#203#180#255#233#211#191#255#238#221#204#255#240#226#213#255#231#210
+#191#255#175'wK'#245#165'g6'#192#171'qC'#247#164'f5'#252#164'e4'#14#255#255
+#255#0#255#255#255#0#164'e5P'#166'h8'#246#192#144'h'#250#211#176#143#255#223
+#194#168#255#222#193#168#255#212#177#147#255#185#135'_'#244#165'g7'#240#164
+'e4X'#255#255#255#0#164'f5f'#164'e4'#255#164'e4'#15#255#255#255#0#255#255#255
+#0#255#255#255#0#164'e4'#29#167'i:'#159#167'j:'#222#165'g6'#246#167'i9'#229
+#167'j:'#188#164'e4S'#164'e4'#5#255#255#255#0#255#255#255#0#255#255#255#0#164
+'e4y'#164'e4'#16#7'OnClick'#7#21'actRefreshViewExecute'#0#0#9'TMenuItem'#10
+'MenuItem26'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem51'#6'Action'#7#13
+'actTreeSearch'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0
+#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0
+#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#7'OnClick'#7#22'actFullCollapseExecute'#0#0#9'T' +#255#255#255#0#255#255#255#0'>94'#255'940'#255'3/+'#255',)%'#255'''$!'#255' '
+'MenuItem'#10'MenuItem39'#6'Action'#7#14'actRefreshView'#11'Bitmap.Data'#10 +#29#27#255#23#22#20#26#17#15#14#219#11#10#9#255#7#7#6#255#4#4#3#255#0#0#0#255
+':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0 +#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0'FA;'#255#133'zp'#255#195
+' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#164'e4' +#184#174#255'|rh'#255#127'uk'#255'62-'#255#30#28#25#15'(%"'#212#149#137'}'
+#162#164'e4'#1#255#255#255#0#255#255#255#0#164'e4'#5#164'e4S'#167'j:'#190#166 +#255#186#174#162#255'|rh'#255#127'uk'#255#1#1#1#255#255#255#255#0#255#255#255
+'i8'#233#164'f5'#250#167'j:'#228#167'k;'#170#164'e4$'#255#255#255#0#255#255 +#0#255#255#255#0'MGA'#255#131'xo'#255#204#195#186#255'xoe'#255'{qg'#255'/+('
+#255#0#255#255#255#0#255#255#255#0#164'e4'#255#165'g6'#147#255#255#255#0#164 +#249'''$!'#1#29#27#24#238#149#137'}'#255#194#184#173#255'xoe'#255'|rh'#255#6
+'e4T'#166'g7'#238#181#128'U'#243#206#166#132#255#216#182#151#255#219#185#153 +#5#5#255#255#255#255#0#255#255#255#0#255#255#255#0'SLF'#252#131'xo'#255#204
+#255#211#172#138#255#194#148'm'#252#166'h8'#246#164'f5['#255#255#255#0#255 +#195#186#255'ypf'#255'qh_'#255'73.'#213#255#255#255#0'%" '#213#133'zp'#255
+#255#255#0#255#255#255#0#165'g7'#254#183#132'['#247#165'g6'#212#177'zN'#244 +#194#184#173#255'xoe'#255'{qg'#255#10#9#8#252#255#255#255#0#255#255#255#0#255
+#227#202#180#255#236#218#201#255#231#209#188#255#227#201#176#255#222#190#160 +#255#255#0'ZRL'#195#159#146#134#255#204#195#186#255#192#180#170#255#166#152
+#255#210#171#136#255#206#165#130#255#211#174#142#255#166'h8'#245#164'e4*'#255 +#139#255'>94'#168#255#255#255#0',)%'#168#144#132'y'#255#194#184#173#255#192
+#255#255#0#255#255#255#0#166'h8'#253#241#228#216#255#212#178#149#254#244#233 +#180#170#255#168#155#142#255#17#15#14#195#255#255#255#0#255#255#255#0'ypf'#5
+#224#255#243#232#221#255#237#220#204#255#210#173#143#254#176'xL'#245#165'f5' +'\UN'#249'B=8'#255'XQJ'#255'=83'#255'3/+'#255'# '#29#229#23#22#20'0'#30#28#25
+#251#166'i9'#255#166'i9'#254#169'm='#255#176'xL'#255#167'j:'#168#255#255#255 +#181#26#24#22#255'%" '#255#25#23#21#255#15#14#13#255#1#1#1#238#0#0#0#2#255
+#0#255#255#255#0#165'g7'#253#246#238#230#255#245#236#227#255#245#237#228#255 +#255#255#0#159#146#134#5#157#145#133#255#177#163#150#255#127'uk'#255'|rh'#255
+#230#210#193#255#176'yM'#245#166'i8'#202#164'e46'#255#255#255#0#164'e4j'#169 +'wmd'#255'lc['#255'.*&'#255'VOH'#255#128'vl'#255'|rh'#255'wmd'#255'pg^'#255#0
+'k<'#237#182'|O'#255#167'j:'#254#165'h7'#250#255#255#255#0#255#255#255#0#164 +#0#0#254#0#0#0#5#255#255#255#0#171#157#144#4#175#161#148#225#186#174#162#255
+'f5'#252#246#238#230#255#235#215#196#255#234#217#201#255#164'e4'#254#164'e4j'
+#255#255#255#0#255#255#255#0#255#255#255#0#164'e4'#11#165'f5'#233#201#149'l'
+#141#183#127'S'#194#164'e4'#255#164'e4'#5#255#255#255#0#164'e4'#252#245#237
+#229#255#246#237#229#255#245#236#228#255#215#183#156#253#166'h7'#224#164'e4'
+#16#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#213#164'~'#26#205
+#153'r9'#164'e4'#252#164'e4'#12#255#255#255#0#164'e4'#249#164'e4'#254#164'e4'
+#254#164'e4'#253#164'e4'#252#164'e4'#251#164'e4'#185#164'e4'#29#164'e4'#24
+#164'e4'#24#164'e4'#24#164'e4'#24#164'e4'#24#164'e4'#28#255#255#255#0#255#255
+#255#0#164'e4'#13#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#164'e4'#160#164'e4'#255#173'tG'#248#175'wL'#247#175
,'wL'#247#175'xL'#247#164'e4'#255#164'e4'#8#255#255#255#0#164'e4'#252#179'yL~'
+#207#157'v+'#187#131'W'#19#164'e4'#2#255#255#255#0#255#255#255#0#164'e4'#4
+#166'h8'#196#208#172#143#250#246#238#231#255#242#230#219#255#246#238#230#255
+#166'j:'#251#164'e4'#9#255#255#255#0#164'e5'#254#167'j:'#251#199#145'h'#157
+#165'g7'#230#164'e4#'#255#255#255#0#255#255#255#0#255#255#255#0#164'e4`'#164
+'f5'#255#233#215#199#255#235#216#198#255#245#236#227#255#166'j:'#250#164'e4'
+#10#255#255#255#0#166'h8'#243#171'pA'#255#169'l<'#254#167'j:'#245#164'e4u'
+#164'e4'#25#164'e4E'#166'i8'#205#185#136'a'#245#235#219#205#255#245#235#226
+#255#246#238#230#255#246#238#230#255#167'j:'#250#164'e4'#11#255#255#255#0#167
+'i9'#155#192#144'i'#253#197#152'r'#255#168'k<'#255#164'f5'#255#167'j:'#252
+#183#133']'#243#217#187#161#254#241#228#216#255#242#230#219#255#243#232#221
+#255#206#167#136#253#234#216#200#255#167'j:'#249#164'e4'#13#255#255#255#0#164
+'e4)'#166'i9'#245#211#173#140#255#220#189#157#255#221#190#161#255#229#203#180
+#255#233#211#191#255#238#221#204#255#240#226#213#255#231#210#191#255#175'wK'
+#245#165'g6'#192#171'qC'#247#164'f5'#252#164'e4'#14#255#255#255#0#255#255#255
+#0#164'e5P'#166'h8'#246#192#144'h'#250#211#176#143#255#223#194#168#255#222
+#193#168#255#212#177#147#255#185#135'_'#244#165'g7'#240#164'e4X'#255#255#255
+#0#164'f5f'#164'e4'#255#164'e4'#15#255#255#255#0#255#255#255#0#255#255#255#0
+#164'e4'#29#167'i:'#159#167'j:'#222#165'g6'#246#167'i9'#229#167'j:'#188#164
+'e4S'#164'e4'#5#255#255#255#0#255#255#255#0#255#255#255#0#164'e4y'#164'e4'#16
+#7'OnClick'#7#21'actRefreshViewExecute'#0#0#9'TMenuItem'#10'MenuItem26'#7'Ca'
+'ption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem51'#6'Action'#7#13'actTreeSearch'
+#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16
+#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'>94'#255'940'#255'3/+'#255',)%'#255'''$!'#255' '#29#27#255#23
+#22#20#26#17#15#14#219#11#10#9#255#7#7#6#255#4#4#3#255#0#0#0#255#0#0#0#255
+#255#255#255#0#255#255#255#0#255#255#255#0'FA;'#255#133'zp'#255#195#184#174
+#255'|rh'#255#127'uk'#255'62-'#255#30#28#25#15'(%"'#212#149#137'}'#255#186
+#174#162#255'|rh'#255#127'uk'#255#1#1#1#255#255#255#255#0#255#255#255#0#255
+#255#255#0'MGA'#255#131'xo'#255#204#195#186#255'xoe'#255'{qg'#255'/+('#249
+'''$!'#1#29#27#24#238#149#137'}'#255#194#184#173#255'xoe'#255'|rh'#255#6#5#5
+#255#255#255#255#0#255#255#255#0#255#255#255#0'SLF'#252#131'xo'#255#204#195
+#186#255'ypf'#255'qh_'#255'73.'#213#255#255#255#0'%" '#213#133'zp'#255#194
+#184#173#255'xoe'#255'{qg'#255#10#9#8#252#255#255#255#0#255#255#255#0#255#255
+#255#0'ZRL'#195#159#146#134#255#204#195#186#255#192#180#170#255#166#152#139
+#255'>94'#168#255#255#255#0',)%'#168#144#132'y'#255#194#184#173#255#192#180
+#170#255#168#155#142#255#17#15#14#195#255#255#255#0#255#255#255#0'ypf'#5'\UN'
+#249'B=8'#255'XQJ'#255'=83'#255'3/+'#255'# '#29#229#23#22#20'0'#30#28#25#181
+#26#24#22#255'%" '#255#25#23#21#255#15#14#13#255#1#1#1#238#0#0#0#2#255#255
+#255#0#159#146#134#5#157#145#133#255#177#163#150#255#127'uk'#255'|rh'#255'wm'
+'d'#255'lc['#255'.*&'#255'VOH'#255#128'vl'#255'|rh'#255'wmd'#255'pg^'#255#0#0
+#0#254#0#0#0#5#255#255#255#0#171#157#144#4#175#161#148#225#186#174#162#255
+#130'wm'#255#130'wm'#255#170#145'{'#255#186#167#148#255#183#164#142#250#176 +#130'wm'#255#130'wm'#255#170#145'{'#255#186#167#148#255#183#164#142#250#176
+#151#129#255#159#141'}'#255#131'm['#255'qcW'#255#149#137'}'#255#4#4#3#224#0#0 +#151#129#255#159#141'}'#255#131'm['#255'qcW'#255#149#137'}'#255#4#4#3#224#0#0
+#0#3#255#255#255#0#185#172#160#8#135'}rH'#155#142#130#255#157#145#133#255#134 +#0#3#255#255#255#0#185#172#160#8#135'}rH'#155#142#130#255#157#145#133#255#134
@ -1083,13 +1089,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+#17#2#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#17#2#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#142#131'x'#226#195#184#174#255'e]U'#255#255#255#255#0'|rh'#255#168#155#142 +#142#131'x'#226#195#184#174#255'e]U'#255#255#255#255#0'|rh'#255#168#155#142
+#255#156#143#131#228#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#156#143#131#228#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#156 ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#156
+#143#131#226#188#176#164#255#157#145#133#255#255#255#255#0#174#160#147#255 +#143#131#226#188#176#164#255#157#145#133#255#255#255#255#0#174#160#147#255
+#157#145#133#255'e]U'#218#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#157#145#133#255'e]U'#218#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#7'OnClick'#7#20'actTreeSearchExecute'#0#0#9'TMenuItem' +#255#0#255#255#255#0#7'OnClick'#7#20'actTreeSearchExecute'#0#0#9'TMenuItem'
@ -1147,13 +1153,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#24#22')'#255'@?h'#255'***'#255#1#2#6#255#1#3#20#255#0#0 +#0#0#0#0#0#0#0#0#0#0#24#22')'#255'@?h'#255'***'#255#1#2#6#255#1#3#20#255#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#26#25'*'#255#136'w'#194#255'XS'#128#255'ppp'#255#127#128#127#255'\cd'#255'-' +#26#25'*'#255#136'w'#194#255'XS'#128#255'ppp'#255#127#128#127#255'\cd'#255'-'
+'1@'#255#0#0#16#255#0#0#6#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +'1@'#255#0#0#16#255#0#0#6#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#30#30'4'#255#131'|'#200#255#136#128#204#255'TRx'#255'OQN'#255'gif'#255#141 +#30#30'4'#255#131'|'#200#255#136#128#204#255'TRx'#255'OQN'#255'gif'#255#141
+#142#141#255#166#166#166#255#150#150#162#255'ZZ'#134#255#14#14'0'#255#0#0#0#0 +#142#141#255#166#166#166#255#150#150#162#255'ZZ'#134#255#14#14'0'#255#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0'""6'#255#135'~'#202#255#133'|'#210#255'~~'#203#255 +#0#0#0#0#0#0#0#0#0#0#0#0'""6'#255#135'~'#202#255#133'|'#210#255'~~'#203#255
,'jg'#165#255'41J'#255'99?'#255'ggg'#255#130#130#130#255#159#159#159#255#162 +'jg'#165#255'41J'#255'99?'#255'ggg'#255#130#130#130#255#159#159#159#255#162
+#162#162#255#8#8#8#255#0#0#0#0#0#0#0#0#0#0#0#0'(&F'#255#132#132#206#255#133 +#162#162#255#8#8#8#255#0#0#0#0#0#0#0#0#0#0#0#0'(&F'#255#132#132#206#255#133
+#134#206#255#142#140#207#255#127'v'#200#255'IB'#165#255'40'#154#255'95'#149 +#134#206#255#142#140#207#255#127'v'#200#255'IB'#165#255'40'#154#255'95'#149
+#255',)s'#255'AAj'#255'ZWh'#255'hhj'#255#0#0#0#0#0#0#0#0#0#0#0#0'-*G'#255#135 +#255',)s'#255'AAj'#255'ZWh'#255'hhj'#255#0#0#0#0#0#0#0#0#0#0#0#0'-*G'#255#135
@ -1211,13 +1217,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+#150#245#255'fj'#235#255'oq'#236#255'nr'#236#255'Z\'#229#255'\a'#231#255'_b' +#150#245#255'fj'#235#255'oq'#236#255'nr'#236#255'Z\'#229#255'\a'#231#255'_b'
+#233#255'QX'#226#255'mu'#187'0'#255#255#255#0'~'#159#128#10's'#149'u;l'#143 +#233#255'QX'#226#255'mu'#187'0'#255#255#255#0'~'#159#128#10's'#149'u;l'#143
+'o[n'#168'w'#255'LR'#224#255#162#162#244#255'jl'#236#255'ac'#234#255#151#147 +'o[n'#168'w'#255'LR'#224#255#162#162#244#255'jl'#236#255'ac'#234#255#151#147
+#247#255#151#147#247#255'dh'#233#255'ef'#234#255'\a'#231#255'OW'#226#255'mu' ,#247#255#151#147#247#255'dh'#233#255'ef'#234#255'\a'#231#255'OW'#226#255'mu'
+#187'0'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#187'0'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'TZ'#219#254'||'#242#255#151#147#247#255'dh'#233#255'RX'#227#255'RX'#227#255 +'TZ'#219#254'||'#242#255#151#147#247#255'dh'#233#255'RX'#227#255'RX'#227#255
+'dh'#233#255#151#147#247#255'||'#242#255'MV'#217#254'mu'#187'&'#255#255#255#0 +'dh'#233#255#151#147#247#255'||'#242#255'MV'#217#254'mu'#187'&'#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'sx'#206#200'no'#236 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'sx'#206#200'no'#236
+#255'fh'#235#255'_b'#233#255'xx'#240#255'tt'#240#255'_b'#233#255'ik'#235#255 +#255'fh'#235#255'_b'#233#255'xx'#240#255'tt'#240#255'_b'#233#255'ik'#235#255
,'oq'#236#255'rw'#204#200#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +'oq'#236#255'rw'#204#200#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#128#136#202#10't|'#193';mt'#189'[ac'#227 +#255#0#255#255#255#0#255#255#255#0#128#136#202#10't|'#193';mt'#189'[ac'#227
+#255'QW'#226#255'QW'#226#255'_b'#227#255'lt'#188'^t{'#193';'#128#136#202#10 +#255'QW'#226#255'QW'#226#255'_b'#227#255'lt'#188'^t{'#193';'#128#136#202#10
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
@ -1275,13 +1281,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223 +#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223
+#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223 +#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223
+#223#255#218#219#219#255#210#210#210#255#201#201#200#255#192#192#192#255#183 +#223#255#218#219#219#255#210#210#210#255#201#201#200#255#192#192#192#255#183
+#184#183#255#175#174#174#255#166#165#166#255#223#223#223#0#223#223#223#0#223 ,#184#183#255#175#174#174#255#166#165#166#255#223#223#223#0#223#223#223#0#223
+#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223 +#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223
+#223#0#223#223#223#255#218#218#218#255#214#214#214#255#210#210#210#255#206 +#223#0#223#223#223#255#218#218#218#255#214#214#214#255#210#210#210#255#206
+#206#206#255#203#203#203#255#202#202#202#255#165#165#165#255#223#223#223#0 +#206#206#255#203#203#203#255#202#202#202#255#165#165#165#255#223#223#223#0
+#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223 +#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223
+#223#223#0#223#223#223#0#223#223#223#255#220#220#220#255#216#216#216#255#213 +#223#223#0#223#223#223#0#223#223#223#255#220#220#220#255#216#216#216#255#213
,#213#213#255#209#209#209#255#206#206#206#255#204#204#204#255#165#165#165#255 +#213#213#255#209#209#209#255#206#206#206#255#204#204#204#255#165#165#165#255
+#175#174#174#255#166#165#166#255#223#223#223#0#223#223#223#0#223#223#223#0 +#175#174#174#255#166#165#166#255#223#223#223#0#223#223#223#0#223#223#223#0
+#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#255#218#218#218#255 +#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#255#218#218#218#255
+#214#214#214#255#210#210#210#255#206#206#206#255#203#203#203#255#202#202#202 +#214#214#214#255#210#210#210#255#206#206#206#255#203#203#203#255#202#202#202
@ -1339,13 +1345,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+#241#241#241#255#196#196#196#255#255#255#255#255#255#255#255#255#211#211#211 +#241#241#241#255#196#196#196#255#255#255#255#255#255#255#255#255#211#211#211
+#255#196#196#196#255#196#196#196#255#241#241#241#255'\\\l'#21#21#21#0#13#13 +#255#196#196#196#255#196#196#196#255#241#241#241#255'\\\l'#21#21#21#0#13#13
+#13#0#13#13#13#0#13#13#13#0#13#13#13#0'###'#0'dddj'#246#246#246#255#192#192 +#13#0#13#13#13#0#13#13#13#0#13#13#13#0'###'#0'dddj'#246#246#246#255#192#192
+#192#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#192 ,#192#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#192
+#192#192#255#246#246#246#255'dddj'#25#25#25'X'#21#21#21'u'#21#21#21'u'#21#21 +#192#192#255#246#246#246#255'dddj'#25#25#25'X'#21#21#21'u'#21#21#21'u'#21#21
+#21'u'#21#21#21'u'#21#21#21'u111'#174#144#144#144#255'ooo'#255#176#176#176 +#21'u'#21#21#21'u'#21#21#21'u111'#174#144#144#144#255'ooo'#255#176#176#176
+#255#255#255#255#255#255#255#255#255#255#255#255#255#187#187#187#255#249#249 +#255#255#255#255#255#255#255#255#255#255#255#255#255#187#187#187#255#249#249
+#249#255'llli888q'#236#236#236#255#232#232#232#255#232#232#232#255#232#232 +#249#255'llli888q'#236#236#236#255#232#232#232#255#232#232#232#255#232#232
+#232#255#232#232#232#255#232#232#232#255#232#232#232#255#236#236#236#255'yyy' +#232#255#232#232#232#255#232#232#232#255#232#232#232#255#236#236#236#255'yyy'
,#255#173#173#173#255#173#173#173#255#173#173#173#255#173#173#173#255#253#253 +#255#173#173#173#255#173#173#173#255#173#173#173#255#173#173#173#255#253#253
+#253#255'ttthIIIn'#234#234#234#255'&&&'#255'&&&'#255'&&&'#255'&&&'#255#234 +#253#255'ttthIIIn'#234#234#234#255'&&&'#255'&&&'#255'&&&'#255'&&&'#255#234
+#234#234#255'fff'#255#234#234#234#255#176#176#176#255#255#255#255#255#255#255 +#234#234#255'fff'#255#234#234#234#255#176#176#176#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255'zzzgRRRm'#238#238 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255'zzzgRRRm'#238#238
@ -1403,13 +1409,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+#255#223#223#223#0#223#223#223#0#0#0#0#255#230#178#139#255#235#194#162#255 +#255#223#223#223#0#223#223#223#0#0#0#0#255#230#178#139#255#235#194#162#255
+#234#190#160#255#233#190#160#255#228#178#144#253#223#223#223#0#223#223#223#0 +#234#190#160#255#233#190#160#255#228#178#144#253#223#223#223#0#223#223#223#0
+#231#183#149#254#235#195#166#255#235#197#167#255#236#198#167#255#230#179#140 +#231#183#149#254#235#195#166#255#235#197#167#255#236#198#167#255#230#179#140
+#255#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#230#179#140#255 ,#255#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#230#179#140#255
+#236#198#167#255#235#197#167#255#235#195#166#255#231#183#149#254#223#223#223 +#236#198#167#255#235#197#167#255#235#195#166#255#231#183#149#254#223#223#223
+#0#223#223#223#0#230#180#143#228#233#190#155#255#235#195#164#255#236#199#170 +#0#223#223#223#0#230#180#143#228#233#190#155#255#235#195#164#255#236#199#170
+#255#230#179#140#255#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0 +#255#230#179#140#255#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0
+#230#179#140#255#236#199#170#255#235#195#164#255#233#190#155#255#230#180#143 +#230#179#140#255#236#199#170#255#235#195#164#255#233#190#155#255#230#180#143
+#228#223#223#223#0#223#223#223#0#231#177#141':'#231#182#142#147#232#184#147 +#228#223#223#223#0#223#223#223#0#231#177#141':'#231#182#142#147#232#184#147
,#222#234#187#152#253#230#179#140#255#223#223#223#0#223#223#223#0#223#223#223 +#222#234#187#152#253#230#179#140#255#223#223#223#0#223#223#223#0#223#223#223
+#0#223#223#223#0#230#179#140#255#234#187#152#253#232#184#147#222#231#182#142 +#0#223#223#223#0#230#179#140#255#234#187#152#253#232#184#147#222#231#182#142
+#147#231#177#141':'#223#223#223#0#223#223#223#0#204#153'f'#5#238#183#139#13 +#147#231#177#141':'#223#223#223#0#223#223#223#0#204#153'f'#5#238#183#139#13
+#233#180#140'@'#232#179#139#167#232#181#142#253#223#223#223#0#223#223#223#0 +#233#180#140'@'#232#179#139#167#232#181#142#253#223#223#223#0#223#223#223#0
@ -1467,13 +1473,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+#255#247#248#248#255#247#248#248#255#247#248#248#255#247#248#248#255#247#248 +#255#247#248#248#255#247#248#248#255#247#248#248#255#247#248#248#255#247#248
+#248#255#247#248#248#255#133#138#136#255#255#255#255#0#255#255#255#0#255#255 +#248#255#247#248#248#255#133#138#136#255#255#255#255#0#255#255#255#0#255#255
+#255#0#133#138#136#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#0#133#138#136#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 ,#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#133#138#136#255#255#255#255#0#255#255#255#0 +#255#255#255#255#255#255#255#255#133#138#136#255#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#140#142#141#255#133#138#136#255#133#138#136#255 +#255#255#255#0#255#255#255#0#140#142#141#255#133#138#136#255#133#138#136#255
+#133#138#136#255#133#138#136#255#133#138#136#255#133#138#136#255#133#138#136 +#133#138#136#255#133#138#136#255#133#138#136#255#133#138#136#255#133#138#136
+#255#133#138#136#255#133#138#136#255#133#138#136#255#255#255#255#0#255#255 +#255#133#138#136#255#133#138#136#255#133#138#136#255#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#7'OnClick'#7#22'actUpdateObjectExecute'#0 +#255#0#255#255#255#0#255#255#255#0#7'OnClick'#7#22'actUpdateObjectExecute'#0
,#0#9'TMenuItem'#10'MenuItem33'#6'Action'#7#9'actDelete'#11'Bitmap.Data'#10':' +#0#9'TMenuItem'#10'MenuItem33'#6'Action'#7#9'actDelete'#11'Bitmap.Data'#10':'
+#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' ' +#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '
+#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255 +#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
@ -1531,13 +1537,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+#255#0#164'e4'#5#164'e4S'#167'j:'#190#166'i8'#233#164'f5'#250#167'j:'#228#167 +#255#0#164'e4'#5#164'e4S'#167'j:'#190#166'i8'#233#164'f5'#250#167'j:'#228#167
+'k;'#170#164'e4$'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#164 +'k;'#170#164'e4$'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#164
+'e4'#255#165'g6'#147#255#255#255#0#164'e4T'#166'g7'#238#181#128'U'#243#206 +'e4'#255#165'g6'#147#255#255#255#0#164'e4T'#166'g7'#238#181#128'U'#243#206
+#166#132#255#216#182#151#255#219#185#153#255#211#172#138#255#194#148'm'#252 ,#166#132#255#216#182#151#255#219#185#153#255#211#172#138#255#194#148'm'#252
+#166'h8'#246#164'f5['#255#255#255#0#255#255#255#0#255#255#255#0#165'g7'#254 +#166'h8'#246#164'f5['#255#255#255#0#255#255#255#0#255#255#255#0#165'g7'#254
+#183#132'['#247#165'g6'#212#177'zN'#244#227#202#180#255#236#218#201#255#231 +#183#132'['#247#165'g6'#212#177'zN'#244#227#202#180#255#236#218#201#255#231
+#209#188#255#227#201#176#255#222#190#160#255#210#171#136#255#206#165#130#255 +#209#188#255#227#201#176#255#222#190#160#255#210#171#136#255#206#165#130#255
+#211#174#142#255#166'h8'#245#164'e4*'#255#255#255#0#255#255#255#0#166'h8'#253 +#211#174#142#255#166'h8'#245#164'e4*'#255#255#255#0#255#255#255#0#166'h8'#253
+#241#228#216#255#212#178#149#254#244#233#224#255#243#232#221#255#237#220#204 +#241#228#216#255#212#178#149#254#244#233#224#255#243#232#221#255#237#220#204
,#255#210#173#143#254#176'xL'#245#165'f5'#251#166'i9'#255#166'i9'#254#169'm=' +#255#210#173#143#254#176'xL'#245#165'f5'#251#166'i9'#255#166'i9'#254#169'm='
+#255#176'xL'#255#167'j:'#168#255#255#255#0#255#255#255#0#165'g7'#253#246#238 +#255#176'xL'#255#167'j:'#168#255#255#255#0#255#255#255#0#165'g7'#253#246#238
+#230#255#245#236#227#255#245#237#228#255#230#210#193#255#176'yM'#245#166'i8' +#230#255#245#236#227#255#245#237#228#255#230#210#193#255#176'yM'#245#166'i8'
+#202#164'e46'#255#255#255#0#164'e4j'#169'k<'#237#182'|O'#255#167'j:'#254#165 +#202#164'e46'#255#255#255#0#164'e4j'#169'k<'#237#182'|O'#255#167'j:'#254#165
@ -1595,13 +1601,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+#255'>94'#168#255#255#255#0',)%'#168#144#132'y'#255#194#184#173#255#192#180 +#255'>94'#168#255#255#255#0',)%'#168#144#132'y'#255#194#184#173#255#192#180
+#170#255#168#155#142#255#17#15#14#195#255#255#255#0#255#255#255#0'ypf'#5'\UN' +#170#255#168#155#142#255#17#15#14#195#255#255#255#0#255#255#255#0'ypf'#5'\UN'
+#249'B=8'#255'XQJ'#255'=83'#255'3/+'#255'# '#29#229#23#22#20'0'#30#28#25#181 +#249'B=8'#255'XQJ'#255'=83'#255'3/+'#255'# '#29#229#23#22#20'0'#30#28#25#181
+#26#24#22#255'%" '#255#25#23#21#255#15#14#13#255#1#1#1#238#0#0#0#2#255#255 ,#26#24#22#255'%" '#255#25#23#21#255#15#14#13#255#1#1#1#238#0#0#0#2#255#255
+#255#0#159#146#134#5#157#145#133#255#177#163#150#255#127'uk'#255'|rh'#255'wm' +#255#0#159#146#134#5#157#145#133#255#177#163#150#255#127'uk'#255'|rh'#255'wm'
+'d'#255'lc['#255'.*&'#255'VOH'#255#128'vl'#255'|rh'#255'wmd'#255'pg^'#255#0#0 +'d'#255'lc['#255'.*&'#255'VOH'#255#128'vl'#255'|rh'#255'wmd'#255'pg^'#255#0#0
+#0#254#0#0#0#5#255#255#255#0#171#157#144#4#175#161#148#225#186#174#162#255 +#0#254#0#0#0#5#255#255#255#0#171#157#144#4#175#161#148#225#186#174#162#255
+#130'wm'#255#130'wm'#255#170#145'{'#255#186#167#148#255#183#164#142#250#176 +#130'wm'#255#130'wm'#255#170#145'{'#255#186#167#148#255#183#164#142#250#176
+#151#129#255#159#141'}'#255#131'm['#255'qcW'#255#149#137'}'#255#4#4#3#224#0#0 +#151#129#255#159#141'}'#255#131'm['#255'qcW'#255#149#137'}'#255#4#4#3#224#0#0
,#0#3#255#255#255#0#185#172#160#8#135'}rH'#155#142#130#255#157#145#133#255#134 +#0#3#255#255#255#0#185#172#160#8#135'}rH'#155#142#130#255#157#145#133#255#134
+'{q'#255'VOH'#255'PJD'#255#128'vl'#255'nf]'#255#130'lX'#255#166#145'}'#255 +'{q'#255'VOH'#255'PJD'#255#128'vl'#255'nf]'#255#130'lX'#255#166#145'}'#255
+#148#132't'#255'VOH'#255#12#11#11'z'#7#7#6#1#255#255#255#0#255#255#255#0#255 +#148#132't'#255'VOH'#255#12#11#11'z'#7#7#6#1#255#255#255#0#255#255#255#0#255
+#255#255#0'tkb'#255#164#151#138#255#149#137'}'#255#159#146#134#255'>94'#255 +#255#255#0'tkb'#255#164#151#138#255#149#137'}'#255#159#146#134#255'>94'#255
@ -1659,13 +1665,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+#218#188#255#27#217#148#255#21#148'P'#255#24#210'|'#255#25#217'w'#255#21#148 +#218#188#255#27#217#148#255#21#148'P'#255#24#210'|'#255#25#217'w'#255#21#148
+'P'#255'v'#235#173#255#255#255#255#0#204#155#151#255#214#163#157#255#220#174 +'P'#255'v'#235#173#255#255#255#255#0#204#155#151#255#214#163#157#255#220#174
+#170#255#218#173#168#255#183#189#184#255#21#148'P'#255'L'#228#168#255'?'#235 +#170#255#218#173#168#255#183#189#184#255#21#148'P'#255'L'#228#168#255'?'#235
+#168#255'$'#218#157#255#26#213#160#255#20#210#144#255#16#206'l'#255#29#214'z' ,#168#255'$'#218#157#255#26#213#160#255#20#210#144#255#16#206'l'#255#29#214'z'
+#255';'#225#140#255#21#148'P'#255#255#255#255#0#255#255#255#0#185#187#186#255 +#255';'#225#140#255#21#148'P'#255#255#255#255#0#255#255#255#0#185#187#186#255
+#212#172#170#255#213#174#173#255#255#255#255#0#193#203#195#255#21#148'P'#255 +#212#172#170#255#213#174#173#255#255#255#255#0#193#203#195#255#21#148'P'#255
+#21#148'P'#255'I'#220#156#255'F'#230#162#255#21#148'P'#255','#221#137#255'5' +#21#148'P'#255'I'#220#156#255'F'#230#162#255#21#148'P'#255','#221#137#255'5'
+#219#134#255#21#148'P'#255'v'#235#173#255#255#255#255#0#255#255#255#0#255#255 +#219#134#255#21#148'P'#255'v'#235#173#255#255#255#255#0#255#255#255#0#255#255
+#255#0#185#187#186#255#185#187#186#255#189#191#190#255#225#227#226#255#255 +#255#0#185#187#186#255#185#187#186#255#189#191#190#255#225#227#226#255#255
,#255#255#0#165#184#180#255#21#148'P'#255#21#148'P'#255#21#148'P'#255'R'#232 +#255#255#0#165#184#180#255#21#148'P'#255#21#148'P'#255#21#148'P'#255'R'#232
+#154#255#21#148'P'#255'v'#235#173#255#255#255#255#0#255#255#255#0#255#255#255 +#154#255#21#148'P'#255'v'#235#173#255#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#225#227#226#255#185#187#186#255#185#187#186 +#0#255#255#255#0#255#255#255#0#225#227#226#255#185#187#186#255#185#187#186
+#255#185#187#186#255#185#187#186#255#185#187#186#255#215#235#225#255#21#148 +#255#185#187#186#255#185#187#186#255#185#187#186#255#215#235#225#255#21#148
@ -1723,13 +1729,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+#223#0#231#180#141#254#236#200#172#255#235#195#164#255#234#190#160#255#231 +#223#0#231#180#141#254#236#200#172#255#235#195#164#255#234#190#160#255#231
+#183#152#255#228#175#144#255#226#170#139#255#217#145'i'#210#223#223#223#0#223 +#183#152#255#228#175#144#255#226#170#139#255#217#145'i'#210#223#223#223#0#223
+#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223 +#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223
+#223#0#223#223#223#0#231#180#141#254#230#179#140#255#230#179#140#255#229#175 ,#223#0#223#223#223#0#231#180#141#254#230#179#140#255#230#179#140#255#229#175
+#136#255#226#168#128#255#222#159'v'#255#218#149'l'#255#215#142'd'#210#223#223 +#136#255#226#168#128#255#222#159'v'#255#218#149'l'#255#215#142'd'#210#223#223
+#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0 +#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0
+#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223 +#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223
+#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223 +#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223
+#223#0#7'OnClick'#7#21'actArrayCreateExecute'#0#0#9'TMenuItem'#10'MenuItem45' +#223#0#7'OnClick'#7#21'actArrayCreateExecute'#0#0#9'TMenuItem'#10'MenuItem45'
,#6'Action'#7#17'actCompoundCreate'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6' +#6'Action'#7#17'actCompoundCreate'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'
+#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0 +#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0
+'d'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +'d'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
@ -1787,13 +1793,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+#176#255#191#159#129#255#184#141'e'#255#209#179#143#255#209#179#143#255#187 +#176#255#191#159#129#255#184#141'e'#255#209#179#143#255#209#179#143#255#187
+#144'f'#255#188#145'h'#255#183#138'`'#255#177'~R'#255'b'#161'i'#255#192#218 +#144'f'#255#188#145'h'#255#183#138'`'#255#177'~R'#255'b'#161'i'#255#192#218
+#197#255#173#208#179#255#171#206#177#255#158#200#166#255'm'#170'v'#255#149'{' +#197#255#173#208#179#255#171#206#177#255#158#200#166#255'm'#170'v'#255#149'{'
+'~'#255'Za'#200#255'PX'#227#255'OV'#224#255'X_'#200#255#144'x'#132#255#187 ,'~'#255'Za'#200#255'PX'#227#255'OV'#224#255'X_'#200#255#144'x'#132#255#187
+#144'f'#255#209#179#143#255#198#162'{'#255#169'xO'#254'`'#160'h'#255#197#222 +#144'f'#255#209#179#143#255#198#162'{'#255#169'xO'#254'`'#160'h'#255#197#222
+#201#255#180#212#185#255#164#201#170#255#129#171#154#255'am'#195#255'PX'#224 +#201#255#180#212#185#255#164#201#170#255#129#171#154#255'am'#195#255'PX'#224
+#255'fh'#235#255#147#147#244#255'ac'#234#255'X['#228#255'IR'#220#255'`c'#190 +#255'fh'#235#255#147#147#244#255'ac'#234#255'X['#228#255'IR'#220#255'`c'#190
+#255#166#137#127#255#193#154'q'#255#165#133'k'#200']'#159'e'#255#185#214#190 +#255#166#137#127#255#193#154'q'#255#165#133'k'#200']'#159'e'#255#185#214#190
+#255#135#186#143#255'q'#172'x'#255'SY'#220#255'fj'#235#255#152#150#244#255 +#255#135#186#143#255'q'#172'x'#255'SY'#220#255'fj'#235#255#152#150#244#255
,#145#145#243#255#137#138#240#255'[_'#231#255'_b'#233#255']a'#232#255'QX'#228 +#145#145#243#255#137#138#240#255'[_'#231#255'_b'#233#255']a'#232#255'QX'#228
+#255'IT'#216#254#150'~vC'#166#140'w'#10'd'#160'k'#254#134#186#143#255#153#198 +#255'IT'#216#254#150'~vC'#166#140'w'#10'd'#160'k'#254#134#186#143#255#153#198
+#162#255't'#173'|'#255'OW'#226#255#180#177#249#255#151#150#244#255#147#147 +#162#255't'#173'|'#255'OW'#226#255#180#177#249#255#151#150#244#255#147#147
+#244#255#140#141#240#255'\`'#232#255'\a'#231#255']a'#232#255'_b'#233#255'OW' +#244#255#140#141#240#255'\`'#232#255'\a'#231#255']a'#232#255'_b'#233#255'OW'
@ -1851,13 +1857,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+#255'RRR'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#234#234#234#255#235#235 +#255'RRR'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#234#234#234#255#235#235
+#235#255#237#237#237#255#238#238#238#255#227#227#227#255#195#195#195#255#241 +#235#255#237#237#237#255#238#238#238#255#227#227#227#255#195#195#195#255#241
+#241#241#255#242#242#242#255#243#243#243#255#244#244#244#255'QQQ'#255#0#0#0#0 +#241#241#255#242#242#242#255#243#243#243#255#244#244#244#255'QQQ'#255#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#232#232#232#255#233#233#233#255#234#234#234 ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#232#232#232#255#233#233#233#255#234#234#234
+#255#235#235#235#255#236#236#236#255#238#238#238#255#239#239#239#255#240#240 +#255#235#235#235#255#236#236#236#255#238#238#238#255#239#239#239#255#240#240
+#240#255#241#241#241#255#242#242#242#255'QQQ'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#240#255#241#241#241#255#242#242#242#255'QQQ'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#153#153#153#255#154#154#154#255#155#155#155#255#155#155#155#255 +#0#0#0#0#0#0#153#153#153#255#154#154#154#255#155#155#155#255#155#155#155#255
+#156#156#156#255#157#157#157#255#158#158#158#255#159#159#159#255#159#159#159 +#156#156#156#255#157#157#157#255#158#158#158#255#159#159#159#255#159#159#159
+#255#160#160#160#255'555'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#255#160#160#160#255'555'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#7'OnClick'#7#20'actEnumCreateExecute'#0#0#9'TMenuItem' +#0#0#0#0#0#0#0#0#0#0#7'OnClick'#7#20'actEnumCreateExecute'#0#0#9'TMenuItem'
+#10'MenuItem43'#6'Action'#7#13'actIntfCreate'#11'Bitmap.Data'#10':'#4#0#0'6' +#10'MenuItem43'#6'Action'#7#13'actIntfCreate'#11'Bitmap.Data'#10':'#4#0#0'6'
+#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0 +#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0
@ -1915,13 +1921,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+#255#203#203#203#255#234#234#234#255'fff'#255#234#234#234#255'IIIn'#11#11#11 +#255#203#203#203#255#234#234#234#255'fff'#255#234#234#234#255'IIIn'#11#11#11
+#0#4#4#4#0#0#0#0#0#0#0#0#0'>>>'#0'RRR'#0'RRRm'#238#238#238#255#200#200#200 +#0#4#4#4#0#0#0#0#0#0#0#0#0'>>>'#0'RRR'#0'RRRm'#238#238#238#255#200#200#200
+#255#255#255#255#255#255#255#255#255#200#200#200#255#241#241#241#255#237#237 +#255#255#255#255#255#255#255#255#255#200#200#200#255#241#241#241#255#237#237
+#237#255#238#238#238#255'RRRm'#21#21#21#0#13#13#13#0#13#13#13#0#13#13#13#0' ' ,#237#255#238#238#238#255'RRRm'#21#21#21#0#13#13#13#0#13#13#13#0#13#13#13#0' '
+' '#0'\\\'#0'\\\l'#241#241#241#255#196#196#196#255#255#255#255#255#255#255 +' '#0'\\\'#0'\\\l'#241#241#241#255#196#196#196#255#255#255#255#255#255#255
+#255#255#211#211#211#255#196#196#196#255#196#196#196#255#241#241#241#255'\\\' +#255#255#211#211#211#255#196#196#196#255#196#196#196#255#241#241#241#255'\\\'
+'l'#21#21#21#0#13#13#13#0#13#13#13#0#13#13#13#0#13#13#13#0'###'#0'dddj'#246 +'l'#21#21#21#0#13#13#13#0#13#13#13#0#13#13#13#0#13#13#13#0'###'#0'dddj'#246
+#246#246#255#192#192#192#255#255#255#255#255#255#255#255#255#255#255#255#255 +#246#246#255#192#192#192#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#192#192#192#255#246#246#246#255'dddj'#25#25#25'X'#21#21#21 +#255#255#255#255#192#192#192#255#246#246#246#255'dddj'#25#25#25'X'#21#21#21
,'u'#21#21#21'u'#21#21#21'u'#21#21#21'u'#21#21#21'u111'#174#144#144#144#255'o' +'u'#21#21#21'u'#21#21#21'u'#21#21#21'u'#21#21#21'u111'#174#144#144#144#255'o'
+'oo'#255#176#176#176#255#255#255#255#255#255#255#255#255#255#255#255#255#187 +'oo'#255#176#176#176#255#255#255#255#255#255#255#255#255#255#255#255#255#187
+#187#187#255#249#249#249#255'llli888q'#236#236#236#255#232#232#232#255#232 +#187#187#255#249#249#249#255'llli888q'#236#236#236#255#232#232#232#255#232
+#232#232#255#232#232#232#255#232#232#232#255#232#232#232#255#232#232#232#255 +#232#232#255#232#232#232#255#232#232#232#255#232#232#232#255#232#232#232#255
@ -1958,5 +1964,9 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+'ri.FrameEdges'#7#9'sfeAround'#21'SpaceAttri.FrameEdges'#7#9'sfeAround'#22'S' +'ri.FrameEdges'#7#9'sfeAround'#21'SpaceAttri.FrameEdges'#7#9'sfeAround'#22'S'
+'ymbolAttri.FrameEdges'#7#9'sfeAround'#16'WantBracesParsed'#8#4'left'#3#210#1 +'ymbolAttri.FrameEdges'#7#9'sfeAround'#16'WantBracesParsed'#8#4'left'#3#210#1
+#3'top'#3#252#0#0#0#11'TFindDialog'#2'FD'#6'OnShow'#7#6'FDShow'#5'Title'#6#6 +#3'top'#3#252#0#0#0#11'TFindDialog'#2'FD'#6'OnShow'#7#6'FDShow'#5'Title'#6#6
+'Search'#6'OnFind'#7#6'FDFind'#4'left'#3'@'#2#3'top'#3#143#0#0#0#0 +'Search'#6'OnFind'#7#6'FDFind'#4'left'#3'@'#2#3'top'#3#143#0#0#0#11'TOpenDia'
+'log'#9'odOpenXSD'#6'Filter'#6#25'XSD files ( *.xsd )|*.xsd'#11'FilterIndex'
+#2#0#10'InitialDir'#6#2'.\'#7'Options'#11#15'ofPathMustExist'#15'ofFileMustE'
+'xist'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3#160#1#3'top'#3#164#0#0
+#0#0
]); ]);

View File

@ -42,6 +42,7 @@ type
actArrayCreate : TAction; actArrayCreate : TAction;
actEditSearch : TAction; actEditSearch : TAction;
actClone : TAction; actClone : TAction;
actAddXsdImport : TAction;
actSaveXSD : TAction; actSaveXSD : TAction;
actTreeSearch : TAction; actTreeSearch : TAction;
actRecordCreate : TAction; actRecordCreate : TAction;
@ -103,6 +104,7 @@ type
MenuItem53 : TMenuItem; MenuItem53 : TMenuItem;
MenuItem54 : TMenuItem; MenuItem54 : TMenuItem;
MenuItem55 : TMenuItem; MenuItem55 : TMenuItem;
MenuItem56 : TMenuItem;
MenuItem6: TMenuItem; MenuItem6: TMenuItem;
MenuItem7 : TMenuItem; MenuItem7 : TMenuItem;
MenuItem8: TMenuItem; MenuItem8: TMenuItem;
@ -113,6 +115,7 @@ type
MenuItem3: TMenuItem; MenuItem3: TMenuItem;
MenuItem4: TMenuItem; MenuItem4: TMenuItem;
OD: TOpenDialog; OD: TOpenDialog;
odOpenXSD : TOpenDialog;
PCInfos : TPageControl; PCInfos : TPageControl;
PC: TPageControl; PC: TPageControl;
Panel1: TPanel; Panel1: TPanel;
@ -141,6 +144,8 @@ type
ToolButton15: TToolButton; ToolButton15: TToolButton;
ToolButton16: TToolButton; ToolButton16: TToolButton;
ToolButton17: TToolButton; ToolButton17: TToolButton;
ToolButton18: TToolButton;
ToolButton19: TToolButton;
ToolButton2: TToolButton; ToolButton2: TToolButton;
ToolButton3: TToolButton; ToolButton3: TToolButton;
ToolButton4: TToolButton; ToolButton4: TToolButton;
@ -161,6 +166,8 @@ type
tsProxy: TTabSheet; tsProxy: TTabSheet;
trvSchema: TTreeView; trvSchema: TTreeView;
procedure actAboutExecute(Sender: TObject); procedure actAboutExecute(Sender: TObject);
procedure actAddXsdImportExecute(Sender : TObject);
procedure actAddXsdImportUpdate(Sender : TObject);
procedure actArrayCreateExecute(Sender : TObject); procedure actArrayCreateExecute(Sender : TObject);
procedure actCloneExecute(Sender : TObject); procedure actCloneExecute(Sender : TObject);
procedure actCloneUpdate(Sender : TObject); procedure actCloneUpdate(Sender : TObject);
@ -207,6 +214,7 @@ type
FFoundNode : TTreeNode; FFoundNode : TTreeNode;
FDependencyList : TObjectList; FDependencyList : TObjectList;
private private
procedure Handle_OnAppException(Sender : TObject; E : Exception);
function FindCurrentEditor() : TSynEdit; function FindCurrentEditor() : TSynEdit;
function Search(const AText : string) : Boolean; function Search(const AText : string) : Boolean;
function SearchInTree(const AText : string) : Boolean; function SearchInTree(const AText : string) : Boolean;
@ -222,6 +230,7 @@ type
procedure ShowDocumentation(); procedure ShowDocumentation();
procedure ShowSourceXSD(); procedure ShowSourceXSD();
procedure ShowDependencies(); procedure ShowDependencies();
procedure AddXsdImport(const AFileName : string);
procedure OpenFile(const AFileName : string; const AContent : TStream = nil); procedure OpenFile(const AFileName : string; const AContent : TStream = nil);
procedure SaveToFile(const AFileName : string); procedure SaveToFile(const AFileName : string);
function PromptAndSave() : Boolean; function PromptAndSave() : Boolean;
@ -370,8 +379,9 @@ end;
function ParseXsdFile( function ParseXsdFile(
const AFileName : string; const AFileName : string;
AContent : TStream; AContent : TStream;
const ANotifier : TOnParserMessage const ANotifier : TOnParserMessage;
):TwstPasTreeContainer;overload; ASymbols : TwstPasTreeContainer
) : TwstPasTreeContainer;overload;
var var
locDoc : TXMLDocument; locDoc : TXMLDocument;
prsr : IXsdPaser; prsr : IXsdPaser;
@ -387,7 +397,10 @@ begin
prsr := nil; prsr := nil;
locDoc := ReadXMLFile(AContent); locDoc := ReadXMLFile(AContent);
try try
Result := TwstPasTreeContainer.Create(); if (ASymbols = nil) then
Result := TwstPasTreeContainer.Create()
else
Result := ASymbols;
try try
prsr := TXsdParser.Create(locDoc,Result,'',ANotifier); prsr := TXsdParser.Create(locDoc,Result,'',ANotifier);
locContext := prsr as IParserContext; locContext := prsr as IParserContext;
@ -397,6 +410,7 @@ begin
end; end;
prsr.ParseTypes(); prsr.ParseTypes();
except except
if (ASymbols = nil) then
FreeAndNil(Result); FreeAndNil(Result);
raise; raise;
end; end;
@ -405,6 +419,15 @@ begin
end; end;
end; end;
function ParseXsdFile(
const AFileName : string;
AContent : TStream;
const ANotifier : TOnParserMessage
):TwstPasTreeContainer;overload;
begin
Result := ParseXsdFile(AFileName,AContent,ANotifier,nil);
end;
function ParseXsdFile( function ParseXsdFile(
const AFileName : string; const AFileName : string;
const ANotifier : TOnParserMessage const ANotifier : TOnParserMessage
@ -507,14 +530,21 @@ begin
end; end;
end; end;
procedure GenerateWSDL_ToStream(ASymbol : TwstPasTreeContainer; ADest : TStream); procedure GenerateWSDL_ToStream(
ASymbol : TwstPasTreeContainer;
ADest : TStream;
const ADestPath : string
);
var var
g : IGenerator; g : IGenerator;
doc : TXMLDocument; doc : TXMLDocument;
locLocator : IDocumentLocator;
begin begin
doc := TXMLDocument.Create(); doc := TXMLDocument.Create();
try try
g := TWsdlGenerator.Create(doc); g := TWsdlGenerator.Create(doc);
locLocator := TFileDocumentLocator.Create(IncludeTrailingPathDelimiter(ADestPath));
g.SetDocumentLocator(locLocator);
g.Execute(ASymbol,ASymbol.CurrentModule.Name); g.Execute(ASymbol,ASymbol.CurrentModule.Name);
WriteXML(doc,ADest); WriteXML(doc,ADest);
finally finally
@ -522,14 +552,21 @@ begin
end; end;
end; end;
procedure GenerateXSD_ToStream(ASymbol : TwstPasTreeContainer; ADest : TStream); procedure GenerateXSD_ToStream(
ASymbol : TwstPasTreeContainer;
ADest : TStream;
const ADestPath : string
);
var var
g : IGenerator; g : IGenerator;
doc : TXMLDocument; doc : TXMLDocument;
locLocator : IDocumentLocator;
begin begin
doc := TXMLDocument.Create(); doc := TXMLDocument.Create();
try try
g := TXsdGenerator.Create(doc); g := TXsdGenerator.Create(doc);
locLocator := TFileDocumentLocator.Create(IncludeLeadingPathDelimiter(ADestPath));
g.SetDocumentLocator(locLocator);
g.Execute(ASymbol,ASymbol.CurrentModule.Name); g.Execute(ASymbol,ASymbol.CurrentModule.Name);
WriteXML(doc,ADest); WriteXML(doc,ADest);
finally finally
@ -773,6 +810,16 @@ begin
ShowDependencies(); ShowDependencies();
end; end;
procedure TfWstTypeLibraryEdit.Handle_OnAppException(
Sender: TObject; E: Exception
);
begin
if (E <> nil) and E.InheritsFrom(EWstEditException) then
MessageDlg(Self.Caption,E.Message,Dialogs.mtError,[mbOK],0)
else
Application.ShowException(E);
end;
function TfWstTypeLibraryEdit.FindCurrentEditor() : TSynEdit; function TfWstTypeLibraryEdit.FindCurrentEditor() : TSynEdit;
var var
edt : TSynEdit; edt : TSynEdit;
@ -875,6 +922,23 @@ begin
end; end;
end; end;
procedure TfWstTypeLibraryEdit.actAddXsdImportExecute(Sender : TObject);
begin
{$IFNDEF WST_IDE}
odOpenXSD.InitialDir := DM.Options.ReadString(ClassName(),sLAST_PATH,odOpenXSD.InitialDir);
{$ENDIF WST_IDE}
odOpenXSD.Title := 'Import a schema file ...';
if not odOpenXSD.Execute() then
exit;
AddXsdImport(odOpenXSD.FileName);
end;
procedure TfWstTypeLibraryEdit.actAddXsdImportUpdate(Sender : TObject);
begin
TAction(Sender).Enabled := (FSymbolTable <> nil) and
(FSymbolTable.CurrentModule <> nil);
end;
procedure TfWstTypeLibraryEdit.actArrayCreateExecute(Sender : TObject); procedure TfWstTypeLibraryEdit.actArrayCreateExecute(Sender : TObject);
var var
e : TPasArrayType; e : TPasArrayType;
@ -1148,7 +1212,7 @@ var
begin begin
mstrm := TMemoryStream.Create(); mstrm := TMemoryStream.Create();
try try
GenerateWSDL_ToStream(FSymbolTable,mstrm); GenerateWSDL_ToStream(FSymbolTable,mstrm,ExtractFilePath(FCurrentFileName));
mstrm.Position := 0; mstrm.Position := 0;
srcWSDL.Lines.LoadFromStream(mstrm); srcWSDL.Lines.LoadFromStream(mstrm);
finally finally
@ -1214,6 +1278,36 @@ begin
DrawDependencies(tvDependency,FDependencyList); DrawDependencies(tvDependency,FDependencyList);
end; end;
procedure TfWstTypeLibraryEdit.AddXsdImport(const AFileName: string);
var
i : Integer;
locModule, locNewModule : TPasModule;
locStream : TMemoryStream;
begin
locStream := TMemoryStream.Create();
try
locStream.LoadFromFile(odOpenXSD.FileName);
locStream.Position := 0;
locModule := FSymbolTable.CurrentModule;
try
ParseXsdFile(AFileName,locStream,@ShowStatusMessage,FSymbolTable);
locNewModule := FSymbolTable.CurrentModule;
finally
FSymbolTable.SetCurrentModule(locModule);
end;
finally
locStream.Free();
end;
FSymbolTable.Properties.SetValue(locNewModule,sFILE_NAME,AFileName);
i := FSymbolTable.CurrentModule.InterfaceSection.UsesList.IndexOf(locNewModule);
if (i = -1) then begin
FSymbolTable.CurrentModule.InterfaceSection.UsesList.Add(locNewModule);
locNewModule.AddRef();
end;
RenderSymbols();
end;
procedure TfWstTypeLibraryEdit.OpenFile (const AFileName : string; const AContent : TStream); procedure TfWstTypeLibraryEdit.OpenFile (const AFileName : string; const AContent : TStream);
var var
tmpTable : TwstPasTreeContainer; tmpTable : TwstPasTreeContainer;
@ -1264,9 +1358,9 @@ begin
mstrm := TMemoryStream.Create(); mstrm := TMemoryStream.Create();
try try
if SameText('.xsd',ExtractFileExt(AFileName)) then if SameText('.xsd',ExtractFileExt(AFileName)) then
GenerateXSD_ToStream(FSymbolTable,mstrm) GenerateXSD_ToStream(FSymbolTable,mstrm,ExtractFilePath(FCurrentFileName))
else else
GenerateWSDL_ToStream(FSymbolTable,mstrm); GenerateWSDL_ToStream(FSymbolTable,mstrm,ExtractFilePath(FCurrentFileName));
mstrm.SaveToFile(AFileName); mstrm.SaveToFile(AFileName);
finally finally
FreeAndNil(mstrm); FreeAndNil(mstrm);
@ -1311,6 +1405,7 @@ begin
inherited Create(AOwner); inherited Create(AOwner);
FSymbolTable := CreateSymbolTable(ExtractFileName(DEF_FILE_NAME)); FSymbolTable := CreateSymbolTable(ExtractFileName(DEF_FILE_NAME));
trvSchema.Images := DM.IM; trvSchema.Images := DM.IM;
Application.OnException := @Handle_OnAppException;
end; end;
destructor TfWstTypeLibraryEdit.Destroy(); destructor TfWstTypeLibraryEdit.Destroy();

View File

@ -23,10 +23,24 @@ uses
{$IFDEF FPC} {$IFDEF FPC}
, DOM, wst_fpc_xml , DOM, wst_fpc_xml
{$ENDIF FPC} {$ENDIF FPC}
, xsd_parser; ;
type type
IDocumentLocator = interface
['{F063700B-C0ED-4C54-9A54-C97030E80BD4}']
function Find(
const ADocLocation : string;
out ADoc : TXMLDocument
) : Boolean;
function FindPath(ADocLocation : string) : string;
function GetBasePath() : string;
procedure SetBasePath(AValue : string);
function Clone() : IDocumentLocator;
function MakeRelavive(const AFileName : string) : string;
end;
{ TFileDocumentLocator } { TFileDocumentLocator }
TFileDocumentLocator = class(TInterfacedObject,IDocumentLocator) TFileDocumentLocator = class(TInterfacedObject,IDocumentLocator)
@ -45,6 +59,7 @@ type
function GetBasePath() : string; function GetBasePath() : string;
procedure SetBasePath(AValue : string); procedure SetBasePath(AValue : string);
function Clone() : IDocumentLocator; function Clone() : IDocumentLocator;
function MakeRelavive(const AFileName : string) : string;
public public
constructor Create(const ABasePath : string);virtual; constructor Create(const ABasePath : string);virtual;
end; end;
@ -106,6 +121,11 @@ begin
Result := TFileDocumentLocatorClass(Self.ClassType).Create(FBasePath) as IDocumentLocator; Result := TFileDocumentLocatorClass(Self.ClassType).Create(FBasePath) as IDocumentLocator;
end; end;
function TFileDocumentLocator.MakeRelavive(const AFileName: string): string;
begin
Result := ExtractRelativePath(GetBasePath(),AFileName);
end;
constructor TFileDocumentLocator.Create(const ABasePath: string); constructor TFileDocumentLocator.Create(const ABasePath: string);
begin begin
SetBasePath(IncludeTrailingPathDelimiter(ABasePath)); SetBasePath(IncludeTrailingPathDelimiter(ABasePath));

View File

@ -18,7 +18,7 @@ interface
uses uses
Classes, SysUtils, TypInfo, Classes, SysUtils, TypInfo,
{$IFNDEF FPC}xmldom, wst_delphi_xml{$ELSE}DOM{$ENDIF}, {$IFNDEF FPC}xmldom, wst_delphi_xml{$ELSE}DOM{$ENDIF},
pastree, pascal_parser_intf, xsd_generator; pastree, pascal_parser_intf, xsd_generator, locators;
type type
@ -42,6 +42,7 @@ type
FDocument : TDOMDocument; FDocument : TDOMDocument;
FTypesNode : TDOMElement; FTypesNode : TDOMElement;
FDefinitionsNode : TDOMElement; FDefinitionsNode : TDOMElement;
FDocumentLocator : IDocumentLocator;
private private
procedure GenerateTypes(ASymTable : TwstPasTreeContainer; AModule : TPasModule); procedure GenerateTypes(ASymTable : TwstPasTreeContainer; AModule : TPasModule);
procedure GenerateServiceMessages( procedure GenerateServiceMessages(
@ -70,6 +71,8 @@ type
); );
protected protected
procedure Prepare(ASymTable : TwstPasTreeContainer; AModule : TPasModule); procedure Prepare(ASymTable : TwstPasTreeContainer; AModule : TPasModule);
function GetDocumentLocator() : IDocumentLocator;
procedure SetDocumentLocator(ALocator : IDocumentLocator);
procedure Execute( procedure Execute(
ASymTable : TwstPasTreeContainer; ASymTable : TwstPasTreeContainer;
AModuleName : string AModuleName : string
@ -154,6 +157,7 @@ var
g : IGenerator; g : IGenerator;
nsList : TStringList; nsList : TStringList;
s : string; s : string;
locLocator : IDocumentLocator;
begin begin
mdlLs := ASymTable.Package.Modules; mdlLs := ASymTable.Package.Modules;
if ( mdlLs.Count > 0 ) then begin if ( mdlLs.Count > 0 ) then begin
@ -167,6 +171,9 @@ begin
end; end;
end; end;
g := TWsdlTypechemaGenerator.Create(Document) as IGenerator; g := TWsdlTypechemaGenerator.Create(Document) as IGenerator;
locLocator := GetDocumentLocator();
if (locLocator <> nil) then
g.SetDocumentLocator(locLocator);
for i := 0 to Pred(mdlLs.Count) do begin for i := 0 to Pred(mdlLs.Count) do begin
mdl := TPasModule(mdlLs[i]); mdl := TPasModule(mdlLs[i]);
if (mdl <> AModule) then begin if (mdl <> AModule) then begin
@ -469,6 +476,16 @@ begin
end; end;
function TWsdlGenerator.GetDocumentLocator : IDocumentLocator;
begin
Result := FDocumentLocator;
end;
procedure TWsdlGenerator.SetDocumentLocator(ALocator : IDocumentLocator);
begin
FDocumentLocator := ALocator;
end;
procedure TWsdlGenerator.Execute(ASymTable : TwstPasTreeContainer; AModuleName : string); procedure TWsdlGenerator.Execute(ASymTable : TwstPasTreeContainer; AModuleName : string);
var var
locMainModule : TPasModule; locMainModule : TPasModule;

View File

@ -18,7 +18,7 @@ interface
uses uses
Classes, SysUtils, TypInfo, Classes, SysUtils, TypInfo,
{$IFNDEF FPC}xmldom, wst_delphi_xml{$ELSE}DOM, wst_fpc_xml{$ENDIF}, {$IFNDEF FPC}xmldom, wst_delphi_xml{$ELSE}DOM, wst_fpc_xml{$ENDIF},
pastree, pascal_parser_intf; pastree, pascal_parser_intf, locators;
type type
@ -35,6 +35,8 @@ type
ASymTable : TwstPasTreeContainer; ASymTable : TwstPasTreeContainer;
AModuleName : string AModuleName : string
); );
function GetDocumentLocator() : IDocumentLocator;
procedure SetDocumentLocator(ALocator : IDocumentLocator);
end; end;
IXsdGenerator = interface(IGenerator) IXsdGenerator = interface(IGenerator)
@ -88,6 +90,7 @@ type
FDocument : TDOMDocument; FDocument : TDOMDocument;
FOptions: TGeneratorOptions; FOptions: TGeneratorOptions;
FShortNames : TStrings; FShortNames : TStrings;
FDocumentLocator : IDocumentLocator;
protected protected
procedure GenerateImports( procedure GenerateImports(
ASymTable : TwstPasTreeContainer; ASymTable : TwstPasTreeContainer;
@ -97,6 +100,8 @@ type
function GetSchemaNode(ADocument : TDOMDocument) : TDOMNode;virtual;abstract; function GetSchemaNode(ADocument : TDOMDocument) : TDOMNode;virtual;abstract;
procedure SetPreferedShortNames(const ALongName, AShortName : string); procedure SetPreferedShortNames(const ALongName, AShortName : string);
function GetPreferedShortNames() : TStrings; function GetPreferedShortNames() : TStrings;
function GetDocumentLocator() : IDocumentLocator;
procedure SetDocumentLocator(ALocator : IDocumentLocator);
procedure Execute( procedure Execute(
ASymTable : TwstPasTreeContainer; ASymTable : TwstPasTreeContainer;
AModuleName : string AModuleName : string
@ -1414,10 +1419,12 @@ var
locNS, locFileName, s : string; locNS, locFileName, s : string;
locSchemaNode, resNode : TDOMElement; locSchemaNode, resNode : TDOMElement;
locCurrentNS : string; locCurrentNS : string;
locLocator : IDocumentLocator;
begin begin
locUsesList := AModule.InterfaceSection.UsesList; locUsesList := AModule.InterfaceSection.UsesList;
if (locUsesList.Count > 0) then begin if (locUsesList.Count > 0) then begin
locCurrentNS := ASymTable.GetExternalName(AModule); locCurrentNS := ASymTable.GetExternalName(AModule);
locLocator := GetDocumentLocator();
for i := 0 to Pred(locUsesList.Count) do begin for i := 0 to Pred(locUsesList.Count) do begin
locModule := TPasElement(locUsesList[i]); locModule := TPasElement(locUsesList[i]);
locNS := ASymTable.GetExternalName(locModule); locNS := ASymTable.GetExternalName(locModule);
@ -1428,6 +1435,8 @@ begin
locFileName := ASymTable.Properties.GetValue(locModule,sFILE_NAME); locFileName := ASymTable.Properties.GetValue(locModule,sFILE_NAME);
if IsStrEmpty(locFileName) then if IsStrEmpty(locFileName) then
Continue; Continue;
if (locLocator <> nil) then
locFileName := locLocator.MakeRelavive(locFileName);
locSchemaNode := GetSchemaNode(FDocument) as TDOMElement; locSchemaNode := GetSchemaNode(FDocument) as TDOMElement;
s := Format('%s:%s',[s_xs_short,s_import]); s := Format('%s:%s',[s_xs_short,s_import]);
resNode := CreateElement(s,locSchemaNode,FDocument); resNode := CreateElement(s,locSchemaNode,FDocument);
@ -1447,6 +1456,16 @@ begin
Result := FShortNames; Result := FShortNames;
end; end;
function TCustomXsdGenerator.GetDocumentLocator: IDocumentLocator;
begin
Result := FDocumentLocator;
end;
procedure TCustomXsdGenerator.SetDocumentLocator(ALocator: IDocumentLocator);
begin
FDocumentLocator := ALocator;
end;
destructor TCustomXsdGenerator.Destroy(); destructor TCustomXsdGenerator.Destroy();
begin begin
FreeAndNil(FShortNames); FreeAndNil(FShortNames);

View File

@ -18,7 +18,7 @@ uses
Classes, SysUtils, Classes, SysUtils,
{$IFNDEF FPC}xmldom, wst_delphi_xml{$ELSE}DOM{$ENDIF}, {$IFNDEF FPC}xmldom, wst_delphi_xml{$ELSE}DOM{$ENDIF},
cursor_intf, rtti_filters, cursor_intf, rtti_filters,
pastree, pascal_parser_intf, logger_intf; pastree, pascal_parser_intf, logger_intf, locators;
type type
@ -42,18 +42,7 @@ type
TOnParserMessage = procedure (const AMsgType : TMessageType; const AMsg : string) of object; TOnParserMessage = procedure (const AMsgType : TMessageType; const AMsg : string) of object;
IDocumentLocator = interface IDocumentLocator = locators.IDocumentLocator;
['{F063700B-C0ED-4C54-9A54-C97030E80BD4}']
function Find(
const ADocLocation : string;
out ADoc : TXMLDocument
) : Boolean;
function FindPath(ADocLocation : string) : string;
function GetBasePath() : string;
procedure SetBasePath(AValue : string);
function Clone() : IDocumentLocator;
end;
TParserOption = ( TParserOption = (
poEnumAlwaysPrefix, // Always prefix enum item with the enum name poEnumAlwaysPrefix, // Always prefix enum item with the enum name