소스 검색

first commit

Motaz Abdel Azeem 13 년 전
부모
커밋
2507560567
100개의 변경된 파일28993개의 추가작업 그리고 0개의 파일을 삭제
  1. 5 0
      TurboBird.compiled
  2. BIN
      TurboBird.ico
  3. BIN
      TurboBird.jpg
  4. 1134 0
      TurboBird.lpi
  5. 1134 0
      TurboBird.lpi.bak
  6. 373 0
      TurboBird.lpi~
  7. 86 0
      TurboBird.lpr
  8. 86 0
      TurboBird.lpr.bak
  9. 67 0
      TurboBird.lpr.motaz
  10. 40 0
      TurboBird.lpr~
  11. 162 0
      TurboBird.lrs
  12. 17 0
      TurboBird.manifest
  13. BIN
      TurboBird.o
  14. BIN
      TurboBird.or
  15. BIN
      TurboBird.png
  16. 33 0
      TurboBird.rc
  17. BIN
      TurboBird.reg
  18. BIN
      TurboBird.res
  19. BIN
      TurboBird.res.bak
  20. BIN
      TurboBird.xcf
  21. 235 0
      about.lfm
  22. 180 0
      about.lrs
  23. 98 0
      about.pas
  24. 179 0
      backuprestore.lfm
  25. 47 0
      backuprestore.lrs
  26. 139 0
      backuprestore.pas
  27. 69 0
      calen.lfm
  28. 21 0
      calen.lrs
  29. 66 0
      calen.pas
  30. 55 0
      callproc.lfm
  31. 20 0
      callproc.lrs
  32. 55 0
      callproc.pas
  33. 81 0
      changepass.lfm
  34. 24 0
      changepass.lrs
  35. 52 0
      changepass.pas
  36. 8 0
      connectas.lfm
  37. 8 0
      connectas.lrs
  38. 27 0
      connectas.pas
  39. 1012 0
      copytable.lfm
  40. 392 0
      copytable.lrs
  41. 190 0
      copytable.pas
  42. 231 0
      createdb.lfm
  43. 101 0
      createdb.lrs
  44. 77 0
      createdb.pas
  45. 110 0
      createtrigger.lfm
  46. 29 0
      createtrigger.lrs
  47. 53 0
      createtrigger.pas
  48. 97 0
      createuser.lfm
  49. 27 0
      createuser.lrs
  50. 58 0
      createuser.pas
  51. 159 0
      dbinfo.lfm
  52. 43 0
      dbinfo.pas
  53. 71 0
      editdatafullrec.lfm
  54. 25 0
      editdatafullrec.lrs
  55. 174 0
      editdatafullrec.pas
  56. 99 0
      edittable.lfm
  57. 32 0
      edittable.lrs
  58. 114 0
      edittable.pas
  59. 88 0
      enterpass.lfm
  60. 25 0
      enterpass.lrs
  61. 53 0
      enterpass.pas
  62. 1899 0
      main.lfm
  63. 2331 0
      main.lrs
  64. 3825 0
      main.pas
  65. 184 0
      newconstraint.lfm
  66. 47 0
      newconstraint.lrs
  67. 100 0
      newconstraint.pas
  68. 115 0
      newdomain.lfm
  69. 29 0
      newdomain.lrs
  70. 52 0
      newdomain.pas
  71. 132 0
      neweditfield.lfm
  72. 34 0
      neweditfield.lrs
  73. 210 0
      neweditfield.pas
  74. 143 0
      newgen.lfm
  75. 40 0
      newgen.lrs
  76. 141 0
      newgen.pas
  77. 881 0
      newtable.lfm
  78. 195 0
      newtable.lrs
  79. 241 0
      newtable.pas
  80. 314 0
      permissionmanage.lfm
  81. 79 0
      permissionmanage.lrs
  82. 450 0
      permissionmanage.pas
  83. 2431 0
      querywindow.lfm
  84. 2202 0
      querywindow.lrs
  85. 1030 0
      querywindow.pas
  86. 278 0
      reg.lfm
  87. 109 0
      reg.lrs
  88. 300 0
      reg.pas
  89. 549 0
      scriptdb.pas
  90. 167 0
      sqlhistory.lfm
  91. 94 0
      sqlhistory.lrs
  92. 137 0
      sqlhistory.pas
  93. 14 0
      systables.lfm
  94. 8 0
      systables.lrs
  95. 617 0
      systables.pas
  96. 779 0
      tablemanage.lfm
  97. 430 0
      tablemanage.lrs
  98. 519 0
      tablemanage.pas
  99. 98 0
      udfinfo.lfm
  100. 28 0
      udfinfo.lrs

+ 5 - 0
TurboBird.compiled

@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<CONFIG>
+  <Compiler Value="/usr/bin/fpc" Date="1303477611"/>
+  <Params Value=" -MObjFPC -Scghi -CX -Os3 -Xs -XX -vewnhi -l -Fl/opt/gnome/lib -Fu/home/motaz/lazarus/lazarus/components/sqldb/lib/i386-linux/gtk2 -Fu/home/motaz/lazarus/lazarus/components/synedit/units/i386-linux -Fu/home/motaz/lazarus/lazarus/components/memds/lib/i386-linux/gtk2 -Fu/home/motaz/lazarus/lazarus/ideintf/units/i386-linux -Fu/home/motaz/lazarus/lazarus/lcl/units/i386-linux/gtk2 -Fu/home/motaz/lazarus/lazarus/lcl/units/i386-linux -Fu/home/motaz/lazarus/lazarus/packager/units/i386-linux -Fu/home/motaz/projects/TurboBird/ -dLCL -dLCLgtk2 TurboBird.lpr"/>
+</CONFIG>

BIN
TurboBird.ico


BIN
TurboBird.jpg


+ 1134 - 0
TurboBird.lpi

@@ -0,0 +1,1134 @@
+<?xml version="1.0"?>
+<CONFIG>
+  <ProjectOptions>
+    <Version Value="9"/>
+    <General>
+      <Flags>
+        <LRSInOutputDirectory Value="False"/>
+      </Flags>
+      <MainUnit Value="0"/>
+      <Title Value="TurboBird"/>
+      <ResourceType Value="res"/>
+      <UseXPManifest Value="True"/>
+      <Icon Value="0"/>
+      <ActiveWindowIndexAtStart Value="0"/>
+    </General>
+    <VersionInfo>
+      <UseVersionInfo Value="True"/>
+      <AutoIncrementBuild Value="True"/>
+      <MinorVersionNr Value="8"/>
+      <RevisionNr Value="9"/>
+      <BuildNr Value="1067"/>
+      <StringTable ProductVersion="0.8"/>
+    </VersionInfo>
+    <BuildModes Count="1">
+      <Item1 Name="default" Default="True"/>
+    </BuildModes>
+    <PublishOptions>
+      <Version Value="2"/>
+      <IgnoreBinaries Value="False"/>
+      <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
+      <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
+    </PublishOptions>
+    <RunParams>
+      <local>
+        <FormatVersion Value="1"/>
+        <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
+      </local>
+    </RunParams>
+    <RequiredPackages Count="5">
+      <Item1>
+        <PackageName Value="MemDSLaz"/>
+      </Item1>
+      <Item2>
+        <PackageName Value="SQLDBLaz"/>
+      </Item2>
+      <Item3>
+        <PackageName Value="SynEdit"/>
+        <MinVersion Major="1" Valid="True"/>
+      </Item3>
+      <Item4>
+        <PackageName Value="FCL"/>
+        <MinVersion Major="1" Valid="True"/>
+      </Item4>
+      <Item5>
+        <PackageName Value="LCL"/>
+      </Item5>
+    </RequiredPackages>
+    <Units Count="99">
+      <Unit0>
+        <Filename Value="TurboBird.lpr"/>
+        <IsPartOfProject Value="True"/>
+        <UnitName Value="TurboBird"/>
+        <IsVisibleTab Value="True"/>
+        <EditorIndex Value="9"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="25" Y="5"/>
+        <UsageCount Value="200"/>
+        <Loaded Value="True"/>
+      </Unit0>
+      <Unit1>
+        <Filename Value="main.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmMain"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="main"/>
+        <EditorIndex Value="1"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="340"/>
+        <CursorPos X="21" Y="342"/>
+        <UsageCount Value="200"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit1>
+      <Unit2>
+        <Filename Value="createdb.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmCreateDB"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="createdb"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="115" Y="18"/>
+        <UsageCount Value="200"/>
+      </Unit2>
+      <Unit3>
+        <Filename Value="reg.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmReg"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="Reg"/>
+        <EditorIndex Value="13"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="228"/>
+        <CursorPos X="22" Y="269"/>
+        <UsageCount Value="200"/>
+        <Loaded Value="True"/>
+      </Unit3>
+      <Unit4>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/lcl/buttons.pp"/>
+        <UnitName Value="Buttons"/>
+        <TopLine Value="125"/>
+        <CursorPos X="25" Y="141"/>
+        <UsageCount Value="30"/>
+      </Unit4>
+      <Unit5>
+        <Filename Value="querywindow.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmQueryWindow"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="QueryWindow"/>
+        <EditorIndex Value="8"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="233"/>
+        <CursorPos X="50" Y="249"/>
+        <UsageCount Value="200"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit5>
+      <Unit6>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/lcl/dialogs.pp"/>
+        <UnitName Value="Dialogs"/>
+        <TopLine Value="530"/>
+        <CursorPos X="10" Y="489"/>
+        <UsageCount Value="1"/>
+      </Unit6>
+      <Unit7>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/lcl/include/messagedialogs.inc"/>
+        <TopLine Value="152"/>
+        <CursorPos X="6" Y="159"/>
+        <UsageCount Value="1"/>
+      </Unit7>
+      <Unit8>
+        <Filename Value="tableinfo.pas"/>
+        <ComponentName Value="fmTableInfo"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="TableInfo"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="67"/>
+        <CursorPos X="6" Y="97"/>
+        <UsageCount Value="191"/>
+      </Unit8>
+      <Unit9>
+        <Filename Value="viewview.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmViewView"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ViewView"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="23" Y="37"/>
+        <UsageCount Value="200"/>
+      </Unit9>
+      <Unit10>
+        <Filename Value="viewtrigger.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmViewTrigger"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ViewTrigger"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="6"/>
+        <CursorPos X="23" Y="14"/>
+        <UsageCount Value="200"/>
+      </Unit10>
+      <Unit11>
+        <Filename Value="viewsproc.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmViewSProc"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ViewSProc"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="80" Y="37"/>
+        <UsageCount Value="200"/>
+      </Unit11>
+      <Unit12>
+        <Filename Value="viewgen.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmViewGen"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ViewGen"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="37" Y="17"/>
+        <UsageCount Value="201"/>
+      </Unit12>
+      <Unit13>
+        <Filename Value="newtable.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmNewTable"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="NewTable"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="163"/>
+        <CursorPos X="58" Y="171"/>
+        <UsageCount Value="200"/>
+      </Unit13>
+      <Unit14>
+        <Filename Value="newgen.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmNewGen"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="NewGen"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="90"/>
+        <CursorPos X="20" Y="90"/>
+        <UsageCount Value="200"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit14>
+      <Unit15>
+        <Filename Value="enterpass.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmEnterPass"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="EnterPass"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="6"/>
+        <CursorPos X="45" Y="28"/>
+        <UsageCount Value="200"/>
+      </Unit15>
+      <Unit16>
+        <Filename Value="about.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmAbout"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="About"/>
+        <EditorIndex Value="0"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="50"/>
+        <CursorPos X="9" Y="91"/>
+        <UsageCount Value="200"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit16>
+      <Unit17>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/lcl/interfaces/gtk2/interfaces.pas"/>
+        <UnitName Value="Interfaces"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit17>
+      <Unit18>
+        <Filename Value="/usr/share/fpcsrc/2.2.4/rtl/objpas/sysutils/datih.inc"/>
+        <TopLine Value="101"/>
+        <CursorPos X="10" Y="130"/>
+        <UsageCount Value="7"/>
+      </Unit18>
+      <Unit19>
+        <Filename Value="/usr/share/fpcsrc/2.2.4/rtl/objpas/sysutils/dati.inc"/>
+        <TopLine Value="53"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="5"/>
+      </Unit19>
+      <Unit20>
+        <Filename Value="createtrigger.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmCreateTrigger"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="CreateTrigger"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="6"/>
+        <CursorPos X="86" Y="43"/>
+        <UsageCount Value="200"/>
+      </Unit20>
+      <Unit21>
+        <Filename Value="/usr/share/fpcsrc/2.2.4/packages/fcl-db/src/sqldb/sqldb.pp"/>
+        <UnitName Value="sqldb"/>
+        <TopLine Value="1643"/>
+        <CursorPos X="17" Y="1647"/>
+        <UsageCount Value="6"/>
+      </Unit21>
+      <Unit22>
+        <Filename Value="/usr/share/fpcsrc/2.2.4/packages/fcl-db/src/base/sqlscript.pp"/>
+        <UnitName Value="sqlscript"/>
+        <TopLine Value="472"/>
+        <CursorPos X="23" Y="401"/>
+        <UsageCount Value="6"/>
+      </Unit22>
+      <Unit23>
+        <Filename Value="/usr/share/fpcsrc/2.2.4/packages/fcl-db/src/base/db.pas"/>
+        <UnitName Value="db"/>
+        <TopLine Value="1759"/>
+        <CursorPos X="15" Y="1783"/>
+        <UsageCount Value="1"/>
+      </Unit23>
+      <Unit24>
+        <Filename Value="/usr/share/fpcsrc/2.2.4/packages/fcl-db/src/base/datasource.inc"/>
+        <TopLine Value="467"/>
+        <CursorPos X="26" Y="471"/>
+        <UsageCount Value="1"/>
+      </Unit24>
+      <Unit25>
+        <Filename Value="/usr/share/fpcsrc/2.2.4/packages/fcl-db/src/base/dsparams.inc"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="1"/>
+      </Unit25>
+      <Unit26>
+        <Filename Value="indices.pas"/>
+        <ComponentName Value="fmIndices"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="Indices"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="27"/>
+        <CursorPos X="1" Y="127"/>
+        <UsageCount Value="147"/>
+      </Unit26>
+      <Unit27>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/components/cgi/ide/cgilazideintf.pas"/>
+        <UnitName Value="CGILazIDEIntf"/>
+        <TopLine Value="131"/>
+        <CursorPos X="13" Y="138"/>
+        <UsageCount Value="10"/>
+      </Unit27>
+      <Unit28>
+        <Filename Value="../spidercgi/freespiderideintf.pas"/>
+        <UnitName Value="FreeSpiderIDEIntf"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="18" Y="21"/>
+        <UsageCount Value="86"/>
+      </Unit28>
+      <Unit29>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/components/cgi/cgimodules.pas"/>
+        <UnitName Value="cgiModules"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="10"/>
+      </Unit29>
+      <Unit30>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/ideintf/actionseditor.pas"/>
+        <ComponentName Value="ActionListEditor"/>
+        <HasResources Value="True"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ActionsEditor"/>
+        <TopLine Value="1"/>
+        <CursorPos X="30" Y="7"/>
+        <UsageCount Value="4"/>
+      </Unit30>
+      <Unit31>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/ideintf/formeditingintf.pas"/>
+        <UnitName Value="FormEditingIntf"/>
+        <TopLine Value="14"/>
+        <CursorPos X="55" Y="25"/>
+        <UsageCount Value="4"/>
+      </Unit31>
+      <Unit32>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/ideintf/projectintf.pas"/>
+        <UnitName Value="ProjectIntf"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="4"/>
+      </Unit32>
+      <Unit33>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/ideintf/lazideintf.pas"/>
+        <UnitName Value="LazIDEIntf"/>
+        <TopLine Value="14"/>
+        <CursorPos X="24" Y="26"/>
+        <UsageCount Value="4"/>
+      </Unit33>
+      <Unit34>
+        <Filename Value="edittable.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmEditTable"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="EditTable"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="30"/>
+        <CursorPos X="20" Y="69"/>
+        <UsageCount Value="200"/>
+      </Unit34>
+      <Unit35>
+        <Filename Value="/usr/share/fpcsrc/2.2.4/packages/fcl-base/src/custapp.pp"/>
+        <UnitName Value="CustApp"/>
+        <TopLine Value="231"/>
+        <CursorPos X="11" Y="234"/>
+        <UsageCount Value="27"/>
+      </Unit35>
+      <Unit36>
+        <Filename Value="callproc.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmCallProc"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="CallProc"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="3" Y="28"/>
+        <UsageCount Value="200"/>
+      </Unit36>
+      <Unit37>
+        <Filename Value="editdatafullrec.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmEditDataFullRec"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="EditDataFullRec"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="21" Y="53"/>
+        <UsageCount Value="200"/>
+      </Unit37>
+      <Unit38>
+        <Filename Value="udfinfo.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmUDFInfo"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="UDFInfo"/>
+        <EditorIndex Value="5"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="20" Y="6"/>
+        <UsageCount Value="200"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit38>
+      <Unit39>
+        <Filename Value="viewdomain.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmViewDomain"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ViewDomain"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="36" Y="21"/>
+        <UsageCount Value="200"/>
+      </Unit39>
+      <Unit40>
+        <Filename Value="newdomain.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmNewDomain"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="NewDomain"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="20" Y="45"/>
+        <UsageCount Value="200"/>
+      </Unit40>
+      <Unit41>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/components/synedit/synedit.pp"/>
+        <UnitName Value="SynEdit"/>
+        <TopLine Value="1075"/>
+        <CursorPos X="14" Y="1097"/>
+        <UsageCount Value="14"/>
+      </Unit41>
+      <Unit42>
+        <Filename Value="systables.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="dmSysTables"/>
+        <ResourceBaseClass Value="DataModule"/>
+        <UnitName Value="SysTables"/>
+        <EditorIndex Value="7"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="555"/>
+        <CursorPos X="32" Y="561"/>
+        <UsageCount Value="200"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit42>
+      <Unit43>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/components/synedit/syneditmiscclasses.pp"/>
+        <UnitName Value="SynEditMiscClasses"/>
+        <TopLine Value="89"/>
+        <CursorPos X="14" Y="111"/>
+        <UsageCount Value="7"/>
+      </Unit43>
+      <Unit44>
+        <Filename Value="constraints.pas"/>
+        <ComponentName Value="fmConstraints"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="Constraints"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="73"/>
+        <CursorPos X="1" Y="95"/>
+        <UsageCount Value="99"/>
+      </Unit44>
+      <Unit45>
+        <Filename Value="newconstraint.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmNewConstraint"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="NewConstraint"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="60"/>
+        <CursorPos X="54" Y="53"/>
+        <UsageCount Value="200"/>
+      </Unit45>
+      <Unit46>
+        <Filename Value="neweditfield.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmNewEditField"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="NewEditField"/>
+        <EditorIndex Value="4"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="159"/>
+        <CursorPos X="27" Y="201"/>
+        <UsageCount Value="202"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit46>
+      <Unit47>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/lcl/dbgrids.pas"/>
+        <UnitName Value="DBGrids"/>
+        <TopLine Value="510"/>
+        <CursorPos X="16" Y="526"/>
+        <UsageCount Value="17"/>
+      </Unit47>
+      <Unit48>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/lcl/controls.pp"/>
+        <UnitName Value="Controls"/>
+        <TopLine Value="859"/>
+        <CursorPos X="5" Y="875"/>
+        <UsageCount Value="17"/>
+      </Unit48>
+      <Unit49>
+        <Filename Value="/usr/share/fpcsrc/2.2.4/rtl/objpas/classes/classesh.inc"/>
+        <TopLine Value="104"/>
+        <CursorPos X="3" Y="120"/>
+        <UsageCount Value="17"/>
+      </Unit49>
+      <Unit50>
+        <Filename Value="calen.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmCalen"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="Calen"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="17"/>
+        <CursorPos X="37" Y="49"/>
+        <UsageCount Value="198"/>
+      </Unit50>
+      <Unit51>
+        <Filename Value="scriptdb.pas"/>
+        <IsPartOfProject Value="True"/>
+        <UnitName Value="Scriptdb"/>
+        <EditorIndex Value="6"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="327"/>
+        <CursorPos X="53" Y="351"/>
+        <UsageCount Value="185"/>
+        <Loaded Value="True"/>
+      </Unit51>
+      <Unit52>
+        <Filename Value="connectas.pas"/>
+        <ComponentName Value="fmConnectAs"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ConnectAs"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="16"/>
+      </Unit52>
+      <Unit53>
+        <Filename Value="userpermissions.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmUserPermissions"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="UserPermissions"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="58" Y="14"/>
+        <UsageCount Value="161"/>
+      </Unit53>
+      <Unit54>
+        <Filename Value="/usr/lib/lazarus/0.9.29/ide/lazarus.pp"/>
+        <UnitName Value="Lazarus"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="40" Y="18"/>
+        <UsageCount Value="15"/>
+      </Unit54>
+      <Unit55>
+        <Filename Value="tablemanage.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmTableManage"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="TableManage"/>
+        <EditorIndex Value="3"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="96"/>
+        <CursorPos X="22" Y="114"/>
+        <UsageCount Value="144"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit55>
+      <Unit56>
+        <Filename Value="/usr/lib/lazarus/0.9.29/lcl/grids.pas"/>
+        <UnitName Value="Grids"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="12"/>
+      </Unit56>
+      <Unit57>
+        <Filename Value="/usr/lib/lazarus/0.9.29/components/synedit/synedit.pp"/>
+        <UnitName Value="SynEdit"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="783"/>
+        <CursorPos X="30" Y="804"/>
+        <UsageCount Value="7"/>
+      </Unit57>
+      <Unit58>
+        <Filename Value="/usr/lib/lazarus/0.9.29/components/synedit/synedittypes.pp"/>
+        <UnitName Value="SynEditTypes"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="18" Y="38"/>
+        <UsageCount Value="7"/>
+      </Unit58>
+      <Unit59>
+        <Filename Value="/usr/lib/lazarus/0.9.29/lcl/dialogs.pp"/>
+        <UnitName Value="Dialogs"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="346"/>
+        <CursorPos X="33" Y="369"/>
+        <UsageCount Value="7"/>
+      </Unit59>
+      <Unit60>
+        <Filename Value="backuprestore.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmBackupRestore"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="BackupRestore"/>
+        <EditorIndex Value="10"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="40"/>
+        <CursorPos X="14" Y="54"/>
+        <UsageCount Value="130"/>
+        <Loaded Value="True"/>
+      </Unit60>
+      <Unit61>
+        <Filename Value="unitfirebirdservices.pas"/>
+        <UnitName Value="UnitFirebirdServices"/>
+        <EditorIndex Value="11"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="321"/>
+        <CursorPos X="1" Y="367"/>
+        <UsageCount Value="19"/>
+        <Loaded Value="True"/>
+      </Unit61>
+      <Unit62>
+        <Filename Value="/usr/share/fpcsrc/2.4.0/packages/fcl-db/src/sqldb/interbase/ibconnection.pp"/>
+        <UnitName Value="IBConnection"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="435"/>
+        <CursorPos X="19" Y="447"/>
+        <UsageCount Value="5"/>
+      </Unit62>
+      <Unit63>
+        <Filename Value="ibconnection.pp"/>
+        <UnitName Value="IBConnection"/>
+        <EditorIndex Value="12"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="141"/>
+        <CursorPos X="71" Y="165"/>
+        <UsageCount Value="28"/>
+        <Loaded Value="True"/>
+      </Unit63>
+      <Unit64>
+        <Filename Value="/usr/share/fpcsrc/2.4.0/packages/fcl-db/src/sqldb/sqldb.pp"/>
+        <UnitName Value="sqldb"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="44" Y="23"/>
+        <UsageCount Value="9"/>
+      </Unit64>
+      <Unit65>
+        <Filename Value="/usr/share/fpcsrc/2.4.0/packages/fcl-db/src/base/db.pas"/>
+        <UnitName Value="db"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1293"/>
+        <CursorPos X="15" Y="1310"/>
+        <UsageCount Value="9"/>
+      </Unit65>
+      <Unit66>
+        <Filename Value="/usr/share/fpcsrc/2.4.0/packages/fcl-db/src/base/sqlscript.pp"/>
+        <UnitName Value="sqlscript"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="5"/>
+      </Unit66>
+      <Unit67>
+        <Filename Value="/usr/share/fpcsrc/2.4.0/packages/fcl-db/src/base/dataset.inc"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="21"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="5"/>
+      </Unit67>
+      <Unit68>
+        <Filename Value="createuser.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmCreateUser"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="CreateUser"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="3"/>
+        <CursorPos X="71" Y="7"/>
+        <UsageCount Value="100"/>
+      </Unit68>
+      <Unit69>
+        <Filename Value="changepass.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmChangePass"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ChangePass"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="3"/>
+        <CursorPos X="88" Y="14"/>
+        <UsageCount Value="99"/>
+      </Unit69>
+      <Unit70>
+        <Filename Value="permissionmanage.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmPermissionManage"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="PermissionManage"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="53"/>
+        <CursorPos X="21" Y="92"/>
+        <UsageCount Value="97"/>
+      </Unit70>
+      <Unit71>
+        <Filename Value="sqlhistory.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmSQLHistory"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="SQLHistory"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="18" Y="39"/>
+        <UsageCount Value="82"/>
+      </Unit71>
+      <Unit72>
+        <Filename Value="../../lazarus/lazarus/lcl/include/menuitem.inc"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="57"/>
+        <CursorPos X="1" Y="77"/>
+        <UsageCount Value="10"/>
+      </Unit72>
+      <Unit73>
+        <Filename Value="../../lazarus/lazarus/lcl/include/menu.inc"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="241"/>
+        <CursorPos X="1" Y="273"/>
+        <UsageCount Value="10"/>
+      </Unit73>
+      <Unit74>
+        <Filename Value="copytable.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmCopyTable"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="CopyTable"/>
+        <EditorIndex Value="14"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="30"/>
+        <CursorPos X="1" Y="151"/>
+        <UsageCount Value="53"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit74>
+      <Unit75>
+        <Filename Value="/usr/lib/lazarus/0.9.30/lcl/comctrls.pp"/>
+        <UnitName Value="ComCtrls"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="2685"/>
+        <CursorPos X="3" Y="2707"/>
+        <UsageCount Value="8"/>
+      </Unit75>
+      <Unit76>
+        <Filename Value="/usr/lib/lazarus/0.9.30/lcl/include/menuitem.inc"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="53"/>
+        <CursorPos X="1" Y="75"/>
+        <UsageCount Value="8"/>
+      </Unit76>
+      <Unit77>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/lazconf.pp"/>
+        <UnitName Value="LazConf"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit77>
+      <Unit78>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/definetemplates.pas"/>
+        <UnitName Value="DefineTemplates"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit78>
+      <Unit79>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/codetoolsstrconsts.pas"/>
+        <UnitName Value="CodeToolsStrConsts"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit79>
+      <Unit80>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/expreval.pas"/>
+        <UnitName Value="ExprEval"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit80>
+      <Unit81>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/buildlazdialog.pas"/>
+        <UnitName Value="BuildLazDialog"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit81>
+      <Unit82>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/laz2_xmlread.pas"/>
+        <UnitName Value="laz2_XMLRead"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit82>
+      <Unit83>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/registersdf.pas"/>
+        <UnitName Value="RegisterSDF"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit83>
+      <Unit84>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/printer4lazarus.pas"/>
+        <UnitName Value="Printer4Lazarus"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit84>
+      <Unit85>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/printersdlgs.pp"/>
+        <UnitName Value="PrintersDlgs"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit85>
+      <Unit86>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/osprinters.pas"/>
+        <UnitName Value="osprinters"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="29"/>
+        <CursorPos X="8" Y="49"/>
+        <UsageCount Value="9"/>
+      </Unit86>
+      <Unit87>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/lazcontrols.pas"/>
+        <UnitName Value="LazControls"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit87>
+      <Unit88>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/runtimetypeinfocontrols.pas"/>
+        <UnitName Value="RunTimeTypeInfoControls"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit88>
+      <Unit89>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/rttictrls.pas"/>
+        <UnitName Value="RTTICtrls"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="8"/>
+      </Unit89>
+      <Unit90>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/rttigrids.pas"/>
+        <UnitName Value="RTTIGrids"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="8"/>
+      </Unit90>
+      <Unit91>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/sourceprinter.pas"/>
+        <UnitName Value="SourcePrinter"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="8"/>
+      </Unit91>
+      <Unit92>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/memdslaz.pas"/>
+        <UnitName Value="MemDSLaz"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="8"/>
+      </Unit92>
+      <Unit93>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/frmselectdataset.pp"/>
+        <UnitName Value="frmSelectDataset"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="156"/>
+        <CursorPos X="4" Y="193"/>
+        <UsageCount Value="8"/>
+      </Unit93>
+      <Unit94>
+        <Filename Value="../../lazarus/lazarus/lcl/controls.pp"/>
+        <UnitName Value="Controls"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="139"/>
+        <CursorPos X="23" Y="163"/>
+        <UsageCount Value="8"/>
+      </Unit94>
+      <Unit95>
+        <Filename Value="../../lazarus/lazarus/lcl/include/control.inc"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="2262"/>
+        <CursorPos X="1" Y="2286"/>
+        <UsageCount Value="13"/>
+      </Unit95>
+      <Unit96>
+        <Filename Value="../../lazarus/lazarus/lcl/forms.pp"/>
+        <UnitName Value="Forms"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="559"/>
+        <CursorPos X="23" Y="600"/>
+        <UsageCount Value="9"/>
+      </Unit96>
+      <Unit97>
+        <Filename Value="../../lazarus/lazarus/lcl/include/customform.inc"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="359"/>
+        <CursorPos X="3" Y="381"/>
+        <UsageCount Value="9"/>
+      </Unit97>
+      <Unit98>
+        <Filename Value="dbinfo.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmDBInfo"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="dbInfo"/>
+        <EditorIndex Value="2"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="12" Y="28"/>
+        <UsageCount Value="21"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit98>
+    </Units>
+    <JumpHistory Count="30" HistoryIndex="29">
+      <Position1>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="212" Column="1" TopLine="188"/>
+      </Position1>
+      <Position2>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="438" Column="26" TopLine="410"/>
+      </Position2>
+      <Position3>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="326" Column="4" TopLine="308"/>
+      </Position3>
+      <Position4>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="1021" Column="3" TopLine="975"/>
+      </Position4>
+      <Position5>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="1006" Column="8" TopLine="981"/>
+      </Position5>
+      <Position6>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="1007" Column="38" TopLine="981"/>
+      </Position6>
+      <Position7>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="449" Column="72" TopLine="419"/>
+      </Position7>
+      <Position8>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="249" Column="50" TopLine="233"/>
+      </Position8>
+      <Position9>
+        <Filename Value="main.pas"/>
+        <Caret Line="3765" Column="30" TopLine="3724"/>
+      </Position9>
+      <Position10>
+        <Filename Value="systables.pas"/>
+        <Caret Line="98" Column="7" TopLine="96"/>
+      </Position10>
+      <Position11>
+        <Filename Value="systables.pas"/>
+        <Caret Line="49" Column="116" TopLine="22"/>
+      </Position11>
+      <Position12>
+        <Filename Value="systables.pas"/>
+        <Caret Line="571" Column="75" TopLine="534"/>
+      </Position12>
+      <Position13>
+        <Filename Value="systables.pas"/>
+        <Caret Line="573" Column="30" TopLine="539"/>
+      </Position13>
+      <Position14>
+        <Filename Value="systables.pas"/>
+        <Caret Line="572" Column="97" TopLine="551"/>
+      </Position14>
+      <Position15>
+        <Filename Value="main.pas"/>
+        <Caret Line="3765" Column="30" TopLine="3724"/>
+      </Position15>
+      <Position16>
+        <Filename Value="dbinfo.pas"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
+      </Position16>
+      <Position17>
+        <Filename Value="dbinfo.pas"/>
+        <Caret Line="8" Column="63" TopLine="1"/>
+      </Position17>
+      <Position18>
+        <Filename Value="main.pas"/>
+        <Caret Line="3772" Column="30" TopLine="3731"/>
+      </Position18>
+      <Position19>
+        <Filename Value="main.pas"/>
+        <Caret Line="369" Column="5" TopLine="367"/>
+      </Position19>
+      <Position20>
+        <Filename Value="systables.pas"/>
+        <Caret Line="49" Column="14" TopLine="25"/>
+      </Position20>
+      <Position21>
+        <Filename Value="main.pas"/>
+        <Caret Line="235" Column="62" TopLine="196"/>
+      </Position21>
+      <Position22>
+        <Filename Value="main.pas"/>
+        <Caret Line="378" Column="12" TopLine="354"/>
+      </Position22>
+      <Position23>
+        <Filename Value="main.pas"/>
+        <Caret Line="374" Column="27" TopLine="354"/>
+      </Position23>
+      <Position24>
+        <Filename Value="main.pas"/>
+        <Caret Line="382" Column="40" TopLine="354"/>
+      </Position24>
+      <Position25>
+        <Filename Value="main.pas"/>
+        <Caret Line="374" Column="22" TopLine="355"/>
+      </Position25>
+      <Position26>
+        <Filename Value="main.pas"/>
+        <Caret Line="389" Column="22" TopLine="360"/>
+      </Position26>
+      <Position27>
+        <Filename Value="main.pas"/>
+        <Caret Line="403" Column="9" TopLine="379"/>
+      </Position27>
+      <Position28>
+        <Filename Value="systables.pas"/>
+        <Caret Line="573" Column="23" TopLine="556"/>
+      </Position28>
+      <Position29>
+        <Filename Value="systables.pas"/>
+        <Caret Line="50" Column="37" TopLine="49"/>
+      </Position29>
+      <Position30>
+        <Filename Value="main.pas"/>
+        <Caret Line="376" Column="24" TopLine="358"/>
+      </Position30>
+    </JumpHistory>
+  </ProjectOptions>
+  <CompilerOptions>
+    <Version Value="10"/>
+    <SearchPaths>
+      <IncludeFiles Value="$(ProjOutDir)"/>
+    </SearchPaths>
+    <CodeGeneration>
+      <SmartLinkUnit Value="True"/>
+      <SmallerCode Value="True"/>
+      <Optimizations>
+        <OptimizationLevel Value="3"/>
+      </Optimizations>
+    </CodeGeneration>
+    <Linking>
+      <Debugging>
+        <UseLineInfoUnit Value="False"/>
+        <StripSymbols Value="True"/>
+      </Debugging>
+      <LinkSmart Value="True"/>
+      <Options>
+        <Win32>
+          <GraphicApplication Value="True"/>
+        </Win32>
+      </Options>
+    </Linking>
+    <Other>
+      <CompilerMessages>
+        <UseMsgFile Value="True"/>
+      </CompilerMessages>
+      <CompilerPath Value="$(CompPath)"/>
+    </Other>
+  </CompilerOptions>
+  <Debugging>
+    <Exceptions Count="3">
+      <Item1>
+        <Name Value="EAbort"/>
+      </Item1>
+      <Item2>
+        <Name Value="ECodetoolError"/>
+      </Item2>
+      <Item3>
+        <Name Value="EFOpenError"/>
+      </Item3>
+    </Exceptions>
+  </Debugging>
+</CONFIG>

+ 1134 - 0
TurboBird.lpi.bak

@@ -0,0 +1,1134 @@
+<?xml version="1.0"?>
+<CONFIG>
+  <ProjectOptions>
+    <Version Value="9"/>
+    <General>
+      <Flags>
+        <LRSInOutputDirectory Value="False"/>
+      </Flags>
+      <MainUnit Value="0"/>
+      <Title Value="TurboBird"/>
+      <ResourceType Value="res"/>
+      <UseXPManifest Value="True"/>
+      <Icon Value="0"/>
+      <ActiveWindowIndexAtStart Value="0"/>
+    </General>
+    <VersionInfo>
+      <UseVersionInfo Value="True"/>
+      <AutoIncrementBuild Value="True"/>
+      <MinorVersionNr Value="8"/>
+      <RevisionNr Value="9"/>
+      <BuildNr Value="1067"/>
+      <StringTable ProductVersion="0.8"/>
+    </VersionInfo>
+    <BuildModes Count="1">
+      <Item1 Name="default" Default="True"/>
+    </BuildModes>
+    <PublishOptions>
+      <Version Value="2"/>
+      <IgnoreBinaries Value="False"/>
+      <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
+      <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
+    </PublishOptions>
+    <RunParams>
+      <local>
+        <FormatVersion Value="1"/>
+        <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
+      </local>
+    </RunParams>
+    <RequiredPackages Count="5">
+      <Item1>
+        <PackageName Value="MemDSLaz"/>
+      </Item1>
+      <Item2>
+        <PackageName Value="SQLDBLaz"/>
+      </Item2>
+      <Item3>
+        <PackageName Value="SynEdit"/>
+        <MinVersion Major="1" Valid="True"/>
+      </Item3>
+      <Item4>
+        <PackageName Value="FCL"/>
+        <MinVersion Major="1" Valid="True"/>
+      </Item4>
+      <Item5>
+        <PackageName Value="LCL"/>
+      </Item5>
+    </RequiredPackages>
+    <Units Count="99">
+      <Unit0>
+        <Filename Value="TurboBird.lpr"/>
+        <IsPartOfProject Value="True"/>
+        <UnitName Value="TurboBird"/>
+        <IsVisibleTab Value="True"/>
+        <EditorIndex Value="9"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="25" Y="5"/>
+        <UsageCount Value="200"/>
+        <Loaded Value="True"/>
+      </Unit0>
+      <Unit1>
+        <Filename Value="main.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmMain"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="main"/>
+        <EditorIndex Value="1"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="340"/>
+        <CursorPos X="21" Y="342"/>
+        <UsageCount Value="200"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit1>
+      <Unit2>
+        <Filename Value="createdb.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmCreateDB"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="createdb"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="115" Y="18"/>
+        <UsageCount Value="200"/>
+      </Unit2>
+      <Unit3>
+        <Filename Value="reg.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmReg"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="Reg"/>
+        <EditorIndex Value="13"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="228"/>
+        <CursorPos X="22" Y="269"/>
+        <UsageCount Value="200"/>
+        <Loaded Value="True"/>
+      </Unit3>
+      <Unit4>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/lcl/buttons.pp"/>
+        <UnitName Value="Buttons"/>
+        <TopLine Value="125"/>
+        <CursorPos X="25" Y="141"/>
+        <UsageCount Value="30"/>
+      </Unit4>
+      <Unit5>
+        <Filename Value="querywindow.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmQueryWindow"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="QueryWindow"/>
+        <EditorIndex Value="8"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="233"/>
+        <CursorPos X="50" Y="249"/>
+        <UsageCount Value="200"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit5>
+      <Unit6>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/lcl/dialogs.pp"/>
+        <UnitName Value="Dialogs"/>
+        <TopLine Value="530"/>
+        <CursorPos X="10" Y="489"/>
+        <UsageCount Value="1"/>
+      </Unit6>
+      <Unit7>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/lcl/include/messagedialogs.inc"/>
+        <TopLine Value="152"/>
+        <CursorPos X="6" Y="159"/>
+        <UsageCount Value="1"/>
+      </Unit7>
+      <Unit8>
+        <Filename Value="tableinfo.pas"/>
+        <ComponentName Value="fmTableInfo"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="TableInfo"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="67"/>
+        <CursorPos X="6" Y="97"/>
+        <UsageCount Value="191"/>
+      </Unit8>
+      <Unit9>
+        <Filename Value="viewview.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmViewView"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ViewView"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="23" Y="37"/>
+        <UsageCount Value="200"/>
+      </Unit9>
+      <Unit10>
+        <Filename Value="viewtrigger.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmViewTrigger"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ViewTrigger"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="6"/>
+        <CursorPos X="23" Y="14"/>
+        <UsageCount Value="200"/>
+      </Unit10>
+      <Unit11>
+        <Filename Value="viewsproc.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmViewSProc"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ViewSProc"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="80" Y="37"/>
+        <UsageCount Value="200"/>
+      </Unit11>
+      <Unit12>
+        <Filename Value="viewgen.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmViewGen"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ViewGen"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="37" Y="17"/>
+        <UsageCount Value="201"/>
+      </Unit12>
+      <Unit13>
+        <Filename Value="newtable.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmNewTable"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="NewTable"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="163"/>
+        <CursorPos X="58" Y="171"/>
+        <UsageCount Value="200"/>
+      </Unit13>
+      <Unit14>
+        <Filename Value="newgen.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmNewGen"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="NewGen"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="90"/>
+        <CursorPos X="20" Y="90"/>
+        <UsageCount Value="200"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit14>
+      <Unit15>
+        <Filename Value="enterpass.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmEnterPass"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="EnterPass"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="6"/>
+        <CursorPos X="45" Y="28"/>
+        <UsageCount Value="200"/>
+      </Unit15>
+      <Unit16>
+        <Filename Value="about.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmAbout"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="About"/>
+        <EditorIndex Value="0"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="50"/>
+        <CursorPos X="9" Y="91"/>
+        <UsageCount Value="200"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit16>
+      <Unit17>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/lcl/interfaces/gtk2/interfaces.pas"/>
+        <UnitName Value="Interfaces"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit17>
+      <Unit18>
+        <Filename Value="/usr/share/fpcsrc/2.2.4/rtl/objpas/sysutils/datih.inc"/>
+        <TopLine Value="101"/>
+        <CursorPos X="10" Y="130"/>
+        <UsageCount Value="7"/>
+      </Unit18>
+      <Unit19>
+        <Filename Value="/usr/share/fpcsrc/2.2.4/rtl/objpas/sysutils/dati.inc"/>
+        <TopLine Value="53"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="5"/>
+      </Unit19>
+      <Unit20>
+        <Filename Value="createtrigger.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmCreateTrigger"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="CreateTrigger"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="6"/>
+        <CursorPos X="86" Y="43"/>
+        <UsageCount Value="200"/>
+      </Unit20>
+      <Unit21>
+        <Filename Value="/usr/share/fpcsrc/2.2.4/packages/fcl-db/src/sqldb/sqldb.pp"/>
+        <UnitName Value="sqldb"/>
+        <TopLine Value="1643"/>
+        <CursorPos X="17" Y="1647"/>
+        <UsageCount Value="6"/>
+      </Unit21>
+      <Unit22>
+        <Filename Value="/usr/share/fpcsrc/2.2.4/packages/fcl-db/src/base/sqlscript.pp"/>
+        <UnitName Value="sqlscript"/>
+        <TopLine Value="472"/>
+        <CursorPos X="23" Y="401"/>
+        <UsageCount Value="6"/>
+      </Unit22>
+      <Unit23>
+        <Filename Value="/usr/share/fpcsrc/2.2.4/packages/fcl-db/src/base/db.pas"/>
+        <UnitName Value="db"/>
+        <TopLine Value="1759"/>
+        <CursorPos X="15" Y="1783"/>
+        <UsageCount Value="1"/>
+      </Unit23>
+      <Unit24>
+        <Filename Value="/usr/share/fpcsrc/2.2.4/packages/fcl-db/src/base/datasource.inc"/>
+        <TopLine Value="467"/>
+        <CursorPos X="26" Y="471"/>
+        <UsageCount Value="1"/>
+      </Unit24>
+      <Unit25>
+        <Filename Value="/usr/share/fpcsrc/2.2.4/packages/fcl-db/src/base/dsparams.inc"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="1"/>
+      </Unit25>
+      <Unit26>
+        <Filename Value="indices.pas"/>
+        <ComponentName Value="fmIndices"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="Indices"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="27"/>
+        <CursorPos X="1" Y="127"/>
+        <UsageCount Value="147"/>
+      </Unit26>
+      <Unit27>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/components/cgi/ide/cgilazideintf.pas"/>
+        <UnitName Value="CGILazIDEIntf"/>
+        <TopLine Value="131"/>
+        <CursorPos X="13" Y="138"/>
+        <UsageCount Value="10"/>
+      </Unit27>
+      <Unit28>
+        <Filename Value="../spidercgi/freespiderideintf.pas"/>
+        <UnitName Value="FreeSpiderIDEIntf"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="18" Y="21"/>
+        <UsageCount Value="86"/>
+      </Unit28>
+      <Unit29>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/components/cgi/cgimodules.pas"/>
+        <UnitName Value="cgiModules"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="10"/>
+      </Unit29>
+      <Unit30>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/ideintf/actionseditor.pas"/>
+        <ComponentName Value="ActionListEditor"/>
+        <HasResources Value="True"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ActionsEditor"/>
+        <TopLine Value="1"/>
+        <CursorPos X="30" Y="7"/>
+        <UsageCount Value="4"/>
+      </Unit30>
+      <Unit31>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/ideintf/formeditingintf.pas"/>
+        <UnitName Value="FormEditingIntf"/>
+        <TopLine Value="14"/>
+        <CursorPos X="55" Y="25"/>
+        <UsageCount Value="4"/>
+      </Unit31>
+      <Unit32>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/ideintf/projectintf.pas"/>
+        <UnitName Value="ProjectIntf"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="4"/>
+      </Unit32>
+      <Unit33>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/ideintf/lazideintf.pas"/>
+        <UnitName Value="LazIDEIntf"/>
+        <TopLine Value="14"/>
+        <CursorPos X="24" Y="26"/>
+        <UsageCount Value="4"/>
+      </Unit33>
+      <Unit34>
+        <Filename Value="edittable.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmEditTable"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="EditTable"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="30"/>
+        <CursorPos X="20" Y="69"/>
+        <UsageCount Value="200"/>
+      </Unit34>
+      <Unit35>
+        <Filename Value="/usr/share/fpcsrc/2.2.4/packages/fcl-base/src/custapp.pp"/>
+        <UnitName Value="CustApp"/>
+        <TopLine Value="231"/>
+        <CursorPos X="11" Y="234"/>
+        <UsageCount Value="27"/>
+      </Unit35>
+      <Unit36>
+        <Filename Value="callproc.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmCallProc"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="CallProc"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="3" Y="28"/>
+        <UsageCount Value="200"/>
+      </Unit36>
+      <Unit37>
+        <Filename Value="editdatafullrec.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmEditDataFullRec"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="EditDataFullRec"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="21" Y="53"/>
+        <UsageCount Value="200"/>
+      </Unit37>
+      <Unit38>
+        <Filename Value="udfinfo.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmUDFInfo"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="UDFInfo"/>
+        <EditorIndex Value="5"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="20" Y="6"/>
+        <UsageCount Value="200"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit38>
+      <Unit39>
+        <Filename Value="viewdomain.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmViewDomain"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ViewDomain"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="36" Y="21"/>
+        <UsageCount Value="200"/>
+      </Unit39>
+      <Unit40>
+        <Filename Value="newdomain.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmNewDomain"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="NewDomain"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="20" Y="45"/>
+        <UsageCount Value="200"/>
+      </Unit40>
+      <Unit41>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/components/synedit/synedit.pp"/>
+        <UnitName Value="SynEdit"/>
+        <TopLine Value="1075"/>
+        <CursorPos X="14" Y="1097"/>
+        <UsageCount Value="14"/>
+      </Unit41>
+      <Unit42>
+        <Filename Value="systables.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="dmSysTables"/>
+        <ResourceBaseClass Value="DataModule"/>
+        <UnitName Value="SysTables"/>
+        <EditorIndex Value="7"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="555"/>
+        <CursorPos X="32" Y="561"/>
+        <UsageCount Value="200"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit42>
+      <Unit43>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/components/synedit/syneditmiscclasses.pp"/>
+        <UnitName Value="SynEditMiscClasses"/>
+        <TopLine Value="89"/>
+        <CursorPos X="14" Y="111"/>
+        <UsageCount Value="7"/>
+      </Unit43>
+      <Unit44>
+        <Filename Value="constraints.pas"/>
+        <ComponentName Value="fmConstraints"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="Constraints"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="73"/>
+        <CursorPos X="1" Y="95"/>
+        <UsageCount Value="99"/>
+      </Unit44>
+      <Unit45>
+        <Filename Value="newconstraint.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmNewConstraint"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="NewConstraint"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="60"/>
+        <CursorPos X="54" Y="53"/>
+        <UsageCount Value="200"/>
+      </Unit45>
+      <Unit46>
+        <Filename Value="neweditfield.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmNewEditField"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="NewEditField"/>
+        <EditorIndex Value="4"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="159"/>
+        <CursorPos X="27" Y="201"/>
+        <UsageCount Value="202"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit46>
+      <Unit47>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/lcl/dbgrids.pas"/>
+        <UnitName Value="DBGrids"/>
+        <TopLine Value="510"/>
+        <CursorPos X="16" Y="526"/>
+        <UsageCount Value="17"/>
+      </Unit47>
+      <Unit48>
+        <Filename Value="/usr/lib/lazarus/0.9.28.2/lcl/controls.pp"/>
+        <UnitName Value="Controls"/>
+        <TopLine Value="859"/>
+        <CursorPos X="5" Y="875"/>
+        <UsageCount Value="17"/>
+      </Unit48>
+      <Unit49>
+        <Filename Value="/usr/share/fpcsrc/2.2.4/rtl/objpas/classes/classesh.inc"/>
+        <TopLine Value="104"/>
+        <CursorPos X="3" Y="120"/>
+        <UsageCount Value="17"/>
+      </Unit49>
+      <Unit50>
+        <Filename Value="calen.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmCalen"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="Calen"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="17"/>
+        <CursorPos X="37" Y="49"/>
+        <UsageCount Value="198"/>
+      </Unit50>
+      <Unit51>
+        <Filename Value="scriptdb.pas"/>
+        <IsPartOfProject Value="True"/>
+        <UnitName Value="Scriptdb"/>
+        <EditorIndex Value="6"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="327"/>
+        <CursorPos X="53" Y="351"/>
+        <UsageCount Value="185"/>
+        <Loaded Value="True"/>
+      </Unit51>
+      <Unit52>
+        <Filename Value="connectas.pas"/>
+        <ComponentName Value="fmConnectAs"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ConnectAs"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="16"/>
+      </Unit52>
+      <Unit53>
+        <Filename Value="userpermissions.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmUserPermissions"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="UserPermissions"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="58" Y="14"/>
+        <UsageCount Value="161"/>
+      </Unit53>
+      <Unit54>
+        <Filename Value="/usr/lib/lazarus/0.9.29/ide/lazarus.pp"/>
+        <UnitName Value="Lazarus"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="40" Y="18"/>
+        <UsageCount Value="15"/>
+      </Unit54>
+      <Unit55>
+        <Filename Value="tablemanage.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmTableManage"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="TableManage"/>
+        <EditorIndex Value="3"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="96"/>
+        <CursorPos X="22" Y="114"/>
+        <UsageCount Value="144"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit55>
+      <Unit56>
+        <Filename Value="/usr/lib/lazarus/0.9.29/lcl/grids.pas"/>
+        <UnitName Value="Grids"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="12"/>
+      </Unit56>
+      <Unit57>
+        <Filename Value="/usr/lib/lazarus/0.9.29/components/synedit/synedit.pp"/>
+        <UnitName Value="SynEdit"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="783"/>
+        <CursorPos X="30" Y="804"/>
+        <UsageCount Value="7"/>
+      </Unit57>
+      <Unit58>
+        <Filename Value="/usr/lib/lazarus/0.9.29/components/synedit/synedittypes.pp"/>
+        <UnitName Value="SynEditTypes"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="18" Y="38"/>
+        <UsageCount Value="7"/>
+      </Unit58>
+      <Unit59>
+        <Filename Value="/usr/lib/lazarus/0.9.29/lcl/dialogs.pp"/>
+        <UnitName Value="Dialogs"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="346"/>
+        <CursorPos X="33" Y="369"/>
+        <UsageCount Value="7"/>
+      </Unit59>
+      <Unit60>
+        <Filename Value="backuprestore.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmBackupRestore"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="BackupRestore"/>
+        <EditorIndex Value="10"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="40"/>
+        <CursorPos X="14" Y="54"/>
+        <UsageCount Value="130"/>
+        <Loaded Value="True"/>
+      </Unit60>
+      <Unit61>
+        <Filename Value="unitfirebirdservices.pas"/>
+        <UnitName Value="UnitFirebirdServices"/>
+        <EditorIndex Value="11"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="321"/>
+        <CursorPos X="1" Y="367"/>
+        <UsageCount Value="19"/>
+        <Loaded Value="True"/>
+      </Unit61>
+      <Unit62>
+        <Filename Value="/usr/share/fpcsrc/2.4.0/packages/fcl-db/src/sqldb/interbase/ibconnection.pp"/>
+        <UnitName Value="IBConnection"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="435"/>
+        <CursorPos X="19" Y="447"/>
+        <UsageCount Value="5"/>
+      </Unit62>
+      <Unit63>
+        <Filename Value="ibconnection.pp"/>
+        <UnitName Value="IBConnection"/>
+        <EditorIndex Value="12"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="141"/>
+        <CursorPos X="71" Y="165"/>
+        <UsageCount Value="28"/>
+        <Loaded Value="True"/>
+      </Unit63>
+      <Unit64>
+        <Filename Value="/usr/share/fpcsrc/2.4.0/packages/fcl-db/src/sqldb/sqldb.pp"/>
+        <UnitName Value="sqldb"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="44" Y="23"/>
+        <UsageCount Value="9"/>
+      </Unit64>
+      <Unit65>
+        <Filename Value="/usr/share/fpcsrc/2.4.0/packages/fcl-db/src/base/db.pas"/>
+        <UnitName Value="db"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1293"/>
+        <CursorPos X="15" Y="1310"/>
+        <UsageCount Value="9"/>
+      </Unit65>
+      <Unit66>
+        <Filename Value="/usr/share/fpcsrc/2.4.0/packages/fcl-db/src/base/sqlscript.pp"/>
+        <UnitName Value="sqlscript"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="5"/>
+      </Unit66>
+      <Unit67>
+        <Filename Value="/usr/share/fpcsrc/2.4.0/packages/fcl-db/src/base/dataset.inc"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="21"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="5"/>
+      </Unit67>
+      <Unit68>
+        <Filename Value="createuser.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmCreateUser"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="CreateUser"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="3"/>
+        <CursorPos X="71" Y="7"/>
+        <UsageCount Value="100"/>
+      </Unit68>
+      <Unit69>
+        <Filename Value="changepass.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmChangePass"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ChangePass"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="3"/>
+        <CursorPos X="88" Y="14"/>
+        <UsageCount Value="99"/>
+      </Unit69>
+      <Unit70>
+        <Filename Value="permissionmanage.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmPermissionManage"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="PermissionManage"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="53"/>
+        <CursorPos X="21" Y="92"/>
+        <UsageCount Value="97"/>
+      </Unit70>
+      <Unit71>
+        <Filename Value="sqlhistory.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmSQLHistory"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="SQLHistory"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="18" Y="39"/>
+        <UsageCount Value="82"/>
+      </Unit71>
+      <Unit72>
+        <Filename Value="../../lazarus/lazarus/lcl/include/menuitem.inc"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="57"/>
+        <CursorPos X="1" Y="77"/>
+        <UsageCount Value="10"/>
+      </Unit72>
+      <Unit73>
+        <Filename Value="../../lazarus/lazarus/lcl/include/menu.inc"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="241"/>
+        <CursorPos X="1" Y="273"/>
+        <UsageCount Value="10"/>
+      </Unit73>
+      <Unit74>
+        <Filename Value="copytable.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmCopyTable"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="CopyTable"/>
+        <EditorIndex Value="14"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="30"/>
+        <CursorPos X="1" Y="151"/>
+        <UsageCount Value="53"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit74>
+      <Unit75>
+        <Filename Value="/usr/lib/lazarus/0.9.30/lcl/comctrls.pp"/>
+        <UnitName Value="ComCtrls"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="2685"/>
+        <CursorPos X="3" Y="2707"/>
+        <UsageCount Value="8"/>
+      </Unit75>
+      <Unit76>
+        <Filename Value="/usr/lib/lazarus/0.9.30/lcl/include/menuitem.inc"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="53"/>
+        <CursorPos X="1" Y="75"/>
+        <UsageCount Value="8"/>
+      </Unit76>
+      <Unit77>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/lazconf.pp"/>
+        <UnitName Value="LazConf"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit77>
+      <Unit78>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/definetemplates.pas"/>
+        <UnitName Value="DefineTemplates"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit78>
+      <Unit79>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/codetoolsstrconsts.pas"/>
+        <UnitName Value="CodeToolsStrConsts"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit79>
+      <Unit80>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/expreval.pas"/>
+        <UnitName Value="ExprEval"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit80>
+      <Unit81>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/buildlazdialog.pas"/>
+        <UnitName Value="BuildLazDialog"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit81>
+      <Unit82>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/laz2_xmlread.pas"/>
+        <UnitName Value="laz2_XMLRead"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit82>
+      <Unit83>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/registersdf.pas"/>
+        <UnitName Value="RegisterSDF"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit83>
+      <Unit84>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/printer4lazarus.pas"/>
+        <UnitName Value="Printer4Lazarus"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit84>
+      <Unit85>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/printersdlgs.pp"/>
+        <UnitName Value="PrintersDlgs"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit85>
+      <Unit86>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/osprinters.pas"/>
+        <UnitName Value="osprinters"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="29"/>
+        <CursorPos X="8" Y="49"/>
+        <UsageCount Value="9"/>
+      </Unit86>
+      <Unit87>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/lazcontrols.pas"/>
+        <UnitName Value="LazControls"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit87>
+      <Unit88>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/runtimetypeinfocontrols.pas"/>
+        <UnitName Value="RunTimeTypeInfoControls"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="9"/>
+      </Unit88>
+      <Unit89>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/rttictrls.pas"/>
+        <UnitName Value="RTTICtrls"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="8"/>
+      </Unit89>
+      <Unit90>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/rttigrids.pas"/>
+        <UnitName Value="RTTIGrids"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="8"/>
+      </Unit90>
+      <Unit91>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/sourceprinter.pas"/>
+        <UnitName Value="SourcePrinter"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="8"/>
+      </Unit91>
+      <Unit92>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/memdslaz.pas"/>
+        <UnitName Value="MemDSLaz"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
+        <UsageCount Value="8"/>
+      </Unit92>
+      <Unit93>
+        <Filename Value="/usr/lib/lazarus/0.9.30/ide/frmselectdataset.pp"/>
+        <UnitName Value="frmSelectDataset"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="156"/>
+        <CursorPos X="4" Y="193"/>
+        <UsageCount Value="8"/>
+      </Unit93>
+      <Unit94>
+        <Filename Value="../../lazarus/lazarus/lcl/controls.pp"/>
+        <UnitName Value="Controls"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="139"/>
+        <CursorPos X="23" Y="163"/>
+        <UsageCount Value="8"/>
+      </Unit94>
+      <Unit95>
+        <Filename Value="../../lazarus/lazarus/lcl/include/control.inc"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="2262"/>
+        <CursorPos X="1" Y="2286"/>
+        <UsageCount Value="13"/>
+      </Unit95>
+      <Unit96>
+        <Filename Value="../../lazarus/lazarus/lcl/forms.pp"/>
+        <UnitName Value="Forms"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="559"/>
+        <CursorPos X="23" Y="600"/>
+        <UsageCount Value="9"/>
+      </Unit96>
+      <Unit97>
+        <Filename Value="../../lazarus/lazarus/lcl/include/customform.inc"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="359"/>
+        <CursorPos X="3" Y="381"/>
+        <UsageCount Value="9"/>
+      </Unit97>
+      <Unit98>
+        <Filename Value="dbinfo.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmDBInfo"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="dbInfo"/>
+        <EditorIndex Value="2"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="12" Y="28"/>
+        <UsageCount Value="21"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit98>
+    </Units>
+    <JumpHistory Count="30" HistoryIndex="29">
+      <Position1>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="212" Column="1" TopLine="188"/>
+      </Position1>
+      <Position2>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="438" Column="26" TopLine="410"/>
+      </Position2>
+      <Position3>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="326" Column="4" TopLine="308"/>
+      </Position3>
+      <Position4>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="1021" Column="3" TopLine="975"/>
+      </Position4>
+      <Position5>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="1006" Column="8" TopLine="981"/>
+      </Position5>
+      <Position6>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="1007" Column="38" TopLine="981"/>
+      </Position6>
+      <Position7>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="449" Column="72" TopLine="419"/>
+      </Position7>
+      <Position8>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="249" Column="50" TopLine="233"/>
+      </Position8>
+      <Position9>
+        <Filename Value="main.pas"/>
+        <Caret Line="3765" Column="30" TopLine="3724"/>
+      </Position9>
+      <Position10>
+        <Filename Value="systables.pas"/>
+        <Caret Line="98" Column="7" TopLine="96"/>
+      </Position10>
+      <Position11>
+        <Filename Value="systables.pas"/>
+        <Caret Line="49" Column="116" TopLine="22"/>
+      </Position11>
+      <Position12>
+        <Filename Value="systables.pas"/>
+        <Caret Line="571" Column="75" TopLine="534"/>
+      </Position12>
+      <Position13>
+        <Filename Value="systables.pas"/>
+        <Caret Line="573" Column="30" TopLine="539"/>
+      </Position13>
+      <Position14>
+        <Filename Value="systables.pas"/>
+        <Caret Line="572" Column="97" TopLine="551"/>
+      </Position14>
+      <Position15>
+        <Filename Value="main.pas"/>
+        <Caret Line="3765" Column="30" TopLine="3724"/>
+      </Position15>
+      <Position16>
+        <Filename Value="dbinfo.pas"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
+      </Position16>
+      <Position17>
+        <Filename Value="dbinfo.pas"/>
+        <Caret Line="8" Column="63" TopLine="1"/>
+      </Position17>
+      <Position18>
+        <Filename Value="main.pas"/>
+        <Caret Line="3772" Column="30" TopLine="3731"/>
+      </Position18>
+      <Position19>
+        <Filename Value="main.pas"/>
+        <Caret Line="369" Column="5" TopLine="367"/>
+      </Position19>
+      <Position20>
+        <Filename Value="systables.pas"/>
+        <Caret Line="49" Column="14" TopLine="25"/>
+      </Position20>
+      <Position21>
+        <Filename Value="main.pas"/>
+        <Caret Line="235" Column="62" TopLine="196"/>
+      </Position21>
+      <Position22>
+        <Filename Value="main.pas"/>
+        <Caret Line="378" Column="12" TopLine="354"/>
+      </Position22>
+      <Position23>
+        <Filename Value="main.pas"/>
+        <Caret Line="374" Column="27" TopLine="354"/>
+      </Position23>
+      <Position24>
+        <Filename Value="main.pas"/>
+        <Caret Line="382" Column="40" TopLine="354"/>
+      </Position24>
+      <Position25>
+        <Filename Value="main.pas"/>
+        <Caret Line="374" Column="22" TopLine="355"/>
+      </Position25>
+      <Position26>
+        <Filename Value="main.pas"/>
+        <Caret Line="389" Column="22" TopLine="360"/>
+      </Position26>
+      <Position27>
+        <Filename Value="main.pas"/>
+        <Caret Line="403" Column="9" TopLine="379"/>
+      </Position27>
+      <Position28>
+        <Filename Value="systables.pas"/>
+        <Caret Line="573" Column="23" TopLine="556"/>
+      </Position28>
+      <Position29>
+        <Filename Value="systables.pas"/>
+        <Caret Line="50" Column="37" TopLine="49"/>
+      </Position29>
+      <Position30>
+        <Filename Value="main.pas"/>
+        <Caret Line="376" Column="24" TopLine="358"/>
+      </Position30>
+    </JumpHistory>
+  </ProjectOptions>
+  <CompilerOptions>
+    <Version Value="10"/>
+    <SearchPaths>
+      <IncludeFiles Value="$(ProjOutDir)"/>
+    </SearchPaths>
+    <CodeGeneration>
+      <SmartLinkUnit Value="True"/>
+      <SmallerCode Value="True"/>
+      <Optimizations>
+        <OptimizationLevel Value="3"/>
+      </Optimizations>
+    </CodeGeneration>
+    <Linking>
+      <Debugging>
+        <UseLineInfoUnit Value="False"/>
+        <StripSymbols Value="True"/>
+      </Debugging>
+      <LinkSmart Value="True"/>
+      <Options>
+        <Win32>
+          <GraphicApplication Value="True"/>
+        </Win32>
+      </Options>
+    </Linking>
+    <Other>
+      <CompilerMessages>
+        <UseMsgFile Value="True"/>
+      </CompilerMessages>
+      <CompilerPath Value="$(CompPath)"/>
+    </Other>
+  </CompilerOptions>
+  <Debugging>
+    <Exceptions Count="3">
+      <Item1>
+        <Name Value="EAbort"/>
+      </Item1>
+      <Item2>
+        <Name Value="ECodetoolError"/>
+      </Item2>
+      <Item3>
+        <Name Value="EFOpenError"/>
+      </Item3>
+    </Exceptions>
+  </Debugging>
+</CONFIG>

+ 373 - 0
TurboBird.lpi~

@@ -0,0 +1,373 @@
+<?xml version="1.0"?>
+<CONFIG>
+  <ProjectOptions>
+    <Version Value="7"/>
+    <General>
+      <MainUnit Value="0"/>
+      <TargetFileExt Value=""/>
+      <Icon Value="0"/>
+      <UseXPManifest Value="True"/>
+      <ActiveEditorIndexAtStart Value="10"/>
+    </General>
+    <VersionInfo>
+      <UseVersionInfo Value="True"/>
+      <CurrentMajorRevNr Value="5"/>
+      <CurrentBuildNr Value="1"/>
+      <ProjectVersion Value="0.5.0.1"/>
+    </VersionInfo>
+    <PublishOptions>
+      <Version Value="2"/>
+      <IgnoreBinaries Value="False"/>
+      <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
+      <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
+    </PublishOptions>
+    <RunParams>
+      <local>
+        <FormatVersion Value="1"/>
+        <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
+      </local>
+    </RunParams>
+    <RequiredPackages Count="3">
+      <Item1>
+        <PackageName Value="FCL"/>
+        <MinVersion Major="1" Valid="True"/>
+      </Item1>
+      <Item2>
+        <PackageName Value="SQLDBLaz"/>
+        <MinVersion Major="1" Release="1" Valid="True"/>
+      </Item2>
+      <Item3>
+        <PackageName Value="LCL"/>
+      </Item3>
+    </RequiredPackages>
+    <Units Count="16">
+      <Unit0>
+        <Filename Value="FreeBird.lpr"/>
+        <IsPartOfProject Value="True"/>
+        <UnitName Value="FreeBird"/>
+        <CursorPos X="25" Y="5"/>
+        <TopLine Value="1"/>
+        <EditorIndex Value="13"/>
+        <UsageCount Value="57"/>
+        <Loaded Value="True"/>
+      </Unit0>
+      <Unit1>
+        <Filename Value="main.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmMain"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="main"/>
+        <CursorPos X="3" Y="145"/>
+        <TopLine Value="141"/>
+        <EditorIndex Value="0"/>
+        <UsageCount Value="57"/>
+        <Loaded Value="True"/>
+      </Unit1>
+      <Unit2>
+        <Filename Value="createdb.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmCreateDB"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="createdb"/>
+        <CursorPos X="24" Y="29"/>
+        <TopLine Value="26"/>
+        <EditorIndex Value="12"/>
+        <UsageCount Value="57"/>
+        <Loaded Value="True"/>
+      </Unit2>
+      <Unit3>
+        <Filename Value="reg.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmReg"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="Reg"/>
+        <CursorPos X="8" Y="166"/>
+        <TopLine Value="148"/>
+        <EditorIndex Value="6"/>
+        <UsageCount Value="57"/>
+        <Loaded Value="True"/>
+      </Unit3>
+      <Unit4>
+        <Filename Value="../../../../usr/lib/lazarus/0.9.28.2/lcl/buttons.pp"/>
+        <UnitName Value="Buttons"/>
+        <CursorPos X="25" Y="141"/>
+        <TopLine Value="141"/>
+        <EditorIndex Value="11"/>
+        <UsageCount Value="28"/>
+        <Loaded Value="True"/>
+      </Unit4>
+      <Unit5>
+        <Filename Value="querywindow.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmQueryWindow"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="QueryWindow"/>
+        <CursorPos X="42" Y="122"/>
+        <TopLine Value="98"/>
+        <EditorIndex Value="8"/>
+        <UsageCount Value="51"/>
+        <Loaded Value="True"/>
+      </Unit5>
+      <Unit6>
+        <Filename Value="../../../../usr/lib/lazarus/0.9.28.2/lcl/dialogs.pp"/>
+        <UnitName Value="Dialogs"/>
+        <CursorPos X="10" Y="489"/>
+        <TopLine Value="530"/>
+        <UsageCount Value="12"/>
+      </Unit6>
+      <Unit7>
+        <Filename Value="../../../../usr/lib/lazarus/0.9.28.2/lcl/include/messagedialogs.inc"/>
+        <CursorPos X="6" Y="159"/>
+        <TopLine Value="152"/>
+        <UsageCount Value="12"/>
+      </Unit7>
+      <Unit8>
+        <Filename Value="tableinfo.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmTableInfo"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="TableInfo"/>
+        <CursorPos X="18" Y="16"/>
+        <TopLine Value="1"/>
+        <EditorIndex Value="9"/>
+        <UsageCount Value="35"/>
+        <Loaded Value="True"/>
+      </Unit8>
+      <Unit9>
+        <Filename Value="viewview.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmViewView"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ViewView"/>
+        <CursorPos X="25" Y="10"/>
+        <TopLine Value="1"/>
+        <EditorIndex Value="5"/>
+        <UsageCount Value="35"/>
+        <Loaded Value="True"/>
+      </Unit9>
+      <Unit10>
+        <Filename Value="viewtrigger.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmViewTrigger"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ViewTrigger"/>
+        <CursorPos X="11" Y="3"/>
+        <TopLine Value="1"/>
+        <EditorIndex Value="4"/>
+        <UsageCount Value="34"/>
+        <Loaded Value="True"/>
+      </Unit10>
+      <Unit11>
+        <Filename Value="viewsproc.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmViewSProc"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ViewSProc"/>
+        <CursorPos X="1" Y="1"/>
+        <TopLine Value="1"/>
+        <EditorIndex Value="3"/>
+        <UsageCount Value="33"/>
+        <Loaded Value="True"/>
+      </Unit11>
+      <Unit12>
+        <Filename Value="viewgen.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmViewGen"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="ViewGen"/>
+        <CursorPos X="20" Y="16"/>
+        <TopLine Value="1"/>
+        <EditorIndex Value="2"/>
+        <UsageCount Value="32"/>
+        <Loaded Value="True"/>
+      </Unit12>
+      <Unit13>
+        <Filename Value="newtable.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmNewTable"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="NewTable"/>
+        <CursorPos X="39" Y="78"/>
+        <TopLine Value="54"/>
+        <EditorIndex Value="1"/>
+        <UsageCount Value="31"/>
+        <Loaded Value="True"/>
+      </Unit13>
+      <Unit14>
+        <Filename Value="newgen.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmNewGen"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="NewGen"/>
+        <CursorPos X="65" Y="64"/>
+        <TopLine Value="54"/>
+        <EditorIndex Value="10"/>
+        <UsageCount Value="24"/>
+        <Loaded Value="True"/>
+      </Unit14>
+      <Unit15>
+        <Filename Value="enterpass.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="fmEnterPass"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="EnterPass"/>
+        <CursorPos X="13" Y="36"/>
+        <TopLine Value="1"/>
+        <EditorIndex Value="7"/>
+        <UsageCount Value="21"/>
+        <Loaded Value="True"/>
+      </Unit15>
+    </Units>
+    <JumpHistory Count="30" HistoryIndex="29">
+      <Position1>
+        <Filename Value="newgen.pas"/>
+        <Caret Line="75" Column="69" TopLine="52"/>
+      </Position1>
+      <Position2>
+        <Filename Value="newgen.pas"/>
+        <Caret Line="72" Column="70" TopLine="60"/>
+      </Position2>
+      <Position3>
+        <Filename Value="newgen.pas"/>
+        <Caret Line="79" Column="86" TopLine="71"/>
+      </Position3>
+      <Position4>
+        <Filename Value="newgen.pas"/>
+        <Caret Line="41" Column="20" TopLine="1"/>
+      </Position4>
+      <Position5>
+        <Filename Value="newgen.pas"/>
+        <Caret Line="123" Column="15" TopLine="81"/>
+      </Position5>
+      <Position6>
+        <Filename Value="main.pas"/>
+        <Caret Line="124" Column="1" TopLine="90"/>
+      </Position6>
+      <Position7>
+        <Filename Value="main.pas"/>
+        <Caret Line="131" Column="1" TopLine="90"/>
+      </Position7>
+      <Position8>
+        <Filename Value="main.pas"/>
+        <Caret Line="134" Column="15" TopLine="112"/>
+      </Position8>
+      <Position9>
+        <Filename Value="newgen.pas"/>
+        <Caret Line="123" Column="18" TopLine="58"/>
+      </Position9>
+      <Position10>
+        <Filename Value="main.pas"/>
+        <Caret Line="134" Column="15" TopLine="112"/>
+      </Position10>
+      <Position11>
+        <Filename Value="reg.pas"/>
+        <Caret Line="21" Column="40" TopLine="1"/>
+      </Position11>
+      <Position12>
+        <Filename Value="reg.pas"/>
+        <Caret Line="74" Column="19" TopLine="66"/>
+      </Position12>
+      <Position13>
+        <Filename Value="reg.pas"/>
+        <Caret Line="55" Column="7" TopLine="29"/>
+      </Position13>
+      <Position14>
+        <Filename Value="reg.pas"/>
+        <Caret Line="49" Column="14" TopLine="30"/>
+      </Position14>
+      <Position15>
+        <Filename Value="enterpass.pas"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
+      </Position15>
+      <Position16>
+        <Filename Value="reg.pas"/>
+        <Caret Line="165" Column="36" TopLine="143"/>
+      </Position16>
+      <Position17>
+        <Filename Value="reg.pas"/>
+        <Caret Line="76" Column="15" TopLine="53"/>
+      </Position17>
+      <Position18>
+        <Filename Value="reg.pas"/>
+        <Caret Line="55" Column="28" TopLine="30"/>
+      </Position18>
+      <Position19>
+        <Filename Value="reg.pas"/>
+        <Caret Line="54" Column="14" TopLine="30"/>
+      </Position19>
+      <Position20>
+        <Filename Value="reg.pas"/>
+        <Caret Line="81" Column="21" TopLine="58"/>
+      </Position20>
+      <Position21>
+        <Filename Value="reg.pas"/>
+        <Caret Line="49" Column="28" TopLine="24"/>
+      </Position21>
+      <Position22>
+        <Filename Value="main.pas"/>
+        <Caret Line="88" Column="12" TopLine="66"/>
+      </Position22>
+      <Position23>
+        <Filename Value="main.pas"/>
+        <Caret Line="671" Column="77" TopLine="642"/>
+      </Position23>
+      <Position24>
+        <Filename Value="enterpass.pas"/>
+        <Caret Line="18" Column="33" TopLine="1"/>
+      </Position24>
+      <Position25>
+        <Filename Value="reg.pas"/>
+        <Caret Line="46" Column="23" TopLine="28"/>
+      </Position25>
+      <Position26>
+        <Filename Value="reg.pas"/>
+        <Caret Line="76" Column="19" TopLine="68"/>
+      </Position26>
+      <Position27>
+        <Filename Value="reg.pas"/>
+        <Caret Line="130" Column="25" TopLine="99"/>
+      </Position27>
+      <Position28>
+        <Filename Value="reg.pas"/>
+        <Caret Line="76" Column="21" TopLine="68"/>
+      </Position28>
+      <Position29>
+        <Filename Value="main.pas"/>
+        <Caret Line="671" Column="29" TopLine="621"/>
+      </Position29>
+      <Position30>
+        <Filename Value="newgen.pas"/>
+        <Caret Line="82" Column="20" TopLine="67"/>
+      </Position30>
+    </JumpHistory>
+  </ProjectOptions>
+  <CompilerOptions>
+    <Version Value="8"/>
+    <SearchPaths>
+      <IncludeFiles Value="$(ProjOutDir)/"/>
+    </SearchPaths>
+    <Linking>
+      <Options>
+        <Win32>
+          <GraphicApplication Value="True"/>
+        </Win32>
+      </Options>
+    </Linking>
+    <Other>
+      <CompilerPath Value="$(CompPath)"/>
+    </Other>
+  </CompilerOptions>
+  <Debugging>
+    <Exceptions Count="3">
+      <Item1>
+        <Name Value="EAbort"/>
+      </Item1>
+      <Item2>
+        <Name Value="ECodetoolError"/>
+      </Item2>
+      <Item3>
+        <Name Value="EFOpenError"/>
+      </Item3>
+    </Exceptions>
+  </Debugging>
+</CONFIG>

+ 86 - 0
TurboBird.lpr

@@ -0,0 +1,86 @@
+{***************************************************************************}
+{  TurboBird: FireBird database administration and management tool          }
+{  Developed by: Motaz Abdel Azeem http://code.sd/                          }
+{  Start development:  5.Dec.2009                                           }
+{  Last updated     : 14.Dec.2011                                           }
+{  License          : GPL for GUI, LGPL for Units                           }
+{***************************************************************************}
+
+program TurboBird;
+
+{$mode objfpc}{$H+}
+
+uses
+  {$IFDEF UNIX}{$IFDEF UseCThreads}
+  cthreads,
+  {$ENDIF}{$ENDIF}
+  Interfaces, // this includes the LCL widgetset
+  Forms, Controls, memdslaz, main, createdb, Reg, QueryWindow,
+  ViewView, ViewTrigger, ViewSProc, ViewGen, NewTable, NewGen, EnterPass, About,
+  CreateTrigger, EditTable, CallProc, EditDataFullRec,
+  UDFInfo, ViewDomain, NewDomain, SysTables, NewConstraint, NewEditField, Calen, Scriptdb,
+  UserPermissions, TableManage, BackupRestore, CreateUser, ChangePass,
+  PermissionManage, SQLHistory, CopyTable, dynlibs, ibase60dyn, dbInfo;
+
+const
+  Version = '0.8.9';
+  VersionDate = '2010 - Dec 2011';
+{$IFDEF Unix}
+  {$DEFINE extdecl:=cdecl}
+    fbclib = 'libfbclient.' + sharedsuffix;
+{$ENDIF}
+{$IFDEF Windows}
+  {$DEFINE extdecl:=stdcall}
+   fbclib = 'fbclient.dll';
+{$ENDIF}
+
+{$R *.res}
+
+var
+  SAbout: TfmAbout;
+  IBaseLibraryHandle : TLibHandle;
+begin
+  Application.Initialize;
+  IBaseLibraryHandle:= LoadLibrary(fbclib);
+  // Check Firebird library existance
+  if (IBaseLibraryHandle = nilhandle) then
+  begin
+     Application.MessageBox('Can not load library: ' + fbclib, 'Error', 0);
+     Exit;
+  end;
+  SAbout:= TfmAbout.Create(nil);
+  SAbout.BorderStyle:= bsNone;
+  SAbout.BitBtn1.Visible:= False;
+  SAbout.Show;
+  Application.ProcessMessages;
+  SAbout.Update;
+
+  Application.CreateForm(TfmMain, fmMain);
+  Application.CreateForm(TfmCreateDB, fmCreateDB);
+  Application.CreateForm(TfmReg, fmReg);
+  Application.CreateForm(TfmNewTable, fmNewTable);
+  Application.CreateForm(TfmNewGen, fmNewGen);
+  Application.CreateForm(TfmEnterPass, fmEnterPass);
+  Application.CreateForm(TfmCreateTrigger, fmCreateTrigger);
+  Application.CreateForm(TfmEditTable, fmEditTable);
+  Application.CreateForm(TfmCallProc, fmCallProc);
+  Application.CreateForm(TfmEditDataFullRec, fmEditDataFullRec);
+  Application.CreateForm(TfmNewDomain, fmNewDomain);
+  Application.CreateForm(TdmSysTables, dmSysTables);
+  Application.CreateForm(TfmNewConstraint, fmNewConstraint);
+  Application.CreateForm(TfmCalen, fmCalen);
+  Application.CreateForm(TfmBackupRestore, fmBackupRestore);
+  Application.CreateForm(TfmCreateUser, fmCreateUser);
+  Application.CreateForm(TfmChangePass, fmChangePass);
+  Application.CreateForm(TfmSQLHistory, fmSQLHistory);
+  Application.CreateForm(TfmCopyTable, fmCopyTable);
+  fmMain.Version:= Version;
+  fmMain.VersionDate:= VersionDate;
+  SAbout.Free;
+  InitialiseIBase60;
+  Application.CreateForm(TfmDBInfo, fmDBInfo);
+  Application.Run;
+  ReleaseIBase60;
+
+end.
+

+ 86 - 0
TurboBird.lpr.bak

@@ -0,0 +1,86 @@
+{***************************************************************************}
+{  TurboBird: FireBird database administration and management tool          }
+{  Developed by: Motaz Abdel Azeem http://code.sd/                          }
+{  Start development:  5.Dec.2009                                           }
+{  Last updated     : 13.Dec.2011                                           }
+{  License          : GPL for GUI, LGPL for Units                           }
+{***************************************************************************}
+
+program TurboBird;
+
+{$mode objfpc}{$H+}
+
+uses
+  {$IFDEF UNIX}{$IFDEF UseCThreads}
+  cthreads,
+  {$ENDIF}{$ENDIF}
+  Interfaces, // this includes the LCL widgetset
+  Forms, Controls, memdslaz, main, createdb, Reg, QueryWindow,
+  ViewView, ViewTrigger, ViewSProc, ViewGen, NewTable, NewGen, EnterPass, About,
+  CreateTrigger, EditTable, CallProc, EditDataFullRec,
+  UDFInfo, ViewDomain, NewDomain, SysTables, NewConstraint, NewEditField, Calen, Scriptdb,
+  UserPermissions, TableManage, BackupRestore, CreateUser, ChangePass,
+  PermissionManage, SQLHistory, CopyTable, dynlibs, ibase60dyn, dbInfo;
+
+const
+  Version = '0.8.9';
+  VersionDate = '2010 - Dec 2011';
+{$IFDEF Unix}
+  {$DEFINE extdecl:=cdecl}
+    fbclib = 'libfbclient.' + sharedsuffix;
+{$ENDIF}
+{$IFDEF Windows}
+  {$DEFINE extdecl:=stdcall}
+   fbclib = 'fbclient.dll';
+{$ENDIF}
+
+{$R *.res}
+
+var
+  SAbout: TfmAbout;
+  IBaseLibraryHandle : TLibHandle;
+begin
+  Application.Initialize;
+  IBaseLibraryHandle:= LoadLibrary(fbclib);
+  // Check Firebird library existance
+  if (IBaseLibraryHandle = nilhandle) then
+  begin
+     Application.MessageBox('Can not load library: ' + fbclib, 'Error', 0);
+     Exit;
+  end;
+  SAbout:= TfmAbout.Create(nil);
+  SAbout.BorderStyle:= bsNone;
+  SAbout.BitBtn1.Visible:= False;
+  SAbout.Show;
+  Application.ProcessMessages;
+  SAbout.Update;
+
+  Application.CreateForm(TfmMain, fmMain);
+  Application.CreateForm(TfmCreateDB, fmCreateDB);
+  Application.CreateForm(TfmReg, fmReg);
+  Application.CreateForm(TfmNewTable, fmNewTable);
+  Application.CreateForm(TfmNewGen, fmNewGen);
+  Application.CreateForm(TfmEnterPass, fmEnterPass);
+  Application.CreateForm(TfmCreateTrigger, fmCreateTrigger);
+  Application.CreateForm(TfmEditTable, fmEditTable);
+  Application.CreateForm(TfmCallProc, fmCallProc);
+  Application.CreateForm(TfmEditDataFullRec, fmEditDataFullRec);
+  Application.CreateForm(TfmNewDomain, fmNewDomain);
+  Application.CreateForm(TdmSysTables, dmSysTables);
+  Application.CreateForm(TfmNewConstraint, fmNewConstraint);
+  Application.CreateForm(TfmCalen, fmCalen);
+  Application.CreateForm(TfmBackupRestore, fmBackupRestore);
+  Application.CreateForm(TfmCreateUser, fmCreateUser);
+  Application.CreateForm(TfmChangePass, fmChangePass);
+  Application.CreateForm(TfmSQLHistory, fmSQLHistory);
+  Application.CreateForm(TfmCopyTable, fmCopyTable);
+  fmMain.Version:= Version;
+  fmMain.VersionDate:= VersionDate;
+  SAbout.Free;
+  InitialiseIBase60;
+  Application.CreateForm(TfmDBInfo, fmDBInfo);
+  Application.Run;
+  ReleaseIBase60;
+
+end.
+

+ 67 - 0
TurboBird.lpr.motaz

@@ -0,0 +1,67 @@
+{***************************************************************************}
+{  TurboBird: FireBird database administration and management tool          }
+{  Developed by: Motaz Abdel Azeem http://code.sd/                          }
+{  Start development:  5.Dec.2009                                           }
+{  Last updated     : 13.Sep.2011                                           }
+{  License          : GPL for GUI, LGPL for Units                           }
+{***************************************************************************}
+
+program TurboBird;
+
+{$mode objfpc}{$H+}
+
+uses
+  {$IFDEF UNIX}{$IFDEF UseCThreads}
+  cthreads,
+  {$ENDIF}{$ENDIF}
+  Interfaces, // this includes the LCL widgetset
+  Forms, Controls, memdslaz, main, createdb, Reg, QueryWindow,
+  ViewView, ViewTrigger, ViewSProc, ViewGen, NewTable, NewGen, EnterPass, About,
+  CreateTrigger, EditTable, CallProc, EditDataFullRec,
+  UDFInfo, ViewDomain, NewDomain, SysTables, NewConstraint, NewEditField, Calen, Scriptdb,
+  UserPermissions, TableManage, BackupRestore, CreateUser, ChangePass,
+  PermissionManage, SQLHistory, CopyTable;
+
+const
+  Version = '0.8.5';
+  VersionDate = '2010 - Sept 2011';
+
+{$R *.res}
+
+var
+  SAbout: TfmAbout;
+begin
+  Application.Initialize;
+
+  SAbout:= TfmAbout.Create(nil);
+  SAbout.BorderStyle:= bsNone;
+  SAbout.BitBtn1.Visible:= False;
+  SAbout.Show;
+  Application.ProcessMessages;
+  SAbout.Update;
+
+  Application.CreateForm(TfmMain, fmMain);
+  Application.CreateForm(TfmCreateDB, fmCreateDB);
+  Application.CreateForm(TfmReg, fmReg);
+  Application.CreateForm(TfmNewTable, fmNewTable);
+  Application.CreateForm(TfmNewGen, fmNewGen);
+  Application.CreateForm(TfmEnterPass, fmEnterPass);
+  Application.CreateForm(TfmCreateTrigger, fmCreateTrigger);
+  Application.CreateForm(TfmEditTable, fmEditTable);
+  Application.CreateForm(TfmCallProc, fmCallProc);
+  Application.CreateForm(TfmEditDataFullRec, fmEditDataFullRec);
+  Application.CreateForm(TfmNewDomain, fmNewDomain);
+  Application.CreateForm(TdmSysTables, dmSysTables);
+  Application.CreateForm(TfmNewConstraint, fmNewConstraint);
+  Application.CreateForm(TfmCalen, fmCalen);
+  Application.CreateForm(TfmBackupRestore, fmBackupRestore);
+  Application.CreateForm(TfmCreateUser, fmCreateUser);
+  Application.CreateForm(TfmChangePass, fmChangePass);
+  Application.CreateForm(TfmSQLHistory, fmSQLHistory);
+  Application.CreateForm(TfmCopyTable, fmCopyTable);
+  fmMain.Version:= Version;
+  fmMain.VersionDate:= VersionDate;
+  SAbout.Free;
+  Application.Run;
+end.
+

+ 40 - 0
TurboBird.lpr~

@@ -0,0 +1,40 @@
+{***************************************************************************}
+{  FreeBird: FireBird database administration and management tool           }
+{  Developed by: Motaz Abdel Azeem http://motaz.freevar.com                 }
+{  Start development:  5.Dec.2009                                           }
+{  Last updated     : 25.Dec.2009                                           }
+{***************************************************************************}
+
+program FreeBird;
+
+{$mode objfpc}{$H+}
+
+uses
+  {$IFDEF UNIX}{$IFDEF UseCThreads}
+  cthreads,
+  {$ENDIF}{$ENDIF}
+  Interfaces, // this includes the LCL widgetset
+  Forms, main, LResources, SQLDBLaz, createdb, Reg, QueryWindow, TableInfo,
+ViewView, ViewTrigger, ViewSProc, ViewGen, NewTable, NewGen, EnterPass
+  { you can add units after this };
+
+{$IFDEF WINDOWS}{$R FreeBird.rc}{$ENDIF}
+
+begin
+  {$I FreeBird.lrs}
+  Application.Initialize;
+  Application.CreateForm(TfmMain, fmMain);
+  Application.CreateForm(TfmCreateDB, fmCreateDB);
+  Application.CreateForm(TfmReg, fmReg);
+  Application.CreateForm(TfmQueryWindow, fmQueryWindow);
+  Application.CreateForm(TfmTableInfo, fmTableInfo);
+  Application.CreateForm(TfmViewView, fmViewView);
+  Application.CreateForm(TfmViewTrigger, fmViewTrigger);
+  Application.CreateForm(TfmViewSProc, fmViewSProc);
+  Application.CreateForm(TfmViewGen, fmViewGen);
+  Application.CreateForm(TfmNewTable, fmNewTable);
+  Application.CreateForm(TfmNewGen, fmNewGen);
+  Application.CreateForm(TfmEnterPass, fmEnterPass);
+  Application.Run;
+end.
+

+ 162 - 0
TurboBird.lrs

@@ -0,0 +1,162 @@
+LazarusResources.Add('MAINICON','ICO',[
+  #0#0#1#0#1#0'  '#0#0#1#0#24#0#168#12#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1
+  +#0#24#0#0#0#0#0#0#12#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#204#218#255#182
+  +#196#255#164#175#237#164#175#237#174#182#249#180#188#255#181#188#255#183#190
+  +#255#181#188#255#181#188#255#181#189#255#181#190#254#181#190#254#181#190#253
+  +#180#191#251#180#191#253#181#189#255#181#189#255#181#190#254#181#191#251#181
+  +#191#251#181#192#250#181#190#253#181#190#254#184#190#255#183#189#255#184#188
+  +#253#185#191#250#191#196#245#199#207#247#214#224#254#227#238#255#182#191#255
+  +#175#184#248#164#172#239#156#164#231#158#163#232#163#167#238#168#171#245#170
+  +#173#247#168#171#245#168#172#243#168#172#243#168#173#242#168#174#241#168#174
+  +#241#168#174#239#168#174#241#169#173#244#169#173#244#169#175#242#169#175#240
+  +#169#176#239#169#176#239#169#175#240#169#174#243#171#173#244#172#174#245#176
+  +#176#246#181#181#245#185#187#241#192#197#242#206#212#249#216#224#254#183#182
+  +#255#181#180#254#171#169#245#158#156#232#158#153#232#167#162#241#172#166#247
+  +#171#165#246#171#165#246#171#165#246#171#165#246#171#166#245#171#167#243#171
+  +#167#243#171#167#242#171#167#243#172#167#246#172#167#246#172#168#243#172#169
+  +#241#170#169#241#170#169#241#170#169#243#170#167#246#167#161#242#167#161#242
+  +#170#164#243#176#169#242#183#177#242#191#188#244#206#203#252#218#217#255#198
+  +#193#255#186#181#250#168#162#233#160#154#225#166#159#232#177#170#243#182#172
+  +#248#175#168#243#180#170#246#178#171#246#180#171#244#178#171#244#180#172#243
+  +#178#172#243#180#172#242#178#172#243#178#172#243#178#172#243#178#173#242#178
+  +#174#240#178#174#239#176#174#240#176#173#242#176#172#243#180#173#248#180#170
+  +#246#181#170#243#184#175#242#190#182#243#201#195#248#218#213#255#231#227#255
+  +#215#210#255#197#192#243#181#176#227#181#176#227#190#184#237#195#189#242#198
+  +#189#245#195#189#244#198#189#245#196#190#245#198#190#243#196#190#243#198#191
+  +#242#196#191#242#198#191#242#196#191#242#195#190#241#195#190#241#195#191#240
+  +#194#192#238#194#192#238#194#192#238#194#191#240#194#191#241#199#193#248#196
+  +#190#245#196#188#241#198#192#241#203#196#239#213#206#243#225#219#250#235#230
+  +#255#250#246#255#246#242#255#243#239#255#247#243#255#249#244#255#243#241#255
+  +#246#241#255#248#245#255#247#244#255#247#244#255#247#245#255#247#245#255#249
+  +#245#255#249#245#255#249#245#255#247#245#255#246#244#255#246#245#255#246#245
+  +#255#244#246#255#244#246#255#244#245#255#244#245#255#244#244#255#241#240#255
+  +#242#239#255#243#241#255#247#243#255#248#245#255#248#246#255#253#250#255#253
+  +#252#255#249#249#255#251#251#255#251#254#255#251#254#255#250#253#255#247#251
+  +#255#248#250#255#250#253#255#249#252#255#249#252#255#249#253#255#249#253#255
+  +#250#253#255#250#253#255#250#253#255#250#253#255#250#253#255#249#254#255#249
+  +#254#255#247#255#255#247#255#255#247#254#255#247#254#255#247#253#255#248#254
+  +#255#249#252#255#250#254#255#251#254#255#251#255#255#252#255#253#253#255#249
+  +#254#255#248#254#255#251#255#255#251#253#255#251#251#255#249#249#255#249#251
+  +#255#251#251#255#252#248#255#250#250#255#252#250#255#252#250#255#251#251#255
+  +#251#251#255#251#251#255#251#253#255#251#251#255#251#251#255#249#251#255#248
+  +#250#255#248#250#255#249#250#255#249#250#255#251#248#255#251#248#255#251#250
+  +#255#252#249#255#251#250#255#250#251#255#251#253#255#249#251#255#246#252#255
+  +#246#253#255#245#255#255#254#250#251#247#253#255#252#253#255#252#251#255#252
+  +#248#255#250#250#255#252#247#255#251#248#255#252#243#253#247#248#255#252#246
+  +#253#248#248#255#250#250#255#252#248#254#249#251#255#252#251#255#249#250#255
+  +#249#250#255#249#245#253#246#248#255#251#248#255#252#242#252#246#248#255#252
+  +#243#254#246#248#255#251#249#255#250#248#255#249#251#255#251#248#255#248#251
+  +#255#251#246#254#244#255#255#255#255#255#254#248#251#249#248#253#251#250#255
+  +#254'%/)/93'#28'("%1+'#186#198#192#246#255#252#244#253#250#248#255#254'$+('
+  +#26'!'#30')0-'#250#255#251#244#252#245'%,''&0*'#30'''$+41'#248#255#254#245
+  +#255#249#172#182#176'*5-'#151#159#152'$+&'#242#249#244#251#255#254#251#255
+  +#254#251#255#254#251#250#252#252#252#252#251#253#253#251#255#255#247#253#252
+  +#242#251#248#30')&'#244#255#254#186#200#196#10#24#20#244#255#254#243#254#252
+  +#243#254#252#248#255#255'&.-'#250#255#255#243#250#245#250#255#252#248#255#254
+  +#28'$#'#248#255#255#241#251#251#236#246#246#245#255#254'3?9'#194#206#200#200
+  +#210#204')3-'#247#255#254#241#246#247#250#255#255#245#250#253#254#254#254#255
+  +#255#255#253#255#255#235#240#239#250#255#254#246#255#254'&2,'#242#255#250#203
+  +#219#212'DTM'#244#255#254#244#255#254#245#255#254#242#253#251'''/.'#249#255
+  +#254#247#254#249#250#255#252#244#250#249'$,,'#187#194#197#246#255#255#246#255
+  +#255#246#255#254'5A;'#191#204#196#201#212#204'#.&'#248#255#254#248#255#255
+  +#250#254#255#250#254#255#252#250#249#255#255#254#247#251#246#251#255#252#250
+  +#255#251#233#247#236'#1&'#28',!#4)'#191#208#197#237#253#242#239#254#246#246
+  +#255#252#27'%'#31'*1.'#243#250#245#251#255#251#242#249#242'(-+-32'#143#149
+  +#148'QYX'#248#255#254#239#250#242#156#168#156'=J<'#153#163#150'&0$'#245#253
+  ,#246#246#253#250#247#251#252#251#254#255#255#255#254#243#242#238#255#255#252
+  +#253#255#251#244#253#243#248#255#249#29'+ '#244#255#248#152#168#157'@QF'#244
+  +#255#249#242#255#245#248#255#251#248#255#252#250#255#254#248#254#249#247#251
+  +#245#253#255#252#252#255#253#242#247#246#243#247#248#248#254#253#250#255#254
+  +#248#255#251#250#255#248#235#246#230#250#255#245#28'&'#25#250#255#249#251#255
+  +#254#251#254#255#250#253#255#254#248#249#255#254#255#255#255#255#249#250#248
+  +#251#255#252'(3+'#27'( '#25')'#30'#2*'#172#187#179#246#255#251#246#255#252
+  +#238#247#244#250#255#254#28'! '#251#255#255#255#255#254#245#246#244#255#254
+  +#255#253#254#255#253#253#255#251#254#255#240#244#245#250#255#254#249#255#247
+  +#251#255#247'$- (0%'#251#255#252#253#255#255#250#249#255#248#247#255#255#252
+  +#254#255#254#255#253#251#251#255#255#255#253#255#254#242#249#246#250#255#252
+  +#248#255#252#247#255#251#248#255#252#248#255#252#250#255#254#250#255#254#248
+  +#253#252#251#255#255#248#250#250#255#254#253#255#255#255#255#251#255#255#253
+  +#255#247#244#253#254#252#255#253#254#255#249#251#251#251#255#250#250#255#246
+  +#253#255#249#253#255#251#246#247#245#255#254#255#255#252#255#255#249#255#255
+  +#255#255#251#249#249#255#255#255#255#255#255#250#250#250#249#251#251#253#255
+  +#255#249#251#251#252#255#253#253#255#254#253#255#254#253#255#254#238#241#239
+  +#253#255#252#248#252#247#255#255#252#255#254#253#255#253#254#255#253#255#255
+  +#254#255#251#245#250#255#253#255#255#254#255#253#248#250#255#254#255#255#254
+  +#255#254#249#250#255#254#255#255#252#254#255#253#255#254#247#254#255#251#255
+  +#255#255#254#253#255#254#250#251#249#245#247#247#253#253#253#253#255#255#255
+  +#254#255#253#255#255#249#248#250#253#255#255#242#242#242#249#251#251#255#255
+  +#254#252#255#253#255#255#252#246#247#245#255#253#253#255#254#255#255#251#253
+  +#255#253#255#255#254#255#245#240#242#255#254#255#255#254#255#255#252#254#255
+  +#252#254#255#253#255#254#248#253#255#253#255#255#252#255#255#252#255#255#253
+  +#255#253#255#252#251#255#252#253#255#252#249#254#252#253#255#254#238#243#242
+  +#243#245#246#249#253#254#251#253#254#251#255#255#251#253#254#251#255#255#247
+  +#249#250#248#252#253#253#255#255#253#255#255#247#249#250#251#253#254#253#254
+  +#255#250#251#255#248#249#253#253#254#255#247#248#252#253#254#255#253#254#255
+  +#241#242#246#253#254#255#245#246#250#252#253#255#253#254#255#241#242#246#253
+  +#254#255#248#254#249#248#254#249#251#255#254#251#255#254#251#255#255#250#254
+  +#255#251#254#255#251#254#255#251#254#255#251#253#255#245#247#255#251#253#255
+  +#251#253#255#251#253#255#245#247#255#251#253#255#250#253#255#249#252#255#249
+  +#252#255#250#253#255#246#249#255#250#254#255#250#253#255#247#251#255#244#248
+  +#253#250#254#255#243#247#252#250#254#255#250#254#255#250#254#255#249#253#255
+  +#250#254#255#250#255#254#233#239#238#250#255#255'jopafiimr'#250#252#255#248
+  +#250#255#248#249#255#210#211#225'yy'#137#190#190#206'mm}ddt'#250#250#255'ffv'
+  +'^aobhuciv'#241#247#255'agtdju'#183#189#202'lr}'#194#200#211#246#252#255#244
+  +#250#255#199#205#216'ov'#127't{'#132#197#204#213#236#243#252#242#247#250#250
+  +#255#255#241#245#250#250#253#255'dfp'#250#252#255#250#251#255#248#248#255#250
+  +#250#255'^]q'#206#205#225#223#222#242'bau'#250#249#255#250#249#255#250#249
+  +#255'`dw'#244#250#255#246#250#255#244#250#255#246#250#255'el}'#196#200#218
+  +#208#215#232'in}'#244#251#255#246#251#255'u}'#138#209#215#228#211#219#232'y'
+  +#127#140#244#253#255#251#252#255#247#247#255#251#251#255#251#251#255'po'#127
+  +#246#244#255#245#243#255#251#249#255#251#248#255'mj'#128#249#246#255#249#246
+  +#255'jg}'#246#243#255#251#248#255#247#245#255'kk'#131#212#213#239#244#244#255
+  +#246#248#255#238#238#255'fh'#128#235#236#255#217#220#241'st'#136#240#244#255
+  +#248#250#255'ty'#136#206#209#224#215#220#235'ps'#130#245#251#255#252#249#255
+  +#250#250#255#253#250#255#251#250#255'gcv'#251#249#255#245#241#255#251#249#255
+  +'favlj~'#251#246#255'ki|mi|'#251#250#255#246#243#255'nl'#127'lj'#128#167#164
+  +#189#141#139#161#250#248#255#250#248#255'dbx'#179#178#198'nm'#129#191#191#209
+  +#250#250#255#245#245#255#203#204#218'xy'#135'wx'#134#205#206#220#250#252#255
+  +#255#251#255#253#251#255'gco'#253#250#255'rm|'#241#238#253'xs'#130#248#246
+  +#255#254#250#255#252#250#255#255#251#255#252#251#255#254#252#255#252#252#255
+  +#255#254#255#253#253#255#248#245#255#253#250#255#252#249#255#252#249#255#253
+  +#250#255'jgv'#251#249#255#253#251#255#253#252#255#253#252#255#253#252#255#253
+  +#252#255#253#252#255#253#253#255#253#253#255#253#253#255#246#242#253#253#252
+  +#255'soz^]gfbmzy'#131'daj'#253#252#255#255#253#255#253#254#255#255#254#255
+  +#253#255#255#255#255#254#253#255#252#255#255#252#255#255#254#255#253#255#255
+  +#251#255#251#247#255#255#252#255'jgppnt'#255#253#255#255#253#255#255#254#255
+  +#255#254#255#255#254#255#255#254#255#255#254#255#255#254#255#255#255#255#255
+  +#255#255#253#253#255#247#250#255#253#253#255#251#254#255#253#253#255#235#238
+  +#243#253#254#255#251#254#255#252#254#255#250#255#254#252#255#253#250#255#251
+  +#252#255#248#250#255#247#252#255#247#252#255#248#249#249#249#255#254#255#255
+  ,#254#255#255#254#255#255#254#255#244#243#245#255#254#255#247#247#247#255#255
+  +#255#255#255#255#255#255#254#255#255#254#255#255#254#255#255#254#255#255#252
+  +#255#255#252#246#248#255#250#252#255#241#243#253#250#252#255#250#252#255#250
+  +#252#255#250#252#255#244#247#255#250#253#255#250#254#255#249#254#255#249#254
+  +#255#250#255#255#250#255#254#250#255#252#250#255#255#251#254#255#243#245#253
+  +#250#249#255#251#254#255#253#252#255#250#253#255#253#253#255#251#254#255#253
+  +#253#255#251#254#255#253#254#255#251#254#255#253#254#255#251#254#255#253#255
+  +#255#251#255#255#244#250#255#244#250#255#241#247#255#244#250#255#232#237#255
+  +#236#241#255#244#249#255#239#243#255#244#248#255#243#248#255#241#246#255#241
+  +#247#255#243#250#255#244#251#255#244#251#255#246#250#255#244#248#255#246#249
+  +#255#242#243#255#246#250#255#243#244#255#246#250#255#240#241#255#242#246#255
+  +#248#249#255#245#249#255#246#247#255#245#249#255#247#248#255#245#249#255#246
+  +#247#255#242#246#255#208#213#244#222#227#255#222#227#255#223#227#255#228#232
+  +#255#221#224#255#223#225#255#227#229#255#205#207#248#201#202#246#198#199#243
+  +#198#200#241#201#203#244#204#206#247#206#208#249#206#208#249#198#200#240#200
+  +#203#241#214#214#254#208#211#249#205#205#245#200#203#241#220#220#255#203#205
+  +#245#208#208#248#205#207#247#206#206#246#205#207#247#208#208#248#205#207#247
+  +#204#204#244#199#201#241#168#172#221#175#179#228#171#174#225#171#173#227#177
+  +#178#234#180#181#239#169#168#230#181#180#244#165#163#229#161#158#227#156#153
+  +#222#156#152#223#160#156#227#165#161#232#168#164#235#169#166#235#183#182#246
+  +#168#169#229#164#163#225#174#175#235#172#171#233#167#168#228#172#171#233#166
+  +#167#228#170#169#231#168#169#230#169#168#230#169#170#231#171#170#232#168#169
+  +#230#164#163#227#158#158#222#172#174#232#173#175#233#191#192#253#176#177#238
+  +#186#185#251#183#182#250#180#177#249#189#185#255#183#178#255#178#173#252#172
+  +#166#248#172#166#248#176#169#254#182#175#255#186#179#255#188#182#255#181#179
+  +#255#180#179#251#189#188#255#178#177#249#191#190#255#180#179#251#186#185#255
+  +#187#186#255#185#184#255#184#183#255#184#183#255#186#185#255#187#186#255#184
+  +#183#255#178#176#252#172#170#246#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+]);
+

+ 17 - 0
TurboBird.manifest

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+ <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="CompanyName.ProductName.YourApp" type="win32"/>
+ <description>Your application description here.</description>
+ <dependency>
+  <dependentAssembly>
+   <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
+  </dependentAssembly>
+ </dependency>
+ <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
+  <security>
+   <requestedPrivileges>
+    <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
+   </requestedPrivileges>
+  </security>
+ </trustInfo>
+</assembly>

BIN
TurboBird.o


BIN
TurboBird.or


BIN
TurboBird.png


+ 33 - 0
TurboBird.rc

@@ -0,0 +1,33 @@
+1 VERSIONINFO
+FILEVERSION 0,5,1,1026
+PRODUCTVERSION 0,5,0,1
+{
+ BLOCK "StringFileInfo"
+ {
+  BLOCK "040904E4"
+  {
+   VALUE "Comments", "\000"
+   VALUE "CompanyName", "\000"
+   VALUE "FileDescription", "\000"
+   VALUE "FileVersion", "0.5.1.1026\000"
+   VALUE "InternalName", "\000"
+   VALUE "LegalCopyright", "\000"
+   VALUE "LegalTrademarks", "\000"
+   VALUE "OriginalFilename", "\000"
+   VALUE "ProductName", "\000"
+   VALUE "ProductVersion", "0.5.0.1\000"
+  }
+ }
+ BLOCK "VarFileInfo"
+ {
+  VALUE "Translation", 0x0409, 0x04E4
+ }
+}
+
+#define RT_MANIFEST  24
+#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
+#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2
+#define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID 3
+
+CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "TurboBird.manifest"
+MAINICON ICON "TurboBird.ico"

BIN
TurboBird.reg


BIN
TurboBird.res


BIN
TurboBird.res.bak


BIN
TurboBird.xcf


+ 235 - 0
about.lfm

@@ -0,0 +1,235 @@
+object fmAbout: TfmAbout
+  Left = 740
+  Height = 366
+  Top = 388
+  Width = 400
+  ActiveControl = BitBtn1
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'About Turbo Bird'
+  ClientHeight = 366
+  ClientWidth = 400
+  Color = clCream
+  OnClose = FormClose
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object Label2: TLabel
+    Left = 120
+    Height = 20
+    Top = 96
+    Width = 139
+    Caption = 'FireBird Admin Tool'
+    Font.Color = 5987170
+    Font.Height = -16
+    Font.Style = [fsItalic]
+    ParentColor = False
+    ParentFont = False
+  end
+  object laVersion: TLabel
+    Left = 137
+    Height = 18
+    Top = 120
+    Width = 121
+    Caption = 'Beta Version 0.5.0'
+    Font.Color = 7303023
+    ParentColor = False
+    ParentFont = False
+  end
+  object Label4: TLabel
+    Left = 88
+    Height = 18
+    Top = 168
+    Width = 230
+    Caption = 'Developed By Motaz Abdel Azeem'
+    ParentColor = False
+  end
+  object laWebSite: TLabel
+    Cursor = crHandPoint
+    Left = 144
+    Height = 18
+    Top = 200
+    Width = 105
+    Caption = 'http://code.sd/'
+    Font.Color = 7303023
+    ParentColor = False
+    ParentFont = False
+    OnClick = laWebSiteClick
+  end
+  object Label6: TLabel
+    Cursor = crHandPoint
+    Left = 88
+    Height = 18
+    Top = 228
+    Width = 234
+    Caption = 'Written using Free Pascal / Lazarus'
+    Font.Color = 7303023
+    ParentColor = False
+    ParentFont = False
+    OnClick = Label6Click
+  end
+  object laVersionDate: TLabel
+    Left = 144
+    Height = 18
+    Top = 144
+    Width = 101
+    Caption = '2010 - Jan 2011'
+    Font.Color = 6908265
+    ParentColor = False
+    ParentFont = False
+  end
+  object BitBtn1: TBitBtn
+    Left = 160
+    Height = 30
+    Top = 320
+    Width = 75
+    Caption = '&OK'
+    Color = 16249563
+    Default = True
+    Kind = bkOK
+    ModalResult = 1
+    OnClick = BitBtn1Click
+    TabOrder = 0
+  end
+  object Image2: TImage
+    Left = 96
+    Height = 61
+    Top = 24
+    Width = 201
+    Picture.Data = {
+      0A544A706567496D616765DA0D0000FFD8FFE000104A46494600010101004800
+      480000FFFE00134372656174656420776974682047494D50FFDB004300050304
+      0404030504040405050506070C08070707070F0B0B090C110F1212110F111113
+      161C1713141A1511111821181A1D1D1F1F1F13172224221E241C1E1F1EFFDB00
+      43010505050706070E08080E1E1411141E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
+      1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
+      1E1EFFC0001108003C00C803012200021101031101FFC4001C00000104030100
+      00000000000000000000070004050602030801FFC40045100001030302030603
+      0209090900000000010203040005110612072131081322415161143271158118
+      233742525675A1B316336272749194B2D236536473B1B4C1C3D3FFC4001B0100
+      0203010101000000000000000000000002030405010607FFC400261100020202
+      02020104030100000000000000010203041105211231140613324115225152FF
+      DA000C03010002110311003F00D6A8EA52BC2334F225ADF73010DA893E58A385
+      AB852CB4A0B90E026AD96BD196A8583DD256A1ED5F46C9FAA71E0B50ECC7860C
+      DFB02BA4B4B5D14E8098EBDA7D4511EDFA66436DA7BD490451123448F1D3B5A6
+      9291EC2B35B4857515E57379CB7265BD689DE0475ECA4A2CE51E46B67D90B50C
+      041AB7FC3379ACD0DA53D05673CB9B1171FDF650656967A40C16CD3091A116E8
+      DBDD9C5142954F0E56F87E2CB31C3AD0235F0E943986891E95AD5A036F569546
+      0A581E82A75CEE57ED8DF16009ADFA35519DDC96943DF1561896271B48C24E2A
+      EF81E82BDC0F41505DC9DB77E424B0E122A62DEEA060A4D6A7A03A464249AB79
+      420F548AF03481F9A2AAAC8927B20FE397FA0EEE3056525252A03E955897A7C3
+      8E15B80E7CA8D0EC561CF9DB49FBA9B2ED105479B42B4B1B9574AE896386A2BA
+      0516CB52585743CFCAA7E2C409481CEAEBF62C1CE7BBE7495678C078062B97F2
+      4AD7B22B709BED157699C0ACD4D72A9E55B5293F2D7820367AA4D5477A6F6537
+      8B3D955931B727150571B729CDC7DB9512C5AE3ABAA6B216584AE6A6EACD3C82
+      A9ECB1561BFD8125E9B528A89CF8AA3E669A79B1E11B80E747EFB0ADFF00EE85
+      786C36F2305A18AD38FD44E2CB2F0C0043B7B88573410452A3A48D296B715B92
+      D6D34AA57CFD52EDA17E2C913F4DAED3136FB54B9EA417131985BC520E0A8252
+      4E3F7539AF14029252A00823041F3AF20681CF1F85359FF5467FF8B47FA697E1
+      4D67FD519FFE2D1FE9ABF76898305AE0BEA471A871DB5A586F0A4B49047E351E
+      78AA9F6358712470BAE0B7E2B0EA85E5D00ADB0A38EE59E5CE800B9A1B5035AA
+      B495B750B319719B9CCF7A9696A0A28E646091D7A54D5023835C43D517FE34EA
+      0D297196C2AD30132FE1D96E3211B3BB7D284F348C9E44D7BDA3F88FAB345EAE
+      B15BB4FCE6A3C798C6F792B8E870A8F79B7AA81C72A003B560FB81A656E91908
+      49563D70282BDA8F885AA7422F4E8D3735A8C26893DFEF610E6ED9DD6DF981C7
+      CEAAF7877ABB89BABB55AAE770B3BD6DD18F4074C7DEC2125D3B7C0E289F1E55
+      CCF2C279F9F520165E0CF15E17129EB9B512CF22DE6DE9694A2EBC17BF79574C
+      018C6DFDF447AE1FE01DEB5D439B75B270FA034FDDAE48694B90E8494C669B2A
+      CABC5E1E656064E7D30491453D07C59D79A73890CE89E2934DAD52DC434893DD
+      368536A5F26D40B60214D93C89C647AF222803A36950678FFC5CB868FB943D2B
+      A562372AFF0031295152D0561A0B3B5094A47CCB51E80F4E5C8E6A917ED67DA0
+      387F1E2DFF0056221CEB638E252E34A658296C9FCD516805249F239233EBD080
+      74ED37B94910ADD2662905618656E948382768271FBAA2F41EA683AC3495BF51
+      DB8292C4C6F7776A39536B04A5483EE1408F7C669DEA8FF66AE9FD8DEFF21A00
+      047E14D67FD519FF00E2D1FE9A97D2DDA57485D2E6D42BADB67D9D2EA825321C
+      525C6924FE9918207BE0FBE283BD9C35E695D0F2EF6E6A865E75331B652C7771
+      C3B8292BDD9C9E5F30A92E366AAD33C53BD582CDA16C6A4DCD4F29B5487596E3
+      9737636A339E60609C9E9E5D4D0074771735FC5E1EE978F7E9101DB8B4FCB446
+      4A1A7024F890B5056483CBC1FBEA6F455F5BD4FA52DBA8198EB8CDCF612F25A5
+      2B71403E44F9D0C38DF7ABDF0EB82FA79BB64B8EECE8AF4580F3CF309752E04C
+      75852B0B079928073D6B7DF75B5FEDFD9963EB3872196AF2624673BC0C23602B
+      790856118DBD147CA800C0466B12849F2AE65D19C4EE30EB3816966C16D5BE86
+      250176B9222B602C1733DDA770DA006F19C0DDCFCBCE778C3C59D58AE202387D
+      C36610BB9A561B7A47769716A771B8A1217E00948F994A1E47A632438D2610F8
+      C5C4587C36B541B84AB5BD704CB7CB210DBA105242739E60D5B74DDCD17AD3B6
+      DBCB6D29944F88D494B6A39280B405004F9E335C7DC79BD7127EC9B6E9AE23C2
+      63E25B78CA8939A0801E4ED29524ECF092091D0023CC7306BABB85FF00934D2F
+      FB1A27F05141DD68B152A54A80152A54A80152A848DAA6CEF2F6092949F7A976
+      2432FA7734E2563D8D2A927E992D94D95FE7168A1768EFC8A6A5FF0090DFF151
+      550EC5DF92BB87EDA77F82CD1635AE9D85AB74BCED3B7176435126A021C5C750
+      4B800505722A047503C8D46F0C7425A387B607ACB65933A4477A52A4A952D685
+      2C29494A48052948C6103CBD6988800700E4C787DA7754B529E432B7D77065A0
+      B5637AFE252ADA3DF0951C7B569ED7B71832F899608916534F3D123A53212850
+      3DDA94E921271D0E39E3DC7AD137893D9FF4DEAFD46FDF98B94BB4CA94ADF252
+      D212E36E2BCD401C10A3E7CF07AE3AD694766DD0698F051F1B7B43D17C4B79B7
+      9B05F56739502D9E98C0031CBDF268029DDB93F9CD21F49BFF00A2BA1E1A528D
+      2ECA109094A6124003A01B2AAFC55E1869FE241B69BE4CB9C7FB3FBD0D7C1BAD
+      A77779B33BB72159F906318F3AB9A23B4DC14C30A577696BBB049E78C63FBEB8
+      DA5EC0E56EC5975B6C3D5D7AB6CA79A6A64E8AD98BBC8057B1477247A9F1038F
+      E89F4AD9DA7E4C6BFF001B34ED9ACAE2245C5843319D2D1C94BAA7894A0E3CC6
+      73EDBAAF4F766BD049B7488EC5D2F624B852A6A43AF36B2D119E4004241073CF
+      3E830473CCAF0C3835A4F405D85ED73645D6E680430EC8484A19C8C12948FCEC
+      123249F6C546AFADBD2923BE2FFC063C537D9D3FDADEDD78BD90D5BD6F43792E
+      39F2A11DD86F7FD12B4A8FDD455ED437AB4C5E0DDCE34890CADDB8F74DC346E0
+      4BAA0E21794FB0009CFD3D69CF15F4AE95D7D09A8F794388911F3F0F2E3A825D
+      6F3D47304149E5C88FEEA18DA7813A4A3CF6DEBA5F6E5718CD9E51C252D050FD
+      12A1938FA62A7F1248D164BD22FDD93A3C98BC1C86A90952532253EEB215FA1B
+      B6FF00D524D12B531CE9ABA7F637BFC86A0A15F6D76E84CC2871D0CC76101B69
+      A6C61284818000F402B64BD456E9705F87237A1B7DA534A293CC050C1C7BF3A5
+      94A2BF64BF06FF00F9673176618BA1A4CBBF7F2D458CA12DB1F0BF69B8DA4672
+      BDDB7791FD1CE3DAA4FB48C4E17C5B15BDDD1AE599178F8A1916B792A1DCED56
+      4AF61C03BB6609E7D7DEAD28E0370C9C1F8BBDEA5FBE4B1FFC6A56C5C0CE1CDB
+      A6225A8DC6E9B08525A9B212519F7084A73F43CA9A0D49742FC5B57B8954E354
+      DB9DC7B32E91997752D735D97194E2D7F32FF12F6D51F729C1FBEA6B56A8FE06
+      B1C7FC0C3FFB86E88BAFB47D935DE9D62C777913234562426420C35A10ADC94A
+      9207892A18C2CF97A56172D15629BC3546807654F16C434DB41D4B88EFF0DAD2
+      B1CF6EDCE5233E1A49DF4C64D39238F1E69FA217B2B2FBBE0D5BF6800AA44827
+      1E67BC23FF0002863C39991F4F76B1BE26F8E2585CB97310C38E9C00A755BDBE
+      67A6E49C0FEB01477D03A76D7A374D31A7ED6FCA7A2B2B5AD2B92B4A964A9454
+      7252903A9F4A80E28F08F4DF1064377090FBF6EB9A1011F14C007BC48E81693D
+      71E4720FDD8A7F3838A69A12554A3ED140EDB176B6BB1B4FD9D0F36E5C5A75D7
+      D6849054D365200CFA6E3D3FAB474E17FE4D34BFEC689FC1450A63766ED0ED5A
+      4469D75BCBF28B9BD529A71B6C918C6D092950039E7D73E7E545AB0351ECD678
+      1678AE38B8F0633719A53841594A12120920019C0F202914A0FD34278B27ABC5
+      29291951005365CD690CA9C5A8000553750EA86805252E647B1A5B26A0BB2C62
+      E2D9932D45169933D2A514B6B03EFA54311A84AD5C8E07B1A555BE4266D2E1E7
+      15A2A0E3EA07214723CF352FA7F554BB7BA12979440F226AB928909C0A6AD13D
+      F0ACD53717D1ED678B5DD06A6B68385A75D30FB20BE8C2875A7FFCAA8AF1C217
+      B683311C5849C1A908EF3891C946AE472A7AECF3977058E9B71E82AB9A898693
+      B8BE3E95837A8E33E7C521293F5A144A90F295CD67953561E70C81959EB43CA9
+      208F05538EF61A9AB925432D3DBAB25CB71CE6566AB36027E1107D454A296A03
+      91AF9F72FCA64655EEB52D4518F6E3C6A934874B92A49E4A39A6139D5AD24951
+      A449279D6B91CDBAAF896D98F35A615C137B21669583E126A3DE7D58CE704548
+      CA3CD550D23E6AFA6E15DE547933731A98BF662B7881BB3CE99BB216A5632706
+      A40B28EEF2464E2A39E002B90AAD6E4F93D245F878EF5A1E5B1E58575E62ACB1
+      532569050719AA8DBD47BECFBD5CEDEB5069383E55979799655F8B33F3E7F6FB
+      487F10484B785609A4EA9F4F328CFD2B2656AEB9A701448E7CEBCD5DC858EC6D
+      98DF7FBDB43144A505F88287D69FB134A46473AC1C4A5439A45685A425271CB9
+      53BE4EC6B4BA1F70B57A36C9BAE09C8A66BBBEC19DB51521C5174F3F3AD0A254
+      0E6BD3E1C5FDA52DF6595815B42D497D92F47EE9B25093E954A93296E92959E7
+      539751E0AADC8FE70FD6AF572766D48D7C0A21547FAA326DC524E41A558239D2
+      A89AD3D1A8B4CFFFD9
+    }
+  end
+  object Label5: TLabel
+    Left = 136
+    Height = 18
+    Top = 256
+    Width = 131
+    Caption = 'License: GPL / LGPL'
+    Font.Color = 3487029
+    ParentColor = False
+    ParentFont = False
+  end
+  object laTarget: TLabel
+    Left = 136
+    Height = 18
+    Top = 288
+    Width = 127
+    Alignment = taCenter
+    AutoSize = False
+    Caption = 'Target OS'
+    Font.Color = 3487029
+    ParentColor = False
+    ParentFont = False
+  end
+end

+ 180 - 0
about.lrs

@@ -0,0 +1,180 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmAbout','FORMDATA',[
+  'TPF0'#8'TfmAbout'#7'fmAbout'#4'Left'#3#228#2#6'Height'#3'n'#1#3'Top'#3#132#1
+  +#5'Width'#3#144#1#13'ActiveControl'#7#7'BitBtn1'#11'BorderIcons'#11#0#11'Bor'
+  +'derStyle'#7#8'bsDialog'#7'Caption'#6#16'About Turbo Bird'#12'ClientHeight'#3
+  +'n'#1#11'ClientWidth'#3#144#1#5'Color'#7#7'clCream'#7'OnClose'#7#9'FormClose'
+  +#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#6'TLabel'#6'L'
+  +'abel2'#4'Left'#2'x'#6'Height'#2#20#3'Top'#2'`'#5'Width'#3#139#0#7'Caption'#6
+  +#19'FireBird Admin Tool'#10'Font.Color'#4'b[['#0#11'Font.Height'#2#240#10'Fo'
+  +'nt.Style'#11#8'fsItalic'#0#11'ParentColor'#8#10'ParentFont'#8#0#0#6'TLabel'
+  +#9'laVersion'#4'Left'#3#137#0#6'Height'#2#18#3'Top'#2'x'#5'Width'#2'y'#7'Cap'
+  +'tion'#6#18'Beta Version 0.5.0'#10'Font.Color'#4'ooo'#0#11'ParentColor'#8#10
+  +'ParentFont'#8#0#0#6'TLabel'#6'Label4'#4'Left'#2'X'#6'Height'#2#18#3'Top'#3
+  +#168#0#5'Width'#3#230#0#7'Caption'#6#30'Developed By Motaz Abdel Azeem'#11'P'
+  +'arentColor'#8#0#0#6'TLabel'#9'laWebSite'#6'Cursor'#7#11'crHandPoint'#4'Left'
+  +#3#144#0#6'Height'#2#18#3'Top'#3#200#0#5'Width'#2'i'#7'Caption'#6#15'http://'
+  +'code.sd/'#10'Font.Color'#4'ooo'#0#11'ParentColor'#8#10'ParentFont'#8#7'OnCl'
+  +'ick'#7#14'laWebSiteClick'#0#0#6'TLabel'#6'Label6'#6'Cursor'#7#11'crHandPoin'
+  +'t'#4'Left'#2'X'#6'Height'#2#18#3'Top'#3#228#0#5'Width'#3#234#0#7'Caption'#6
+  +'#Written using Free Pascal / Lazarus'#10'Font.Color'#4'ooo'#0#11'ParentColo'
+  +'r'#8#10'ParentFont'#8#7'OnClick'#7#11'Label6Click'#0#0#6'TLabel'#13'laVersi'
+  +'onDate'#4'Left'#3#144#0#6'Height'#2#18#3'Top'#3#144#0#5'Width'#2'e'#7'Capti'
+  +'on'#6#15'2010 - Jan 2011'#10'Font.Color'#4'iii'#0#11'ParentColor'#8#10'Pare'
+  +'ntFont'#8#0#0#7'TBitBtn'#7'BitBtn1'#4'Left'#3#160#0#6'Height'#2#30#3'Top'#3
+  +'@'#1#5'Width'#2'K'#7'Caption'#6#3'&OK'#5'Color'#4#219#242#247#0#7'Default'#9
+  +#4'Kind'#7#4'bkOK'#11'ModalResult'#2#1#7'OnClick'#7#12'BitBtn1Click'#8'TabOr'
+  +'der'#2#0#0#0#6'TImage'#6'Image2'#4'Left'#2'`'#6'Height'#2'='#3'Top'#2#24#5
+  +'Width'#3#201#0#12'Picture.Data'#10#233#13#0#0#10'TJpegImage'#218#13#0#0#255
+  +#216#255#224#0#16'JFIF'#0#1#1#1#0'H'#0'H'#0#0#255#254#0#19'Created with GIMP'
+  +#255#219#0'C'#0#5#3#4#4#4#3#5#4#4#4#5#5#5#6#7#12#8#7#7#7#7#15#11#11#9#12#17
+  +#15#18#18#17#15#17#17#19#22#28#23#19#20#26#21#17#17#24'!'#24#26#29#29#31#31
+  +#31#19#23'"$"'#30'$'#28#30#31#30#255#219#0'C'#1#5#5#5#7#6#7#14#8#8#14#30#20
+  +#17#20#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30
+  +#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30#30
+  +#30#30#255#192#0#17#8#0'<'#0#200#3#1'"'#0#2#17#1#3#17#1#255#196#0#28#0#0#1#4
+  +#3#1#0#0#0#0#0#0#0#0#0#0#0#7#0#4#5#6#2#3#8#1#255#196#0'E'#16#0#1#3#3#2#3#6#3
+  +#2#9#9#9#0#0#0#0#1#2#3#4#0#5#17#6#18#7'!1'#8#19'"AQa'#20'2q'#21#129#24'#7BRV'
+  +'u'#161#179#22'3brt'#145#148#178#210'6Sds'#177#180#193#195#211#255#196#0#27#1
+  +#0#2#3#1#1#1#0#0#0#0#0#0#0#0#0#0#0#2#3#4#5#1#6#7#255#196#0'&'#17#0#2#2#2#2#2
+  +#1#4#3#1#0#0#0#0#0#0#0#1#2#3#4#17#5'!'#18'1'#20#6#19'2A'#21'"QR'#255#218#0#12
+  +#3#1#0#2#17#3#17#0'?'#0#214#168#234'R'#188'#4'#242'%'#173#247'0'#16#218#137
+  +'>X'#163#133#171#133','#180#160#185#14#2'j'#217'k'#209#150#168'X='#210'V'#161
+  +#237'_F'#201#250#167#30#11'P'#236#199#134#12#223#176'+'#164#180#181#209'N'
+  +#128#152#235#218'}E'#17#237#250'fCm'#167#189'I'#4'Q'#18'4H'#241#211#181#166
+  +#146#145#236'+5'#180#133'u'#21#229'sy'#203're'#189'h'#157#224'G^'#202'J,'#229
+  +#30'F'#182'}'#144#181#12#4#26#183#252'3y'#172#208#218'S'#208'Vs'#203#155#17
+  +'q'#253#246'Peig'#164#12#22#205'0'#145#161#22#232#219#221#156'QB'#149'O'#14
+  +'V'#248'~,'#179#28':'#208'#_'#14#148'9'#134#137#30#149#173'Z'#3'oV'#149'F'#10
+  +'X'#30#130#167'\'#238'W'#237#141#241'`'#9#173#250'5Q'#157#220#150#148'='#241
+  +'V'#24#150''''#27'H'#194'N*'#239#129#232'+'#220#15'AP]'#201#219'w'#228'$'#176
+  +#225'"'#166'-'#238#160'`'#164#214#167#160':FBI'#171'yB'#15'T'#138#240'4'#129
+  +#249#162#170#172#137''''#178#15#227#151#250#14#238'0VRRR'#160'>'#149'X'#151
+  +#167#195#142#21#184#14'|'#168#208#236'V'#28#249#219'I'#251#169#178#237#16'Ty'
+  +#180'+K'#27#149't'#174#137'c'#134#162#186#5#22#203'RXWC'#207#202#167#226#196
+  +#9'H'#28#234#235#246','#28#231#187#231'IVx'#192'x'#6'+'#151#242'J'#215#178'+'
+  +'p'#155#237#21'v'#153#192#172#212#215'*'#158'U'#181')?-x 6z'#164#213'Gzoe7'
+  +#139'='#149'Y1'#183''''#21#5'q'#183')'#205#199#219#149#18#197#174':'#186#166
+  +#178#22'XJ'#230#166#234#205'<'#130#169#236#177'V'#27#253#129'%'#233#181'('
+  +#168#156#248#170'>f'#154'y'#177#225#27#128#231'G'#239#176#173#255#0#238#133
+  +'xl6'#242'0Z'#24#173'8'#253'D'#226#203'/'#12#0'C'#183#184#133'sA'#4'R'#163
+  +#164#141')kq['#146#214#211'J'#165'|'#253'R'#237#161'~,'#145'?M'#174#211#19'o'
+  +#181'K'#158#164#23#19#25#133#188'R'#14#10#130'RN?u9'#175#20#2#146'R'#160#8'#'
+  +#4#31':'#242#6#129#207#31#133'5'#159#245'F'#127#248#180#127#166#151#225'Mg'
+  +#253'Q'#159#254'-'#31#233#171#247'h'#152'0Z'#224#190#164'q'#168'q'#219'ZXo'
+  +#10'KI'#4'~5'#30'x'#170#159'cXq$p'#186#224#183#226#176#234#133#229#208#10#219
+  +#10'8'#238'Y'#229#206#128#11#154#27'P5'#170#180#149#183'P'#179#25'q'#155#156
+  ,#207'z'#150#150#160#162#142'd`'#145#215#165'MP#'#131'\C'#213#23#254'4'#234#13
+  +')q'#150#194#173'0'#19'/'#225#217'n2'#17#179#187'}(O4'#140#158'D'#215#189#163
+  +#248#143#171'4^'#174#177'['#180#252#230#163#199#152#198#247#146#184#232'p'
+  +#168#247#155'z'#168#28'r'#160#3#181'`'#251#129#166'V'#233#25#8'IV=p(+'#218
+  +#143#136'Z'#167'B/N'#141'75'#168#194'h'#147#223#239'a'#14'n'#217#221'm'#249
+  +#129#199#206#170#247#135'z'#187#137#186#187'U'#170#231'p'#179#189'm'#209#143
+  +'@t'#199#222#194#18'];|'#14'('#159#30'U'#204#242#194'y'#249#245' '#22'^'#12
+  +#241'^'#23#18#158#185#181#18#207'"'#222'm'#233'iJ.'#188#23#191'yWL'#1#140'm'
+  +#253#244'G'#174#31#224#29#235']C'#155'u'#178'p'#250#3'O'#221#174'HiK'#144#232
+  +'ILf'#155'*'#202#188'^'#30'e`d'#231#211#4#145'E='#7#197#157'y'#167'8'#144#206
+  +#137#226#147'M'#173'R'#220'CH'#147#221'6'#133'6'#165#242'm@'#182#2#20#217'<'
+  +#137#198'G'#175'"('#3#163'iPg'#143#252'\'#184'h'#251#148'=+'#165'b7*'#255#0
+  +'1)QR'#208'V'#26#11';P'#148#164'|'#203'Q'#232#15'N\'#142'j'#145'~'#214'}'#160
+  +'8'#127#30'-'#255#0'V"'#28#235'c'#142'%.4'#166'X)l'#159#205'Qh'#5'$'#159'#'
+  +#146'3'#235#208#128't'#237'7'#185'I'#16#173#210'f)'#5'a'#134'V'#233'H8''h'''
+  +#31#186#162#244#30#166#131#172'4'#149#191'Q'#219#130#146#196#198#247'wj9Sk'#4
+  +#165'H>'#225'@'#143'|f'#157#234#143#246'j'#233#253#141#239#242#26#0#4'~'#20
+  +#214#127#213#25#255#0#226#209#254#154#151#210#221#165't'#133#210#230#212'+'
+  +#173#182'}'#157'.'#168'%2'#28'R\i$'#254#153#24' {'#224#251#226#131#189#156'5'
+  +#230#149#208#242#239'nj'#134'^u3'#27'e,wq'#195#184')+'#221#156#158'_0'#169'.'
+  +'6j'#173'3'#197';'#213#130#205#161'ljM'#205'O)'#181'Hu'#150#227#151'7cj3'#158
+  +'``'#156#158#158']M'#0'tw'#23'5'#252'^'#30#233'x'#247#233#16#29#184#180#252
+  +#180'FJ'#26'p$'#248#144#181#5'd'#131#203#193#251#234'oE_['#212#250'R'#219#168
+  +#25#142#184#205#207'a/%'#165'+q@>D'#249#208#195#141#247#171#223#14#184'/'#167
+  +#155#182'K'#142#236#232#175'E'#128#243#207'0'#151'R'#224'Lu'#133'+'#11#7#153
+  +'('#7'=k}'#247'[_'#237#253#153'c'#235'8r'#25'j'#242'bFs'#188#12'#`+y'#8'V'#17
+  +#141#189#20'|'#168#0#192'Fk'#18#132#159'*'#230']'#25#196#238'0'#235'8'#22#150
+  +'l'#22#213#190#134'%'#1'v'#185'"+`,'#23'3'#221#167'p'#218#0'o'#25#192#221#207
+  +#203#206'w'#140'<Y'#213#138#226#2'8}'#195'f'#16#187#154'V'#27'zGv'#151#22#167
+  +'q'#184#161'!~'#0#148#143#153'J'#30'G'#166'2C'#141'&'#16#248#197#196'X|6'#181
+  +'A'#184'J'#181#189'pL'#183#203'!'#13#186#16'RBs'#158'`'#213#183'M'#220#209'z'
+  +#211#182#219#203'm)'#148'O'#136#212#148#182#163#146#128#180#5#0'O'#158'3\}'
+  +#199#155#215#18'~'#201#182#233#174'#'#194'c'#226'[x'#202#137'9'#160#128#30'N'
+  +#210#149'$'#236#240#146#9#29#0'#'#204's'#6#186#187#133#255#0#147'M/'#251#26
+  +''''#240'QA'#221'h'#177'R'#165'J'#128#21'*T'#168#1'R'#168'H'#218#166#206#242
+  +#246#9')I'#247#169'v$2'#250'w4'#226'V='#141'*'#146'~'#153'-'#148#217'_'#231
+  +#22#138#23'h'#239#200#166#165#255#0#144#223#241'QU'#14#197#223#146#187#135
+  +#237#167#127#130#205#22'5'#174#157#133#171't'#188#237';qvCQ&'#160'!'#197#199
+  +'PK'#128#5#5'r*'#4'u'#3#200#212'o'#12't%'#163#135#182#7#172#182'Y3'#164'GzR'
+  +#164#169'R'#214#133',)IJH'#5')H'#198#16'<'#189'i'#136#128#7#0#228#199#135#218
+  +'wT'#181')'#228'2'#183#215'pe'#160#181'cz'#254'%*'#218'='#240#149#28'{V'#158
+  +#215#183#24'2'#248#153'`'#137#22'SO='#18':S!(P='#218#148#233'!'''#29#14'9'
+  +#227#220'z'#209'7'#137'='#159#244#222#175#212'o'#223#152#185'K'#180#202#148
+  +#173#242'R'#210#18#227'n+'#205'@'#28#16#163#231#207#7#174':'#214#148'vm'#208
+  +'i'#143#5#31#27'{C'#209'|Ky'#183#155#5#245'g9P-'#158#152#192#3#28#189#242'h'
+  +#2#157#219#147#249#205'!'#244#155#255#0#162#186#30#26'R'#141'.'#202#16#144
+  +#148#166#18'@'#3#160#27'*'#175#197'^'#24'i'#254'$'#27'i'#190'L'#185#199#251
+  +'?'#189#13'|'#27#173#167'wy'#179';'#183'!Y'#249#6'1'#143':'#185#162';M'#193
+  +'L0'#165'wik'#187#4#158'x'#198'?'#190#184#218'^'#192#229'n'#197#151'[l=]z'
+  +#182#202'y'#166#166'N'#138#217#139#188#128'W'#177'GrG'#169#241#3#143#232#159
+  +'J'#217#218'~Lk'#255#0#27'4'#237#154#202#226'$\XC1'#157'-'#28#148#186#167#137
+  +'J'#14'<'#198's'#237#186#175'Ovk'#208'I'#183'H'#142#197#210#246'$'#184'R'#166
+  +#164':'#243'k-'#17#158'@'#4'$'#16's'#207'>'#131#4's'#204#175#12'85'#164#244#5
+  +#216'^'#215'6E'#214#230#128'C'#14#200'HJ'#25#200#193')H'#252#236#18'2I'#246
+  +#197'F'#175#173#189')#'#190'/'#252#6'<S}'#157'?'#218#222#221'x'#189#144#213
+  +#189'oCy.9'#242#161#29#216'o'#127#209'+J'#143#221'E^'#212'7'#171'L^'#13#220
+  +#227'H'#144#202#221#184#247'M'#195'F'#224'K'#170#14'!yO'#176#0#156#253'=i'
+  +#207#21#244#174#149#215#208#154#143'yC'#136#145#31'?'#15'.:'#130']o=G0AI'#229
+  +#200#143#238#161#141#167#129':J<'#246#222#186'_nW'#24#205#158'Q'#194'R'#208
+  +'P'#253#18#161#147#143#166'*'#127#18'H'#209'd'#189'"'#253#217':<'#152#188#28
+  +#134#169#9'RS"S'#238#178#21#250#27#182#255#0#213'$'#209'+S'#28#233#171#167
+  +#246'7'#191#200'j'#10#21#246#215'n'#132#204'(q'#208#204'v'#16#27'i'#166#198
+  +#18#132#129#128#0#244#2#182'K'#212'V'#233'p_'#135'#z'#27'}'#165'4'#162#147
+  +#204#5#12#28'{'#243#165#148#162#191'd'#191#6#255#0#249'g1va'#139#161#164#203
+  ,#191#127'-E'#140#161'-'#177#240#191'i'#184#218'Fr'#189#219'w'#145#253#28#227
+  +#218#164#251'H'#196#225'|['#21#189#221#26#229#153#23#143#138#25#22#183#146
+  +#161#220#237'VJ'#246#28#3#187'f'#9#231#215#222#173'('#224'7'#12#156#31#139
+  +#189#234'_'#190'K'#31#252'jV'#197#192#206#28#219#166'"Z'#141#198#233#176#133
+  +'%'#169#178#18'Q'#159'p'#132#167'?C'#202#154#13'It/'#197#181'{'#137'T'#227'T'
+  +#219#157#199#179'.'#145#153'wR'#215'5'#217'q'#148#226#215#243'/'#241'/mQ'#247
+  +')'#193#251#234'kV'#168#254#6#177#199#252#12'?'#251#134#232#139#175#180'}'
+  +#147']'#233#214',wy'#19'#EbBd '#195'Z'#16#173#201'J'#146#7#137'*'#24#194#207
+  +#151#165'ar'#209'V)'#188'5F'#128'vT'#241'lCM'#180#29'K'#136#239#240#218#210
+  +#177#207'n'#220#229'#>'#26'I'#223'Ld'#211#146'8'#241#230#159#162#23#178#178
+  +#251#190#13'['#246#128#10#164'H'''#30'g'#188'#'#255#0#2#134'<9'#153#31'Ov'
+  +#177#190'&'#248#226'X\'#185's'#16#195#142#156#0#167'U'#189#190'g'#166#228#156
+  +#15#235#1'G}'#3#167'mz7M1'#167#237'o'#202'z++Z'#210#185'+J'#150'J'#148'TrR'
+  +#144':'#159'J'#128#226#143#8#244#223#16'd7p'#144#251#246#235#154#16#17#241'L'
+  +#0'{'#196#142#129'i=q'#228'r'#15#221#138#127'88'#166#154#18'UJ>'#209'@'#237
+  +#177'v'#182#187#27'O'#217#208#243'n\Zu'#215#214#132#144'T'#211'e '#12#250'n='
+  +'?'#171'GN'#23#254'M4'#191#236'h'#159#193'E'#10'cvn'#208#237'ZDi'#215'['#203
+  +#242#139#155#213')'#167#27'l'#145#140'm'#9')P'#3#158'}s'#231#229'E'#171#3'Q'
+  +#236#214'x'#22'x'#174'8'#184#240'c7'#25#165'8AYJ'#18#18#9' '#1#156#15' )'#20
+  +#160#253'4'''#139''''#171#197'))'#25'Q'#0'Se'#205'i'#12#169#197#168#0#5'Su'
+  +#14#168'h'#5'%.d{'#26'[&'#160#187',b'#226#217#147'-E'#22#153'3'#210#165#20
+  +#182#176'>'#250'T1'#26#132#173'\'#142#7#177#165'U'#190'Bf'#210#225#231#21#162
+  +#160#227#234#7'!G#'#207'5/'#167#245'T'#187'{'#161')yD'#15'"j'#185'('#144#156
+  +#10'j'#209'='#240#172#213'7'#23#209#237'g'#139']'#208'jkh8Zu'#211#15#178#11
+  +#232#194#135'Z'#127#252#170#138#241#194#23#182#131'1'#28'XI'#193#169#8#239'8'
+  +#145#201'F'#174'G*z'#236#243#151'pX'#233#183#30#130#171#154#137#134#147#184
+  +#190'>'#149#131'z'#142'3'#231#197'!)?Z'#20'J'#144#242#149#205'g'#149'5a'#231
+  +#12#129#149#158#180'<'#169' '#143#5'S'#142#246#26#154#185'%C-='#186#178'\'
+  +#183#28#230'Vj'#179'`'''#225#16'}EJ)j'#3#145#175#159'r'#252#166'FU'#238#181
+  +'-E'#24#246#227#198#169'4'#135'K'#146#164#158'J9'#166#19#157'Z'#210'IQ'#164
+  +'I'''#157'k'#145#205#186#175#137'm'#152#243'Za\'#19'{!f'#149#131#225'&'#163
+  +#222'}X'#206'pEH'#202'<'#213'P'#210'>j'#250'n'#21#222'Ty3s'#26#152#191'f+x'
+  +#129#187'<'#233#155#178#22#165'c'''#6#164#11'('#238#242'FN*9'#224#2#185#10
+  +#173'nO'#147#210'E'#248'x'#239'Z'#30'['#30'XW^b'#172#177'S%i'#5#7#25#170#141
+  +#189'G'#190#207#189'\'#237#235'Pi8>U'#151#151#153'e_'#139'3'#243#231#246#251
+  +'H'#127#16'HKxV'#9#164#234#159'O2'#140#253'+&V'#174#185#167#1'D'#142'|'#235
+  +#205']'#200'X'#236'm'#152#223#127#189#180'1D'#165#5#248#130#135#214#159#177
+  +'4'#164'ds'#172#28'JT9'#164'V'#133#164'%'''#28#185'S'#190'N'#198#180#186#31
+  +'p'#181'z6'#201#186#224#156#138'f'#187#190#193#157#181#21'!'#197#23'O?:'#208
+  +#162'T'#14'k'#211#225#197#253#165'-'#246'YX'#21#180'-I}'#146#244'~'#233#178
+  +'P'#147#233'T'#169'2'#150#233')Y'#231'S'#151'Q'#224#170#220#143#231#15#214
+  +#175'W''f'#212#141'|'#10'!T'#127#170'2m'#197'$'#228#26'U'#130'9'#210#168#154
+  +#211#209#168#180#207#255#217#0#0#6'TLabel'#6'Label5'#4'Left'#3#136#0#6'Heigh'
+  +'t'#2#18#3'Top'#3#0#1#5'Width'#3#131#0#7'Caption'#6#19'License: GPL / LGPL'
+  +#10'Font.Color'#4'555'#0#11'ParentColor'#8#10'ParentFont'#8#0#0#6'TLabel'#8
+  +'laTarget'#4'Left'#3#136#0#6'Height'#2#18#3'Top'#3' '#1#5'Width'#2#127#9'Ali'
+  +'gnment'#7#8'taCenter'#8'AutoSize'#8#7'Caption'#6#9'Target OS'#10'Font.Color'
+  +#4'555'#0#11'ParentColor'#8#10'ParentFont'#8#0#0#0
+]);

+ 98 - 0
about.pas

@@ -0,0 +1,98 @@
+unit About;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+  ExtCtrls, StdCtrls, Buttons, URIParser, LCLIntf;
+
+const
+  {$IFDEF LINUX}
+  Target = 'Linux';
+  {$ENDIF}
+
+  {$IFDEF WIN32}
+  Target = 'Win32';
+  {$ENDIF}
+
+  {$IFDEF Win64}
+  Target = 'Win64';
+  {$ENDIF}
+
+  {$IFDEF MAC}
+  Target = 'Mac';
+  {$ENDIF}
+
+  {$IFDEF BSD}
+  Target = 'BSD';
+  {$ENDIF}
+
+type
+
+  { TfmAbout }
+
+  TfmAbout = class(TForm)
+    BitBtn1: TBitBtn;
+    Image2: TImage;
+    Label2: TLabel;
+    Label5: TLabel;
+    laTarget: TLabel;
+    laVersion: TLabel;
+    Label4: TLabel;
+    laWebSite: TLabel;
+    Label6: TLabel;
+    laVersionDate: TLabel;
+    procedure BitBtn1Click(Sender: TObject);
+    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
+    procedure Label6Click(Sender: TObject);
+    procedure laWebSiteClick(Sender: TObject);
+  private
+    { private declarations }
+  public
+    procedure Init;
+    { public declarations }
+  end; 
+
+var
+  fmAbout: TfmAbout;
+
+implementation
+
+{ TfmAbout }
+
+uses Main;
+
+procedure TfmAbout.laWebSiteClick(Sender: TObject);
+begin
+  OpenURL(laWebSite.Caption);
+end;
+
+procedure TfmAbout.Init;
+begin
+  laVersion.Caption:= 'Beta Version ' + fmMain.Version;
+  laVersionDate.Caption:= fmMain.VersionDate;
+  laTarget.Caption:= 'Target : ' + Target;
+end;
+
+procedure TfmAbout.Label6Click(Sender: TObject);
+begin
+  OpenURL('http://lazarus.freepascal.org');
+end;
+
+procedure TfmAbout.FormClose(Sender: TObject; var CloseAction: TCloseAction);
+begin
+  CloseAction:= caFree;
+end;
+
+procedure TfmAbout.BitBtn1Click(Sender: TObject);
+begin
+  Close;
+end;
+
+initialization
+  {$I about.lrs}
+
+end.
+

+ 179 - 0
backuprestore.lfm

@@ -0,0 +1,179 @@
+object fmBackupRestore: TfmBackupRestore
+  Left = 402
+  Height = 440
+  Top = 295
+  Width = 439
+  Caption = 'Backup/Resore database'
+  ClientHeight = 440
+  ClientWidth = 439
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object GroupBox1: TGroupBox
+    Left = 0
+    Height = 288
+    Top = 0
+    Width = 439
+    Align = alTop
+    ClientHeight = 284
+    ClientWidth = 435
+    Color = clCream
+    ParentColor = False
+    TabOrder = 0
+    object Label1: TLabel
+      Left = 12
+      Height = 18
+      Top = 10
+      Width = 99
+      Caption = 'Operation Type'
+      ParentColor = False
+    end
+    object cbOperation: TComboBox
+      Left = 118
+      Height = 31
+      Top = 6
+      Width = 204
+      ItemHeight = 0
+      ItemIndex = 0
+      Items.Strings = (
+        'Backup'
+        'Restore'
+      )
+      Style = csDropDownList
+      TabOrder = 0
+      Text = 'Backup'
+    end
+    object Label2: TLabel
+      Left = 13
+      Height = 18
+      Top = 89
+      Width = 123
+      Caption = 'Targeted Database'
+      ParentColor = False
+    end
+    object Label3: TLabel
+      Left = 14
+      Height = 18
+      Top = 142
+      Width = 76
+      Caption = 'Backup File'
+      ParentColor = False
+    end
+    object edBackup: TEdit
+      Left = 102
+      Height = 27
+      Top = 137
+      Width = 248
+      Anchors = [akTop, akLeft, akRight]
+      TabOrder = 1
+    end
+    object SpeedButton1: TSpeedButton
+      Left = 364
+      Height = 22
+      Top = 142
+      Width = 23
+      Anchors = [akTop, akRight]
+      NumGlyphs = 0
+      OnClick = SpeedButton1Click
+    end
+    object bbStart: TBitBtn
+      Left = 6
+      Height = 30
+      Top = 246
+      Width = 75
+      Caption = 'Start'
+      Color = 16249563
+      Kind = bkAll
+      OnClick = bbStartClick
+      TabOrder = 2
+    end
+    object edTargetDatabase: TEdit
+      Left = 142
+      Height = 27
+      Top = 86
+      Width = 207
+      Anchors = [akTop, akLeft, akRight]
+      ParentBidiMode = False
+      TabOrder = 3
+    end
+    object sbBrowseTargetdb: TSpeedButton
+      Left = 364
+      Height = 22
+      Top = 91
+      Width = 23
+      Anchors = [akTop, akRight]
+      NumGlyphs = 0
+      OnClick = sbBrowseTargetdbClick
+    end
+    object Label4: TLabel
+      Left = 14
+      Height = 18
+      Top = 177
+      Width = 72
+      Caption = 'User name'
+      ParentColor = False
+    end
+    object edUserName: TEdit
+      Left = 102
+      Height = 27
+      Top = 177
+      Width = 145
+      TabOrder = 4
+    end
+    object Label5: TLabel
+      Left = 13
+      Height = 18
+      Top = 217
+      Width = 62
+      Caption = 'Password'
+      ParentColor = False
+    end
+    object edPassword: TEdit
+      Left = 102
+      Height = 27
+      Top = 209
+      Width = 145
+      EchoMode = emPassword
+      PasswordChar = '-'
+      TabOrder = 5
+    end
+    object Label6: TLabel
+      Left = 14
+      Height = 18
+      Top = 51
+      Width = 31
+      Caption = 'Host'
+      ParentColor = False
+    end
+    object edHost: TEdit
+      Left = 118
+      Height = 27
+      Top = 48
+      Width = 203
+      Anchors = [akTop, akLeft, akRight]
+      ParentBidiMode = False
+      TabOrder = 6
+    end
+  end
+  object meLog: TMemo
+    Left = 0
+    Height = 152
+    Top = 288
+    Width = 439
+    Align = alClient
+    Font.Name = 'courier new [monotype]'
+    ParentFont = False
+    ReadOnly = True
+    ScrollBars = ssAutoBoth
+    TabOrder = 1
+  end
+  object OpenDialog1: TOpenDialog
+    left = 384
+    top = 144
+  end
+  object SaveDialog1: TSaveDialog
+    DefaultExt = '.fbk'
+    Options = [ofOverwritePrompt, ofEnableSizing, ofViewDetail]
+    left = 384
+    top = 208
+  end
+end

+ 47 - 0
backuprestore.lrs

@@ -0,0 +1,47 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmBackupRestore','FORMDATA',[
+  'TPF0'#16'TfmBackupRestore'#15'fmBackupRestore'#4'Left'#3#146#1#6'Height'#3
+  +#184#1#3'Top'#3''''#1#5'Width'#3#183#1#7'Caption'#6#22'Backup/Resore databas'
+  +'e'#12'ClientHeight'#3#184#1#11'ClientWidth'#3#183#1#8'Position'#7#14'poScre'
+  +'enCenter'#10'LCLVersion'#6#6'0.9.31'#0#9'TGroupBox'#9'GroupBox1'#4'Left'#2#0
+  +#6'Height'#3' '#1#3'Top'#2#0#5'Width'#3#183#1#5'Align'#7#5'alTop'#12'ClientH'
+  +'eight'#3#28#1#11'ClientWidth'#3#179#1#5'Color'#7#7'clCream'#11'ParentColor'
+  +#8#8'TabOrder'#2#0#0#6'TLabel'#6'Label1'#4'Left'#2#12#6'Height'#2#18#3'Top'#2
+  +#10#5'Width'#2'c'#7'Caption'#6#14'Operation Type'#11'ParentColor'#8#0#0#9'TC'
+  +'omboBox'#11'cbOperation'#4'Left'#2'v'#6'Height'#2#31#3'Top'#2#6#5'Width'#3
+  +#204#0#10'ItemHeight'#2#0#9'ItemIndex'#2#0#13'Items.Strings'#1#6#6'Backup'#6
+  +#7'Restore'#0#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#0#4'Text'#6#6'Back'
+  +'up'#0#0#6'TLabel'#6'Label2'#4'Left'#2#13#6'Height'#2#18#3'Top'#2'Y'#5'Width'
+  +#2'{'#7'Caption'#6#17'Targeted Database'#11'ParentColor'#8#0#0#6'TLabel'#6'L'
+  +'abel3'#4'Left'#2#14#6'Height'#2#18#3'Top'#3#142#0#5'Width'#2'L'#7'Caption'#6
+  +#11'Backup File'#11'ParentColor'#8#0#0#5'TEdit'#8'edBackup'#4'Left'#2'f'#6'H'
+  +'eight'#2#27#3'Top'#3#137#0#5'Width'#3#248#0#7'Anchors'#11#5'akTop'#6'akLeft'
+  +#7'akRight'#0#8'TabOrder'#2#1#0#0#12'TSpeedButton'#12'SpeedButton1'#4'Left'#3
+  +'l'#1#6'Height'#2#22#3'Top'#3#142#0#5'Width'#2#23#7'Anchors'#11#5'akTop'#7'a'
+  +'kRight'#0#9'NumGlyphs'#2#0#7'OnClick'#7#17'SpeedButton1Click'#0#0#7'TBitBtn'
+  +#7'bbStart'#4'Left'#2#6#6'Height'#2#30#3'Top'#3#246#0#5'Width'#2'K'#7'Captio'
+  +'n'#6#5'Start'#5'Color'#4#219#242#247#0#4'Kind'#7#5'bkAll'#7'OnClick'#7#12'b'
+  +'bStartClick'#8'TabOrder'#2#2#0#0#5'TEdit'#16'edTargetDatabase'#4'Left'#3#142
+  +#0#6'Height'#2#27#3'Top'#2'V'#5'Width'#3#207#0#7'Anchors'#11#5'akTop'#6'akLe'
+  +'ft'#7'akRight'#0#14'ParentBidiMode'#8#8'TabOrder'#2#3#0#0#12'TSpeedButton'
+  +#16'sbBrowseTargetdb'#4'Left'#3'l'#1#6'Height'#2#22#3'Top'#2'['#5'Width'#2#23
+  +#7'Anchors'#11#5'akTop'#7'akRight'#0#9'NumGlyphs'#2#0#7'OnClick'#7#21'sbBrow'
+  +'seTargetdbClick'#0#0#6'TLabel'#6'Label4'#4'Left'#2#14#6'Height'#2#18#3'Top'
+  +#3#177#0#5'Width'#2'H'#7'Caption'#6#9'User name'#11'ParentColor'#8#0#0#5'TEd'
+  +'it'#10'edUserName'#4'Left'#2'f'#6'Height'#2#27#3'Top'#3#177#0#5'Width'#3#145
+  +#0#8'TabOrder'#2#4#0#0#6'TLabel'#6'Label5'#4'Left'#2#13#6'Height'#2#18#3'Top'
+  +#3#217#0#5'Width'#2'>'#7'Caption'#6#8'Password'#11'ParentColor'#8#0#0#5'TEdi'
+  +'t'#10'edPassword'#4'Left'#2'f'#6'Height'#2#27#3'Top'#3#209#0#5'Width'#3#145
+  +#0#8'EchoMode'#7#10'emPassword'#12'PasswordChar'#6#1'-'#8'TabOrder'#2#5#0#0#6
+  +'TLabel'#6'Label6'#4'Left'#2#14#6'Height'#2#18#3'Top'#2'3'#5'Width'#2#31#7'C'
+  +'aption'#6#4'Host'#11'ParentColor'#8#0#0#5'TEdit'#6'edHost'#4'Left'#2'v'#6'H'
+  +'eight'#2#27#3'Top'#2'0'#5'Width'#3#203#0#7'Anchors'#11#5'akTop'#6'akLeft'#7
+  +'akRight'#0#14'ParentBidiMode'#8#8'TabOrder'#2#6#0#0#0#5'TMemo'#5'meLog'#4'L'
+  +'eft'#2#0#6'Height'#3#152#0#3'Top'#3' '#1#5'Width'#3#183#1#5'Align'#7#8'alCl'
+  +'ient'#9'Font.Name'#6#22'courier new [monotype]'#10'ParentFont'#8#8'ReadOnly'
+  +#9#10'ScrollBars'#7#10'ssAutoBoth'#8'TabOrder'#2#1#0#0#11'TOpenDialog'#11'Op'
+  +'enDialog1'#4'left'#3#128#1#3'top'#3#144#0#0#0#11'TSaveDialog'#11'SaveDialog'
+  +'1'#10'DefaultExt'#6#4'.fbk'#7'Options'#11#17'ofOverwritePrompt'#14'ofEnable'
+  +'Sizing'#12'ofViewDetail'#0#4'left'#3#128#1#3'top'#3#208#0#0#0#0
+]);

+ 139 - 0
backuprestore.pas

@@ -0,0 +1,139 @@
+unit BackupRestore;
+
+{$mode objfpc}
+
+interface
+
+uses
+  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+  StdCtrls, Buttons;
+
+type
+
+  { TfmBackupRestore }
+
+  TfmBackupRestore = class(TForm)
+    bbStart: TBitBtn;
+    cbOperation: TComboBox;
+    edBackup: TEdit;
+    edPassword: TEdit;
+    edTargetDatabase: TEdit;
+    edHost: TEdit;
+    edUserName: TEdit;
+    GroupBox1: TGroupBox;
+    Label1: TLabel;
+    Label2: TLabel;
+    Label3: TLabel;
+    Label4: TLabel;
+    Label5: TLabel;
+    Label6: TLabel;
+    meLog: TMemo;
+    OpenDialog1: TOpenDialog;
+    SaveDialog1: TSaveDialog;
+    SpeedButton1: TSpeedButton;
+    sbBrowseTargetdb: TSpeedButton;
+    procedure bbStartClick(Sender: TObject);
+    procedure sbBrowseTargetdbClick(Sender: TObject);
+    procedure SpeedButton1Click(Sender: TObject);
+  private
+
+    { private declarations }
+  public
+    fDatabase: string;
+    procedure Init(Title, Database, User, Password: string);
+    { public declarations }
+  end; 
+
+var
+  fmBackupRestore: TfmBackupRestore;
+
+implementation
+
+{ TfmBackupRestore }
+
+uses UnitFirebirdServices;
+
+procedure TfmBackupRestore.SpeedButton1Click(Sender: TObject);
+begin
+  SaveDialog1.DefaultExt:= '.fbk';
+  if ((cbOperation.ItemIndex = 0) and (SaveDialog1.Execute)) or
+   ((cbOperation.ItemIndex = 1) and (OpenDialog1.Execute)) then
+  begin
+    if cbOperation.ItemIndex = 0 then
+      edBackup.Text:= SaveDialog1.FileName
+    else
+      edBackup.Text:= OpenDialog1.FileName;
+  end;
+
+end;
+
+procedure TfmBackupRestore.Init(Title, Database, User, Password: string);
+begin
+  fDatabase:= Database;
+  edUserName.Text:= User;
+  edPassword.Text:= Password;
+
+  // Linux: servername:/path/test.fdb  or /path/test.fdb
+  // Windows: servername:c:\path\test.fdb or c:\path\test.fdb
+  if Pos(':', Trim(fDatabase)) > 2 then
+  begin
+    edHost.Text:= Trim(Copy(fDatabase, 1, Pos(':', fDatabase) - 1));
+    edTargetDatabase.Text:= Trim(Copy(fDatabase, Pos(':', fDatabase) + 1, Length(fDatabase)));
+  end
+  else
+  begin
+    edHost.Text := 'localhost';
+    edTargetDatabase.Text := fDatabase;
+  end;
+
+end;
+
+procedure TfmBackupRestore.bbStartClick(Sender: TObject);
+var
+  FireBirdServices: TFirebirdServices;
+  Res: Ansistring;
+  ADatabase: string;
+begin
+  FireBirdServices:= TFirebirdServices.Create;
+  FireBirdServices.VerboseOutput:= True;
+  meLog.Clear;
+  with FireBirdServices do
+  begin
+    HostName:= edHost.Text;
+    DBName:= edTargetDatabase.Text;
+    UserName := edUserName.Text;
+    Password := edPassword.Text;
+    BkpName := Trim(edBackup.Text);
+
+    try
+      AttachService;
+
+      if cbOperation.ItemIndex = 0 then
+        StartBackup
+      else
+        StartRestore;
+
+      while ServiceQuery(Res) do
+        meLog.Lines.Add(Res);
+    finally
+      DetachService;
+    end;
+    meLog.Lines.Add('');
+    FireBirdServices.Free;
+  end;
+
+end;
+
+
+procedure TfmBackupRestore.sbBrowseTargetdbClick(Sender: TObject);
+begin
+  SaveDialog1.DefaultExt:= '.fdb';
+  if SaveDialog1.Execute then
+    edTargetDatabase.Text:= SaveDialog1.FileName;
+end;
+
+initialization
+  {$I backuprestore.lrs}
+
+end.
+

+ 69 - 0
calen.lfm

@@ -0,0 +1,69 @@
+object fmCalen: TfmCalen
+  Left = 467
+  Height = 300
+  Top = 216
+  Width = 281
+  BorderIcons = [biSystemMenu]
+  BorderStyle = bsDialog
+  Caption = 'Date Time'
+  ClientHeight = 300
+  ClientWidth = 281
+  OnActivate = FormActivate
+  OnCreate = FormCreate
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object Label1: TLabel
+    Left = 8
+    Height = 18
+    Top = 16
+    Width = 34
+    Caption = 'Time'
+    ParentColor = False
+  end
+  object edTime: TEdit
+    Left = 53
+    Height = 27
+    Top = 11
+    Width = 131
+    TabOrder = 0
+  end
+  object Calendar1: TCalendar
+    Left = 0
+    Height = 190
+    Top = 56
+    Width = 271
+    DateTime = 40354
+  end
+  object BitBtn1: TBitBtn
+    Left = 196
+    Height = 30
+    Top = 11
+    Width = 75
+    Caption = 'Today'
+    OnClick = BitBtn1Click
+    TabOrder = 2
+  end
+  object bbOk: TBitBtn
+    Left = 8
+    Height = 30
+    Top = 261
+    Width = 75
+    Caption = '&OK'
+    Default = True
+    Kind = bkOK
+    ModalResult = 1
+    OnClick = bbOkClick
+    TabOrder = 3
+  end
+  object BitBtn3: TBitBtn
+    Left = 94
+    Height = 30
+    Top = 261
+    Width = 83
+    Cancel = True
+    Caption = 'Cancel'
+    Kind = bkCancel
+    ModalResult = 2
+    TabOrder = 4
+  end
+end

+ 21 - 0
calen.lrs

@@ -0,0 +1,21 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmCalen','FORMDATA',[
+  'TPF0'#8'TfmCalen'#7'fmCalen'#4'Left'#3#211#1#6'Height'#3','#1#3'Top'#3#216#0
+  +#5'Width'#3#25#1#11'BorderIcons'#11#12'biSystemMenu'#0#11'BorderStyle'#7#8'b'
+  +'sDialog'#7'Caption'#6#9'Date Time'#12'ClientHeight'#3','#1#11'ClientWidth'#3
+  +#25#1#10'OnActivate'#7#12'FormActivate'#8'OnCreate'#7#10'FormCreate'#8'Posit'
+  +'ion'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#6'TLabel'#6'Label1'#4
+  +'Left'#2#8#6'Height'#2#18#3'Top'#2#16#5'Width'#2'"'#7'Caption'#6#4'Time'#11
+  +'ParentColor'#8#0#0#5'TEdit'#6'edTime'#4'Left'#2'5'#6'Height'#2#27#3'Top'#2
+  +#11#5'Width'#3#131#0#8'TabOrder'#2#0#0#0#9'TCalendar'#9'Calendar1'#4'Left'#2
+  +#0#6'Height'#3#190#0#3'Top'#2'8'#5'Width'#3#15#1#8'DateTime'#5#0#0#0#0#0#0
+  +#162#157#14'@'#0#0#7'TBitBtn'#7'BitBtn1'#4'Left'#3#196#0#6'Height'#2#30#3'To'
+  +'p'#2#11#5'Width'#2'K'#7'Caption'#6#5'Today'#7'OnClick'#7#12'BitBtn1Click'#8
+  +'TabOrder'#2#2#0#0#7'TBitBtn'#4'bbOk'#4'Left'#2#8#6'Height'#2#30#3'Top'#3#5#1
+  +#5'Width'#2'K'#7'Caption'#6#3'&OK'#7'Default'#9#4'Kind'#7#4'bkOK'#11'ModalRe'
+  +'sult'#2#1#7'OnClick'#7#9'bbOkClick'#8'TabOrder'#2#3#0#0#7'TBitBtn'#7'BitBtn'
+  +'3'#4'Left'#2'^'#6'Height'#2#30#3'Top'#3#5#1#5'Width'#2'S'#6'Cancel'#9#7'Cap'
+  +'tion'#6#6'Cancel'#4'Kind'#7#8'bkCancel'#11'ModalResult'#2#2#8'TabOrder'#2#4
+  +#0#0#0
+]);

+ 66 - 0
calen.pas

@@ -0,0 +1,66 @@
+unit Calen;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+  StdCtrls, Calendar, Buttons;
+
+type
+
+  { TfmCalen }
+
+  TfmCalen = class(TForm)
+    BitBtn1: TBitBtn;
+    bbOk: TBitBtn;
+    BitBtn3: TBitBtn;
+    Calendar1: TCalendar;
+    edTime: TEdit;
+    Label1: TLabel;
+    procedure bbOkClick(Sender: TObject);
+    procedure BitBtn1Click(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { private declarations }
+  public
+    DateTimeValue: TDateTime;
+    { public declarations }
+  end; 
+
+var
+  fmCalen: TfmCalen;
+
+implementation
+
+{ TfmCalen }
+
+procedure TfmCalen.BitBtn1Click(Sender: TObject);
+begin
+  edTime.Text:= TimeToStr(Time);
+  Calendar1.DateTime:= Date;
+end;
+
+procedure TfmCalen.FormActivate(Sender: TObject);
+begin
+  edTime.Text:= TimeToStr(DateTimeValue);
+  Calendar1.DateTime:= DateTimeValue;
+end;
+
+procedure TfmCalen.FormCreate(Sender: TObject);
+begin
+
+end;
+
+procedure TfmCalen.bbOkClick(Sender: TObject);
+begin
+  DateTimeValue:= StrToTime(edTime.Text) + Trunc(Calendar1.DateTime);
+end;
+
+initialization
+  {$I calen.lrs}
+
+end.
+

+ 55 - 0
callproc.lfm

@@ -0,0 +1,55 @@
+object fmCallProc: TfmCallProc
+  Left = 290
+  Height = 391
+  Top = 216
+  Width = 400
+  ActiveControl = StringGrid1
+  Caption = 'Call stored procedure: '
+  ClientHeight = 391
+  ClientWidth = 400
+  OnActivate = FormActivate
+  OnClose = FormClose
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object StringGrid1: TStringGrid
+    Left = 8
+    Height = 320
+    Top = 8
+    Width = 376
+    Anchors = [akTop, akLeft, akBottom]
+    ColCount = 3
+    Columns = <    
+      item
+        Title.Caption = 'Param Value'
+        Width = 120
+      end    
+      item
+        ReadOnly = True
+        Title.Caption = 'Param Name'
+        Width = 120
+      end    
+      item
+        ReadOnly = True
+        Title.Caption = 'Type'
+        Width = 120
+      end>
+    FixedColor = 14539471
+    FixedCols = 0
+    Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing, goSmoothScroll]
+    TabOrder = 0
+  end
+  object BitBtn1: TBitBtn
+    Left = 8
+    Height = 30
+    Top = 344
+    Width = 75
+    Anchors = [akLeft, akBottom]
+    Caption = 'Call'
+    Color = 16249563
+    Default = True
+    Kind = bkOK
+    ModalResult = 1
+    OnClick = BitBtn1Click
+    TabOrder = 1
+  end
+end

+ 20 - 0
callproc.lrs

@@ -0,0 +1,20 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmCallProc','FORMDATA',[
+  'TPF0'#11'TfmCallProc'#10'fmCallProc'#4'Left'#3'"'#1#6'Height'#3#135#1#3'Top'
+  +#3#216#0#5'Width'#3#144#1#13'ActiveControl'#7#11'StringGrid1'#7'Caption'#6#23
+  +'Call stored procedure: '#12'ClientHeight'#3#135#1#11'ClientWidth'#3#144#1#10
+  +'OnActivate'#7#12'FormActivate'#7'OnClose'#7#9'FormClose'#8'Position'#7#14'p'
+  +'oScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#11'TStringGrid'#11'StringGrid1'
+  +#4'Left'#2#8#6'Height'#3'@'#1#3'Top'#2#8#5'Width'#3'x'#1#7'Anchors'#11#5'akT'
+  +'op'#6'akLeft'#8'akBottom'#0#8'ColCount'#2#3#7'Columns'#14#1#13'Title.Captio'
+  +'n'#6#11'Param Value'#5'Width'#2'x'#0#1#8'ReadOnly'#9#13'Title.Caption'#6#10
+  +'Param Name'#5'Width'#2'x'#0#1#8'ReadOnly'#9#13'Title.Caption'#6#4'Type'#5'W'
+  +'idth'#2'x'#0#0#10'FixedColor'#4#207#218#221#0#9'FixedCols'#2#0#7'Options'#11
+  +#15'goFixedVertLine'#15'goFixedHorzLine'#10'goVertLine'#10'goHorzLine'#13'go'
+  +'RangeSelect'#9'goEditing'#14'goSmoothScroll'#0#8'TabOrder'#2#0#0#0#7'TBitBt'
+  +'n'#7'BitBtn1'#4'Left'#2#8#6'Height'#2#30#3'Top'#3'X'#1#5'Width'#2'K'#7'Anch'
+  +'ors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#4'Call'#5'Color'#4#219#242#247
+  +#0#7'Default'#9#4'Kind'#7#4'bkOK'#11'ModalResult'#2#1#7'OnClick'#7#12'BitBtn'
+  +'1Click'#8'TabOrder'#2#1#0#0#0
+]);

+ 55 - 0
callproc.pas

@@ -0,0 +1,55 @@
+unit CallProc;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+  Grids, StdCtrls, Buttons;
+
+type
+
+  { TfmCallProc }
+
+  TfmCallProc = class(TForm)
+    BitBtn1: TBitBtn;
+    StringGrid1: TStringGrid;
+    procedure BitBtn1Click(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
+  private
+    { private declarations }
+  public
+    { public declarations }
+  end; 
+
+var
+  fmCallProc: TfmCallProc;
+
+implementation
+
+{ TfmCallProc }
+
+
+procedure TfmCallProc.FormActivate(Sender: TObject);
+begin
+  StringGrid1.SetFocus;
+end;
+
+procedure TfmCallProc.FormClose(Sender: TObject; var CloseAction: TCloseAction);
+begin
+  StringGrid1.Row:= 1;
+end;
+
+procedure TfmCallProc.BitBtn1Click(Sender: TObject);
+begin
+  StringGrid1.Row:= 1;
+end;
+
+
+initialization
+  {$I callproc.lrs}
+
+end.
+

+ 81 - 0
changepass.lfm

@@ -0,0 +1,81 @@
+object fmChangePass: TfmChangePass
+  Left = 383
+  Height = 182
+  Top = 204
+  Width = 320
+  BorderStyle = bsDialog
+  Caption = 'fmChangePass'
+  ClientHeight = 182
+  ClientWidth = 320
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object Label1: TLabel
+    Left = 14
+    Height = 18
+    Top = 40
+    Width = 95
+    Caption = 'New Password'
+    ParentColor = False
+  end
+  object edPassword: TEdit
+    Left = 126
+    Height = 27
+    Top = 34
+    Width = 154
+    EchoMode = emPassword
+    PasswordChar = '*'
+    TabOrder = 0
+  end
+  object Label2: TLabel
+    Left = 16
+    Height = 18
+    Top = 72
+    Width = 52
+    Caption = 'Confirm'
+    ParentColor = False
+  end
+  object edConfirm: TEdit
+    Left = 126
+    Height = 27
+    Top = 66
+    Width = 154
+    EchoMode = emPassword
+    PasswordChar = '*'
+    TabOrder = 1
+  end
+  object bbCreate: TBitBtn
+    Left = 18
+    Height = 30
+    Top = 120
+    Width = 86
+    Caption = 'Set'
+    Color = 16249563
+    Default = True
+    Kind = bkOK
+    OnClick = bbCreateClick
+    TabOrder = 2
+  end
+  object bbCanel: TBitBtn
+    Left = 176
+    Height = 30
+    Top = 120
+    Width = 91
+    Cancel = True
+    Caption = 'Cancel'
+    Color = 16249563
+    Kind = bkCancel
+    ModalResult = 2
+    TabOrder = 3
+  end
+  object Label3: TLabel
+    Left = 13
+    Height = 18
+    Top = 5
+    Width = 262
+    Caption = 'Requires FireBird version 2.5.0 or above'
+    Font.Color = clGray
+    Font.Style = [fsItalic]
+    ParentColor = False
+    ParentFont = False
+  end
+end

+ 24 - 0
changepass.lrs

@@ -0,0 +1,24 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmChangePass','FORMDATA',[
+  'TPF0'#13'TfmChangePass'#12'fmChangePass'#4'Left'#3#127#1#6'Height'#3#182#0#3
+  +'Top'#3#204#0#5'Width'#3'@'#1#11'BorderStyle'#7#8'bsDialog'#7'Caption'#6#12
+  +'fmChangePass'#12'ClientHeight'#3#182#0#11'ClientWidth'#3'@'#1#8'Position'#7
+  +#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#6'TLabel'#6'Label1'#4'Left'
+  +#2#14#6'Height'#2#18#3'Top'#2'('#5'Width'#2'_'#7'Caption'#6#12'New Password'
+  +#11'ParentColor'#8#0#0#5'TEdit'#10'edPassword'#4'Left'#2'~'#6'Height'#2#27#3
+  +'Top'#2'"'#5'Width'#3#154#0#8'EchoMode'#7#10'emPassword'#12'PasswordChar'#6#1
+  +'*'#8'TabOrder'#2#0#0#0#6'TLabel'#6'Label2'#4'Left'#2#16#6'Height'#2#18#3'To'
+  +'p'#2'H'#5'Width'#2'4'#7'Caption'#6#7'Confirm'#11'ParentColor'#8#0#0#5'TEdit'
+  +#9'edConfirm'#4'Left'#2'~'#6'Height'#2#27#3'Top'#2'B'#5'Width'#3#154#0#8'Ech'
+  +'oMode'#7#10'emPassword'#12'PasswordChar'#6#1'*'#8'TabOrder'#2#1#0#0#7'TBitB'
+  +'tn'#8'bbCreate'#4'Left'#2#18#6'Height'#2#30#3'Top'#2'x'#5'Width'#2'V'#7'Cap'
+  +'tion'#6#3'Set'#5'Color'#4#219#242#247#0#7'Default'#9#4'Kind'#7#4'bkOK'#7'On'
+  +'Click'#7#13'bbCreateClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#7'bbCanel'#4'Left'
+  +#3#176#0#6'Height'#2#30#3'Top'#2'x'#5'Width'#2'['#6'Cancel'#9#7'Caption'#6#6
+  +'Cancel'#5'Color'#4#219#242#247#0#4'Kind'#7#8'bkCancel'#11'ModalResult'#2#2#8
+  +'TabOrder'#2#3#0#0#6'TLabel'#6'Label3'#4'Left'#2#13#6'Height'#2#18#3'Top'#2#5
+  +#5'Width'#3#6#1#7'Caption'#6'(Requires FireBird version 2.5.0 or above'#10'F'
+  +'ont.Color'#7#6'clGray'#10'Font.Style'#11#8'fsItalic'#0#11'ParentColor'#8#10
+  +'ParentFont'#8#0#0#0
+]);

+ 52 - 0
changepass.pas

@@ -0,0 +1,52 @@
+unit ChangePass;
+
+{$mode objfpc}
+
+interface
+
+uses
+  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+  StdCtrls, Buttons;
+
+type
+
+  { TfmChangePass }
+
+  TfmChangePass = class(TForm)
+    bbCanel: TBitBtn;
+    bbCreate: TBitBtn;
+    edPassword: TEdit;
+    edConfirm: TEdit;
+    Label1: TLabel;
+    Label2: TLabel;
+    Label3: TLabel;
+    procedure bbCreateClick(Sender: TObject);
+  private
+    { private declarations }
+  public
+    { public declarations }
+  end; 
+
+var
+  fmChangePass: TfmChangePass;
+
+implementation
+
+{ TfmChangePass }
+
+procedure TfmChangePass.bbCreateClick(Sender: TObject);
+begin
+  if edPassword.Text = '' then
+    ShowMessage('You have to input a password')
+  else
+  if edPassword.Text <> edConfirm.Text then
+    ShowMessage('Passwords do not match')
+  else
+    ModalResult:= mrOK;
+end;
+
+initialization
+  {$I changepass.lrs}
+
+end.
+

+ 8 - 0
connectas.lfm

@@ -0,0 +1,8 @@
+object fmConnectAs: TfmConnectAs
+  Left = 578
+  Height = 300
+  Top = 203
+  Width = 400
+  Caption = 'fmConnectAs'
+  LCLVersion = '0.9.28.2'
+end

+ 8 - 0
connectas.lrs

@@ -0,0 +1,8 @@
+{ This is an automatically generated lazarus resource file }
+
+
+LazarusResources.Add('TfmConnectAs','FORMDATA',[
+  'TPF0'#12'TfmConnectAs'#11'fmConnectAs'#4'Left'#3'B'#2#6'Height'#3','#1#3'Top'
+  +#3#203#0#5'Width'#3#144#1#7'Caption'#6#11'fmConnectAs'#10'LCLVersion'#6#8'0.'
+  +'9.28.2'#0#0
+]);

+ 27 - 0
connectas.pas

@@ -0,0 +1,27 @@
+unit ConnectAs;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs; 
+
+type
+  TfmConnectAs = class(TForm)
+  private
+    { private declarations }
+  public
+    { public declarations }
+  end; 
+
+var
+  fmConnectAs: TfmConnectAs;
+
+implementation
+
+initialization
+  {$I connectas.lrs}
+
+end.
+

+ 1012 - 0
copytable.lfm

@@ -0,0 +1,1012 @@
+object fmCopyTable: TfmCopyTable
+  Left = 352
+  Height = 509
+  Top = 207
+  Width = 610
+  Caption = 'Copy Table'
+  ClientHeight = 509
+  ClientWidth = 610
+  Position = poScreenCenter
+  LCLVersion = '0.9.30'
+  object Label1: TLabel
+    Left = 9
+    Height = 18
+    Top = 19
+    Width = 114
+    Caption = 'Source Database'
+    ParentColor = False
+  end
+  object Label2: TLabel
+    Left = 9
+    Height = 18
+    Top = 56
+    Width = 86
+    Caption = 'Soruce Table'
+    ParentColor = False
+  end
+  object laSourceDatabase: TLabel
+    Left = 183
+    Height = 18
+    Top = 16
+    Width = 121
+    Caption = 'Source Database'
+    Font.Style = [fsBold]
+    ParentColor = False
+    ParentFont = False
+  end
+  object Label3: TLabel
+    Left = 9
+    Height = 18
+    Top = 91
+    Width = 146
+    Caption = 'Destination Database'
+    ParentColor = False
+  end
+  object Label4: TLabel
+    Left = 9
+    Height = 18
+    Top = 152
+    Width = 118
+    Caption = 'Destination Table'
+    ParentColor = False
+  end
+  object cbSourceTable: TComboBox
+    Left = 183
+    Height = 31
+    Top = 46
+    Width = 177
+    ItemHeight = 0
+    OnChange = cbSourceTableChange
+    Style = csDropDownList
+    TabOrder = 0
+  end
+  object cbDestDatabase: TComboBox
+    Left = 183
+    Height = 31
+    Top = 84
+    Width = 217
+    ItemHeight = 0
+    OnChange = cbDestDatabaseChange
+    Style = csDropDownList
+    TabOrder = 1
+  end
+  object cbDestTable: TComboBox
+    Left = 183
+    Height = 31
+    Top = 151
+    Width = 177
+    ItemHeight = 0
+    Style = csDropDownList
+    TabOrder = 2
+  end
+  object laDatabase: TLabel
+    Left = 184
+    Height = 15
+    Top = 120
+    Width = 108
+    Caption = 'Destination Database'
+    Font.Height = -11
+    ParentColor = False
+    ParentFont = False
+  end
+  object bbCopy: TBitBtn
+    Left = 12
+    Height = 49
+    Top = 440
+    Width = 115
+    Anchors = [akLeft, akBottom]
+    Caption = 'Copy'
+    Glyph.Data = {
+      36100000424D3610000000000000360000002800000020000000200000000100
+      2000000000000010000064000000640000000000000000000000FFFFFF00FFFF
+      FF00FFFFFF007D7D7E007D7D7E007D7D7E000000000100000001808080028080
+      8002808080025555550340404004666666056666660555555506555555065555
+      5506666666058080800455555503808080028080800280808002000000010000
+      00017D7D7E007D7D7E007D7D7E00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF007D7D7E000000000180808002666666054D4D4D0A5B5B5B0E5A5A
+      5A115555551259595914555555185252521C5858581D5555551E5555551E5555
+      551E5858581D5858581A55555515515151135A5A5A115555550F5555550C4949
+      490755555503000000017D7D7E00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF007E7E7F00808080026D6D6D0755555512555555215757572F5757
+      57385959593C63636352737373907A7A7BCA7B7B7CDC7D7D7EF57D7D7EF57B7B
+      7CDC7A7A7BCB72727392646465535858583D595959395A5A5A33575757265555
+      55185D5D5D0B4040400400000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF007F7F8000555555035D5D5D0B5858581D575757355858584B6767
+      6876777778BD878788FFA4A2A4FFC1BBBFFFCAC4C9FFD8CDD4FFDBCDD5FFCFC2
+      CAFFC8BBC5FFA9A1A7FF898789FF777778BE67676879585858515656563E5757
+      5726555555125555550600000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0081818100808080026D6D6D0755555512555555217B7B7B9D8787
+      87FFB4B3B4FFD4D1D3FFD1CDD0FFCAC4C8FFC5BCC1FFC5B8BFFFCBB9C4FFD0BA
+      C8FFDAC1D0FFE3CBDCFFE5D1DFFFBEB3BBFF888788FF7B7B7B9F575757265555
+      55185D5D5D0B4040400400000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00828283000000000180808002666666058181829799999AFFCFCE
+      CFFFCDCACCFFC4C2C4FFC0BEC1FFBEBABFFFBDB7BBFFC0B7BDFFC5B7C0FFCBB7
+      C5FFD1B8CBFFD9BDD3FFD8C2D3FFDCCAD7FFDBCED8FF9D999CFF818182984949
+      4907555555030000000182828300FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0084848500848485008484850084848593A3A2A3FFD0CED0FFC7C7
+      C8FFC0C0C2FFC0BFC2FFBFBFC2FFBDBEC2FFBDBABEFFBEBAC0FFC2BAC2FFC9B9
+      C6FFD4BDD1FFD4BFD2FFCFBFCEFFCDBFCBFFD1C7D0FFD7CED5FFA5A2A5FF8484
+      85937BE4FE008484850084848500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF008585860085858600858586879B9A9BFFD1CFD0FFC9C7C9FFC3C2
+      C4FFC1C1C4FFC0C1C4FFBEC1C4FFBEBFC4FFBDBDC2FFBEBCC3FFC2BCC6FFC9BC
+      CBFFD5C0D6FFCFC0D1FFCAC1CCFFC8C1CAFFC7C1C8FFCDC7CCFFD3CFD3FF9C9A
+      9CFF858586878585860085858600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00878788008787882D8E8E8FFFCECCCDFFCDCACCFFC5C4C6FFC3C3
+      C6FFC1C3C6FFBFC2C6FFBDC2C6FFBDC2C7FFBBBFC5FFBEBEC7FFC3BECBFFCBBF
+      D1FFD0C1D6FFCAC2D0FFC6C2CCFFC4C2CAFFC4C3C8FFC5C3C8FFCDCACDFFCFCC
+      CEFF8F8F90FF8787882D87878800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0089898A0089898A96B5B3B4FFD1CED0FFC9C6C9FFC7C5C9FFC4C5
+      C8FFC1C4C8FFBFC4C8FFBEC4C8FFBCC3C9FFBCC2CAFFC0C1CDFFC4C0D0FFCBC2
+      D5FFCCC3D6FFC6C3D1FFC3C4CDFFC2C4CAFFC2C4C9FFC4C5C8FFC6C5C8FFCFCE
+      CFFFB4B3B4FF89898A9689898A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF008B8B8C1B939293FFD3CFD1FFD0CBCEFFCBC8CBFFC8C7CBFFC5C7
+      CBFFC2C6CAFFC0C6CAFFBFC8CEFFC5CED6FFCDD6DFFFD2DBE5FFD4DBE8FFD4D6
+      E6FFCDCEDDFFC6C7D4FFC1C5CEFFC1C6CCFFC2C6CAFFC4C7CAFFC5C7CAFFCBCB
+      CDFFD1CFD1FF939293FF8B8B8C1BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF008D8D8E78AEADAEFFD4CFD2FFCECACDFFCCC9CDFFC9C9CDFFC5C8
+      CDFFC2C8CCFFC2CAD0FFC7D2D8FFBCC7CDFFABAEB2FF969798FF969798FFADAE
+      B4FFC0C6D0FFCAD1DDFFC1C9D2FFC0C7CDFFC1C8CCFFC3C8CCFFC6C9CBFFC9C9
+      CBFFD0CFD0FFADADAEFF8D8D8E78FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00909090BAC2BFC1FFD4CFD2FFD0CCCFFFCDCBCFFFCACBCFFFC6CA
+      CFFFC3C9CEFFC5CFD5FFBAC3C8FF9B9C9EFF909090669090901C9090901C9090
+      90669C9C9EFFBAC2CAFFC4CED7FFBFC9CFFFC2C9CEFFC4CACDFFC7CBCDFFCACB
+      CDFFD0CFD0FFC1BFC0FF909090BAFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00929292E4CFCCCEFFD5D1D3FFD1CFD2FFCFCED2FFCCCED2FFC8CD
+      D1FFC4CCD1FFC7D0D7FFA8ABAEFF929292667BE4FE007BE4FE007BE4FE007BE4
+      FE0092929266A8AAAFFFC4D0D8FFC1CBD1FFC3CCD1FFC7CDD1FFCACED0FFCDCE
+      D0FFD1D1D2FFCECCCDFF929292E4FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00949495F9D5D3D4FFD5D2D4FFD3D2D4FFD1D1D4FFCDD0D4FFCAD0
+      D4FFC7CFD4FFC4CED5FF9A9B9CFF9494951C7BE4FE007BE4FE007BE4FE007BE4
+      FD009494951C9A9B9CFFC2CED5FFC3CED4FFC6CFD4FFCAD0D4FFCDD0D4FFD1D1
+      D4FFD2D2D3FFD4D3D4FF949495F9FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00969697F9D6D4D5FFE5E4E4FFE4E3E4FFE2E2E4FFE0E2E4FFDEE2
+      E4FFDCE1E4FFDCE2E7FFBFBFC0FFEDEDED6BFDFFFF5AFDFFFF5AFFFFFF59FFFF
+      FF59EDEDED6BBFBFC0FFDAE2E7FFDAE0E4FFDBE1E4FFDEE2E4FFE0E2E4FFE2E2
+      E4FFE4E4E5FFD7D4D5FF969697F9FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00989899E4D2D0D1FFE6E5E5FFE5E4E5FFE3E4E5FFE1E4E5FFDFE3
+      E5FFDDE2E6FFDFE4E9FFCBCDCFFFD3D3D39BFDFFFF5AFDFFFF5AFFFFFF59FFFF
+      FF59D3D3D39BCACCCFFFDCE4E8FFDBE2E6FFDDE2E6FFE0E3E6FFE2E4E6FFE4E4
+      E6FFE7E6E7FFD9D6D7FF989899E4FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF009B9B9BBDC9C8C9FFE5E5E5FFE6E6E6FFE5E5E6FFE3E5E6FFE1E4
+      E6FFE0E4E7FFE1E6EAFFD9DEE2FFC4C4C6FFD3D4D49DECEDED6DEEEEEE6BD4D4
+      D49BC4C4C6FFD6DDE0FFDDE5E9FFDDE4E6FFE0E4E7FFE2E4E7FFE4E5E7FFE6E5
+      E7FFE9E8E9FFCFCDCEFF9B9B9BBDFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF009D9D9D78BBBBBBFFE6E5E6FFE8E8E8FFE7E8E8FFE6E7E8FFE4E6
+      E8FFE2E6E9FFE2E6EAFFE5EAEDFFDCE0E5FFCFD0D2FFC3C4C4FFC4C4C5FFCFD1
+      D3FFD9E0E4FFE0E9ECFFDFE6E9FFE0E6E8FFE2E6E8FFE4E6E9FFE6E7E9FFE8E8
+      E9FFEBEAEBFFBDBCBCFF9D9D9D78FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF009F9F9F21A8A8A8FFE3E2E3FFEBEBEBFFEAE9EAFFE8E8EAFFE6E8
+      EAFFE5E8EAFFE5E8EAFFE6E8ECFFE8E9EEFFE8E8EEFFE7EBF0FFE6EDF2FFE5EB
+      EFFFE1E9EDFFE1E8EAFFE1E7EAFFE3E8EAFFE4E8EAFFE7E8EAFFE8E8EAFFECEB
+      EBFFE9E7E8FFA8A8A8FF9F9F9F21FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00A1A1A100A1A1A19FCBCACBFFEDECEDFFEBEAEBFFEAEAEBFFE9EA
+      EBFFE8EAEBFFE8E9EBFFE9E9EDFFEAE6EBFFE7E4E9FFE5E5EAFFE4E8ECFFE3E8
+      EBFFE3E8EBFFE3E8EBFFE4E9EBFFE6E9EBFFE8EAEBFFE9EAEBFFEAEAEBFFEFEE
+      EFFFCFCFCFFFA1A1A19FA1A1A100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00A3A3A300A3A3A336AAAAAAFFE8E6E7FFEFEEEFFFECEBECFFECEB
+      ECFFEBEBECFFEBEBEDFFECEAEDFFEBE6EBFFE9E4E9FFE8E7EAFFE7EAEDFFE6EA
+      ECFFE6EAECFFE6EAECFFE7EAEBFFE8EBEBFFEAEBECFFEBEBECFFEFEEEFFFECEB
+      EBFFAAAAAAFFA3A3A336A3A3A300FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00A4A4A400A4A4A400A4A4A48ABAB9BAFFF1EFEFFFF1EFEFFFEFED
+      EDFFEFEDEEFFEFECEEFFEFEBEEFFEEE6EAFFEAE6E8FFE9E6E9FFEAEBEDFFEAEB
+      EDFFEAEBEDFFEAECEDFFEAECEDFFEBECEDFFECEDEDFFEFEFEFFFF1F1F1FFBDBC
+      BCFFA4A4A48AFFFFFF00A4A4A400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00A6A6A600A6A6A600FFFFFF00A6A6A696C7C5C5FFF4F1F1FFF3F0
+      F1FFF2EDEFFFF2EDEFFFF1EBEDFFEFE6E8FFEDE6E8FFEBE7EAFFECEBEDFFEBED
+      EEFFECEDEDFFECEDEDFFEDEDEDFFEDEDEDFFF1F0F0FFF3F3F3FFCACACAFFA6A6
+      A696FFFFFF00FFFFFF00A6A6A600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00A7A7A800A7A7A800FFFFFF00A7A7A806A7A7A896BFBDBEFFF2F0
+      F2FFF6F3F4FFF5EFF1FFF3EAEBFFF1E7E9FFEFE7E9FFEDE7E8FFEFEDEEFFEFEF
+      EFFFEFEFEFFFEFEFEFFFF1F0F0FFF3F3F3FFF2F1F1FFC1C0C1FFA7A7A896A7A7
+      A806FFFFFF00FFFFFF00A7A7A800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00A9A9A900A9A9A900FFFFFF00FFFFFF00FFFFFF00A9A9A98AB1B1
+      B1FFDAD7D8FFF8F3F3FFF9F2F3FFF5EDEFFFF3EAEBFFF1EAEBFFF1EDEEFFF3F1
+      F2FFF4F3F3FFF6F4F4FFF5F4F4FFDADADAFFB1B1B1FFA9A9A98AFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00A9A9A900FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00AAAAAA00AAAAAA00FFFFFF00FFFFFF00FFFFFF00FFFFFF00AAAA
+      AA33AAAAAA9CB2B2B2FFCBC9CAFFE4E0E1FFEAE6E7FFF7F2F3FFF7F4F5FFEAE9
+      EAFFE3E2E2FFCAC9C9FFB2B2B2FFAAAAAA9CAAAAAA33FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00AAAAAA00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00ABABAB00ABABAB00ABABAB00ABABAB00ABABAB00ABABAB00ABAB
+      AB00ABABAB00ABABAB1BABABAB6CABABABB7ABABABCCABABABFCABABABFCABAB
+      ABCCABABABB7ABABAB6CABABAB1BABABAB00ABABAB00ABABAB00ABABAB00ABAB
+      AB00ABABAB00ABABAB00ABABAB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
+    }
+    OnClick = bbCopyClick
+    TabOrder = 3
+  end
+  object bbClose: TBitBtn
+    Left = 160
+    Height = 49
+    Top = 440
+    Width = 114
+    Anchors = [akLeft, akBottom]
+    Caption = '&Close'
+    Kind = bkClose
+    OnClick = bbCloseClick
+    TabOrder = 4
+  end
+  object laDatabase1: TLabel
+    Left = 12
+    Height = 34
+    Top = 174
+    Width = 148
+    AutoSize = False
+    Caption = 'Make sure it is already exist with the same structure'
+    Font.Color = 4605510
+    Font.Height = -11
+    ParentColor = False
+    ParentFont = False
+    WordWrap = True
+  end
+  object Label5: TLabel
+    Left = 9
+    Height = 18
+    Top = 224
+    Width = 239
+    Caption = 'select statement from Source Table'
+    ParentColor = False
+  end
+  inline syScript: TSynEdit
+    Left = 8
+    Height = 161
+    Top = 264
+    Width = 593
+    Anchors = [akTop, akLeft, akRight, akBottom]
+    Font.Height = -13
+    Font.Name = 'Courier New'
+    Font.Pitch = fpFixed
+    Font.Quality = fqNonAntialiased
+    ParentColor = False
+    ParentFont = False
+    TabOrder = 5
+    Gutter.Width = 57
+    Gutter.MouseActions = <    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbLeft
+        ClickCount = ccAny
+        ClickDir = cdDown
+        Command = 13
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbRight
+        ClickCount = ccSingle
+        ClickDir = cdUp
+        Command = 12
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end>
+    RightGutter.Width = 0
+    RightGutter.MouseActions = <    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbLeft
+        ClickCount = ccAny
+        ClickDir = cdDown
+        Command = 13
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbRight
+        ClickCount = ccSingle
+        ClickDir = cdUp
+        Command = 12
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end>
+    Highlighter = SynSQLSyn1
+    Keystrokes = <    
+      item
+        Command = ecUp
+        ShortCut = 38
+      end    
+      item
+        Command = ecSelUp
+        ShortCut = 8230
+      end    
+      item
+        Command = ecScrollUp
+        ShortCut = 16422
+      end    
+      item
+        Command = ecDown
+        ShortCut = 40
+      end    
+      item
+        Command = ecSelDown
+        ShortCut = 8232
+      end    
+      item
+        Command = ecScrollDown
+        ShortCut = 16424
+      end    
+      item
+        Command = ecLeft
+        ShortCut = 37
+      end    
+      item
+        Command = ecSelLeft
+        ShortCut = 8229
+      end    
+      item
+        Command = ecWordLeft
+        ShortCut = 16421
+      end    
+      item
+        Command = ecSelWordLeft
+        ShortCut = 24613
+      end    
+      item
+        Command = ecRight
+        ShortCut = 39
+      end    
+      item
+        Command = ecSelRight
+        ShortCut = 8231
+      end    
+      item
+        Command = ecWordRight
+        ShortCut = 16423
+      end    
+      item
+        Command = ecSelWordRight
+        ShortCut = 24615
+      end    
+      item
+        Command = ecPageDown
+        ShortCut = 34
+      end    
+      item
+        Command = ecSelPageDown
+        ShortCut = 8226
+      end    
+      item
+        Command = ecPageBottom
+        ShortCut = 16418
+      end    
+      item
+        Command = ecSelPageBottom
+        ShortCut = 24610
+      end    
+      item
+        Command = ecPageUp
+        ShortCut = 33
+      end    
+      item
+        Command = ecSelPageUp
+        ShortCut = 8225
+      end    
+      item
+        Command = ecPageTop
+        ShortCut = 16417
+      end    
+      item
+        Command = ecSelPageTop
+        ShortCut = 24609
+      end    
+      item
+        Command = ecLineStart
+        ShortCut = 36
+      end    
+      item
+        Command = ecSelLineStart
+        ShortCut = 8228
+      end    
+      item
+        Command = ecEditorTop
+        ShortCut = 16420
+      end    
+      item
+        Command = ecSelEditorTop
+        ShortCut = 24612
+      end    
+      item
+        Command = ecLineEnd
+        ShortCut = 35
+      end    
+      item
+        Command = ecSelLineEnd
+        ShortCut = 8227
+      end    
+      item
+        Command = ecEditorBottom
+        ShortCut = 16419
+      end    
+      item
+        Command = ecSelEditorBottom
+        ShortCut = 24611
+      end    
+      item
+        Command = ecToggleMode
+        ShortCut = 45
+      end    
+      item
+        Command = ecCopy
+        ShortCut = 16429
+      end    
+      item
+        Command = ecPaste
+        ShortCut = 8237
+      end    
+      item
+        Command = ecDeleteChar
+        ShortCut = 46
+      end    
+      item
+        Command = ecCut
+        ShortCut = 8238
+      end    
+      item
+        Command = ecDeleteLastChar
+        ShortCut = 8
+      end    
+      item
+        Command = ecDeleteLastChar
+        ShortCut = 8200
+      end    
+      item
+        Command = ecDeleteLastWord
+        ShortCut = 16392
+      end    
+      item
+        Command = ecUndo
+        ShortCut = 32776
+      end    
+      item
+        Command = ecRedo
+        ShortCut = 40968
+      end    
+      item
+        Command = ecLineBreak
+        ShortCut = 13
+      end    
+      item
+        Command = ecSelectAll
+        ShortCut = 16449
+      end    
+      item
+        Command = ecCopy
+        ShortCut = 16451
+      end    
+      item
+        Command = ecBlockIndent
+        ShortCut = 24649
+      end    
+      item
+        Command = ecLineBreak
+        ShortCut = 16461
+      end    
+      item
+        Command = ecInsertLine
+        ShortCut = 16462
+      end    
+      item
+        Command = ecDeleteWord
+        ShortCut = 16468
+      end    
+      item
+        Command = ecBlockUnindent
+        ShortCut = 24661
+      end    
+      item
+        Command = ecPaste
+        ShortCut = 16470
+      end    
+      item
+        Command = ecCut
+        ShortCut = 16472
+      end    
+      item
+        Command = ecDeleteLine
+        ShortCut = 16473
+      end    
+      item
+        Command = ecDeleteEOL
+        ShortCut = 24665
+      end    
+      item
+        Command = ecUndo
+        ShortCut = 16474
+      end    
+      item
+        Command = ecRedo
+        ShortCut = 24666
+      end    
+      item
+        Command = ecGotoMarker0
+        ShortCut = 16432
+      end    
+      item
+        Command = ecGotoMarker1
+        ShortCut = 16433
+      end    
+      item
+        Command = ecGotoMarker2
+        ShortCut = 16434
+      end    
+      item
+        Command = ecGotoMarker3
+        ShortCut = 16435
+      end    
+      item
+        Command = ecGotoMarker4
+        ShortCut = 16436
+      end    
+      item
+        Command = ecGotoMarker5
+        ShortCut = 16437
+      end    
+      item
+        Command = ecGotoMarker6
+        ShortCut = 16438
+      end    
+      item
+        Command = ecGotoMarker7
+        ShortCut = 16439
+      end    
+      item
+        Command = ecGotoMarker8
+        ShortCut = 16440
+      end    
+      item
+        Command = ecGotoMarker9
+        ShortCut = 16441
+      end    
+      item
+        Command = ecSetMarker0
+        ShortCut = 24624
+      end    
+      item
+        Command = ecSetMarker1
+        ShortCut = 24625
+      end    
+      item
+        Command = ecSetMarker2
+        ShortCut = 24626
+      end    
+      item
+        Command = ecSetMarker3
+        ShortCut = 24627
+      end    
+      item
+        Command = ecSetMarker4
+        ShortCut = 24628
+      end    
+      item
+        Command = ecSetMarker5
+        ShortCut = 24629
+      end    
+      item
+        Command = ecSetMarker6
+        ShortCut = 24630
+      end    
+      item
+        Command = ecSetMarker7
+        ShortCut = 24631
+      end    
+      item
+        Command = ecSetMarker8
+        ShortCut = 24632
+      end    
+      item
+        Command = ecSetMarker9
+        ShortCut = 24633
+      end    
+      item
+        Command = EcFoldLevel1
+        ShortCut = 41009
+      end    
+      item
+        Command = EcFoldLevel2
+        ShortCut = 41010
+      end    
+      item
+        Command = EcFoldLevel1
+        ShortCut = 41011
+      end    
+      item
+        Command = EcFoldLevel1
+        ShortCut = 41012
+      end    
+      item
+        Command = EcFoldLevel1
+        ShortCut = 41013
+      end    
+      item
+        Command = EcFoldLevel6
+        ShortCut = 41014
+      end    
+      item
+        Command = EcFoldLevel7
+        ShortCut = 41015
+      end    
+      item
+        Command = EcFoldLevel8
+        ShortCut = 41016
+      end    
+      item
+        Command = EcFoldLevel9
+        ShortCut = 41017
+      end    
+      item
+        Command = EcFoldLevel0
+        ShortCut = 41008
+      end    
+      item
+        Command = EcFoldCurrent
+        ShortCut = 41005
+      end    
+      item
+        Command = EcUnFoldCurrent
+        ShortCut = 41003
+      end    
+      item
+        Command = EcToggleMarkupWord
+        ShortCut = 32845
+      end    
+      item
+        Command = ecNormalSelect
+        ShortCut = 24654
+      end    
+      item
+        Command = ecColumnSelect
+        ShortCut = 24643
+      end    
+      item
+        Command = ecLineSelect
+        ShortCut = 24652
+      end    
+      item
+        Command = ecTab
+        ShortCut = 9
+      end    
+      item
+        Command = ecShiftTab
+        ShortCut = 8201
+      end    
+      item
+        Command = ecMatchBracket
+        ShortCut = 24642
+      end    
+      item
+        Command = ecColSelUp
+        ShortCut = 40998
+      end    
+      item
+        Command = ecColSelDown
+        ShortCut = 41000
+      end    
+      item
+        Command = ecColSelLeft
+        ShortCut = 40997
+      end    
+      item
+        Command = ecColSelRight
+        ShortCut = 40999
+      end    
+      item
+        Command = ecColSelPageDown
+        ShortCut = 40994
+      end    
+      item
+        Command = ecColSelPageBottom
+        ShortCut = 57378
+      end    
+      item
+        Command = ecColSelPageUp
+        ShortCut = 40993
+      end    
+      item
+        Command = ecColSelPageTop
+        ShortCut = 57377
+      end    
+      item
+        Command = ecColSelLineStart
+        ShortCut = 40996
+      end    
+      item
+        Command = ecColSelLineEnd
+        ShortCut = 40995
+      end    
+      item
+        Command = ecColSelEditorTop
+        ShortCut = 57380
+      end    
+      item
+        Command = ecColSelEditorBottom
+        ShortCut = 57379
+      end>
+    MouseActions = <    
+      item
+        Shift = []
+        ShiftMask = [ssShift, ssAlt]
+        Button = mbLeft
+        ClickCount = ccSingle
+        ClickDir = cdDown
+        Command = 1
+        MoveCaret = True
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = [ssShift]
+        ShiftMask = [ssShift, ssAlt]
+        Button = mbLeft
+        ClickCount = ccSingle
+        ClickDir = cdDown
+        Command = 1
+        MoveCaret = True
+        Option = 1
+        Priority = 0
+      end    
+      item
+        Shift = [ssAlt]
+        ShiftMask = [ssShift, ssAlt]
+        Button = mbLeft
+        ClickCount = ccSingle
+        ClickDir = cdDown
+        Command = 3
+        MoveCaret = True
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = [ssShift, ssAlt]
+        ShiftMask = [ssShift, ssAlt]
+        Button = mbLeft
+        ClickCount = ccSingle
+        ClickDir = cdDown
+        Command = 3
+        MoveCaret = True
+        Option = 1
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbRight
+        ClickCount = ccSingle
+        ClickDir = cdUp
+        Command = 12
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbLeft
+        ClickCount = ccDouble
+        ClickDir = cdDown
+        Command = 6
+        MoveCaret = True
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbLeft
+        ClickCount = ccTriple
+        ClickDir = cdDown
+        Command = 7
+        MoveCaret = True
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbLeft
+        ClickCount = ccQuad
+        ClickDir = cdDown
+        Command = 8
+        MoveCaret = True
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbMiddle
+        ClickCount = ccSingle
+        ClickDir = cdDown
+        Command = 10
+        MoveCaret = True
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = [ssCtrl]
+        ShiftMask = [ssShift, ssAlt, ssCtrl]
+        Button = mbLeft
+        ClickCount = ccSingle
+        ClickDir = cdUp
+        Command = 11
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end>
+    MouseSelActions = <    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbLeft
+        ClickCount = ccSingle
+        ClickDir = cdDown
+        Command = 9
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end>
+    RightEdge = 65
+    ScrollBars = ssAutoBoth
+    BracketHighlightStyle = sbhsBoth
+    inline TSynGutterPartList
+      object TSynGutterMarks
+        Width = 24
+      end
+      object TSynGutterLineNumber
+        Width = 17
+        MouseActions = <>
+        MarkupInfo.Background = clBtnFace
+        MarkupInfo.Foreground = clNone
+        DigitCount = 2
+        ShowOnlyLineNumbersMultiplesOf = 1
+        ZeroStart = False
+        LeadingZeros = False
+      end
+      object TSynGutterChanges
+        Width = 4
+        ModifiedColor = 59900
+        SavedColor = clGreen
+      end
+      object TSynGutterSeparator
+        Width = 2
+      end
+      object TSynGutterCodeFolding
+        MouseActions = <        
+          item
+            Shift = []
+            ShiftMask = []
+            Button = mbRight
+            ClickCount = ccSingle
+            ClickDir = cdUp
+            Command = 16
+            MoveCaret = False
+            Option = 0
+            Priority = 0
+          end        
+          item
+            Shift = []
+            ShiftMask = [ssShift]
+            Button = mbMiddle
+            ClickCount = ccAny
+            ClickDir = cdDown
+            Command = 14
+            MoveCaret = False
+            Option = 0
+            Priority = 0
+          end        
+          item
+            Shift = [ssShift]
+            ShiftMask = [ssShift]
+            Button = mbMiddle
+            ClickCount = ccAny
+            ClickDir = cdDown
+            Command = 14
+            MoveCaret = False
+            Option = 1
+            Priority = 0
+          end        
+          item
+            Shift = []
+            ShiftMask = []
+            Button = mbLeft
+            ClickCount = ccAny
+            ClickDir = cdDown
+            Command = 0
+            MoveCaret = False
+            Option = 0
+            Priority = 0
+          end>
+        MarkupInfo.Background = clNone
+        MarkupInfo.Foreground = clGray
+        MouseActionsExpanded = <        
+          item
+            Shift = []
+            ShiftMask = []
+            Button = mbLeft
+            ClickCount = ccAny
+            ClickDir = cdDown
+            Command = 14
+            MoveCaret = False
+            Option = 0
+            Priority = 0
+          end>
+        MouseActionsCollapsed = <        
+          item
+            Shift = [ssCtrl]
+            ShiftMask = [ssCtrl]
+            Button = mbLeft
+            ClickCount = ccAny
+            ClickDir = cdDown
+            Command = 15
+            MoveCaret = False
+            Option = 0
+            Priority = 0
+          end        
+          item
+            Shift = []
+            ShiftMask = [ssCtrl]
+            Button = mbLeft
+            ClickCount = ccAny
+            ClickDir = cdDown
+            Command = 15
+            MoveCaret = False
+            Option = 1
+            Priority = 0
+          end>
+      end
+    end
+  end
+  object SynSQLSyn1: TSynSQLSyn
+    DefaultFilter = 'SQL Files (*.sql)|*.sql'
+    Enabled = False
+    CommentAttri.Foreground = clTeal
+    CommentAttri.FrameEdges = sfeAround
+    DataTypeAttri.FrameEdges = sfeAround
+    DefaultPackageAttri.FrameEdges = sfeAround
+    ExceptionAttri.FrameEdges = sfeAround
+    FunctionAttri.FrameEdges = sfeAround
+    IdentifierAttri.Foreground = 16718385
+    IdentifierAttri.FrameEdges = sfeAround
+    KeyAttri.FrameEdges = sfeAround
+    NumberAttri.Foreground = 3421238
+    NumberAttri.FrameEdges = sfeAround
+    PLSQLAttri.FrameEdges = sfeAround
+    SpaceAttri.FrameEdges = sfeAround
+    SQLPlusAttri.FrameEdges = sfeAround
+    StringAttri.Foreground = 1052833
+    StringAttri.FrameEdges = sfeAround
+    SymbolAttri.Foreground = 526434
+    SymbolAttri.FrameEdges = sfeAround
+    TableNameAttri.Foreground = clNavy
+    TableNameAttri.FrameEdges = sfeAround
+    TableNameAttri.Style = [fsBold]
+    VariableAttri.FrameEdges = sfeAround
+    SQLDialect = sqlSybase
+    left = 460
+    top = 36
+  end
+end

+ 392 - 0
copytable.lrs

@@ -0,0 +1,392 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmCopyTable','FORMDATA',[
+  'TPF0'#12'TfmCopyTable'#11'fmCopyTable'#4'Left'#3'`'#1#6'Height'#3#253#1#3'To'
+  +'p'#3#207#0#5'Width'#3'b'#2#7'Caption'#6#10'Copy Table'#12'ClientHeight'#3
+  +#253#1#11'ClientWidth'#3'b'#2#8'Position'#7#14'poScreenCenter'#10'LCLVersion'
+  +#6#6'0.9.30'#0#6'TLabel'#6'Label1'#4'Left'#2#9#6'Height'#2#18#3'Top'#2#19#5
+  +'Width'#2'r'#7'Caption'#6#15'Source Database'#11'ParentColor'#8#0#0#6'TLabel'
+  +#6'Label2'#4'Left'#2#9#6'Height'#2#18#3'Top'#2'8'#5'Width'#2'V'#7'Caption'#6
+  +#12'Soruce Table'#11'ParentColor'#8#0#0#6'TLabel'#16'laSourceDatabase'#4'Lef'
+  +'t'#3#183#0#6'Height'#2#18#3'Top'#2#16#5'Width'#2'y'#7'Caption'#6#15'Source '
+  +'Database'#10'Font.Style'#11#6'fsBold'#0#11'ParentColor'#8#10'ParentFont'#8#0
+  +#0#6'TLabel'#6'Label3'#4'Left'#2#9#6'Height'#2#18#3'Top'#2'['#5'Width'#3#146
+  +#0#7'Caption'#6#20'Destination Database'#11'ParentColor'#8#0#0#6'TLabel'#6'L'
+  +'abel4'#4'Left'#2#9#6'Height'#2#18#3'Top'#3#152#0#5'Width'#2'v'#7'Caption'#6
+  +#17'Destination Table'#11'ParentColor'#8#0#0#9'TComboBox'#13'cbSourceTable'#4
+  +'Left'#3#183#0#6'Height'#2#31#3'Top'#2'.'#5'Width'#3#177#0#10'ItemHeight'#2#0
+  +#8'OnChange'#7#19'cbSourceTableChange'#5'Style'#7#14'csDropDownList'#8'TabOr'
+  +'der'#2#0#0#0#9'TComboBox'#14'cbDestDatabase'#4'Left'#3#183#0#6'Height'#2#31
+  +#3'Top'#2'T'#5'Width'#3#217#0#10'ItemHeight'#2#0#8'OnChange'#7#20'cbDestData'
+  +'baseChange'#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#1#0#0#9'TComboBox'
+  +#11'cbDestTable'#4'Left'#3#183#0#6'Height'#2#31#3'Top'#3#151#0#5'Width'#3#177
+  +#0#10'ItemHeight'#2#0#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#2#0#0#6'TL'
+  +'abel'#10'laDatabase'#4'Left'#3#184#0#6'Height'#2#15#3'Top'#2'x'#5'Width'#2
+  +'l'#7'Caption'#6#20'Destination Database'#11'Font.Height'#2#245#11'ParentCol'
+  +'or'#8#10'ParentFont'#8#0#0#7'TBitBtn'#6'bbCopy'#4'Left'#2#12#6'Height'#2'1'
+  +#3'Top'#3#184#1#5'Width'#2's'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Captio'
+  +'n'#6#4'Copy'#10'Glyph.Data'#10':'#16#0#0'6'#16#0#0'BM6'#16#0#0#0#0#0#0'6'#0
+  +#0#0'('#0#0#0' '#0#0#0' '#0#0#0#1#0' '#0#0#0#0#0#0#16#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'}}~'#0'}}~'#0'}}~'#0
+  +#0#0#0#1#0#0#0#1#128#128#128#2#128#128#128#2#128#128#128#2'UUU'#3'@@@'#4'fff'
+  +#5'fff'#5'UUU'#6'UUU'#6'UUU'#6'fff'#5#128#128#128#4'UUU'#3#128#128#128#2#128
+  +#128#128#2#128#128#128#2#0#0#0#1#0#0#0#1'}}~'#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'}}~'#0
+  +#0#0#0#1#128#128#128#2'fff'#5'MMM'#10'[[['#14'ZZZ'#17'UUU'#18'YYY'#20'UUU'#24
+  +'RRR'#28'XXX'#29'UUU'#30'UUU'#30'UUU'#30'XXX'#29'XXX'#26'UUU'#21'QQQ'#19'ZZZ'
+  +#17'UUU'#15'UUU'#12'III'#7'UUU'#3#0#0#0#1'}}~'#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'~~'#127#0#128#128
+  +#128#2'mmm'#7'UUU'#18'UUU!WWW/WWW8YYY<cccRsss'#144'zz{'#202'{{|'#220'}}~'#245
+  +'}}~'#245'{{|'#220'zz{'#203'rrs'#146'ddeSXXX=YYY9ZZZ3WWW&UUU'#24']]]'#11'@@@'
+  +#4#0#0#0#1#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#127#127#128#0'UUU'#3']]]'#11'XXX'#29'WWW5XXXKgghvwwx'
+  +#189#135#135#136#255#164#162#164#255#193#187#191#255#202#196#201#255#216#205
+  +#212#255#219#205#213#255#207#194#202#255#200#187#197#255#169#161#167#255#137
+  +#135#137#255'wwx'#190'gghyXXXQVVV>WWW&UUU'#18'UUU'#6#0#0#0#1#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#129
+  +#129#129#0#128#128#128#2'mmm'#7'UUU'#18'UUU!{{{'#157#135#135#135#255#180#179
+  +#180#255#212#209#211#255#209#205#208#255#202#196#200#255#197#188#193#255#197
+  +#184#191#255#203#185#196#255#208#186#200#255#218#193#208#255#227#203#220#255
+  +#229#209#223#255#190#179#187#255#136#135#136#255'{{{'#159'WWW&UUU'#24']]]'#11
+  +'@@@'#4#0#0#0#1#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#130#130#131#0#0#0#0#1#128#128#128#2'fff'#5#129#129
+  +#130#151#153#153#154#255#207#206#207#255#205#202#204#255#196#194#196#255#192
+  +#190#193#255#190#186#191#255#189#183#187#255#192#183#189#255#197#183#192#255
+  +#203#183#197#255#209#184#203#255#217#189#211#255#216#194#211#255#220#202#215
+  +#255#219#206#216#255#157#153#156#255#129#129#130#152'III'#7'UUU'#3#0#0#0#1
+  +#130#130#131#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#132#132#133#0#132#132#133#0#132#132#133#0#132#132
+  +#133#147#163#162#163#255#208#206#208#255#199#199#200#255#192#192#194#255#192
+  +#191#194#255#191#191#194#255#189#190#194#255#189#186#190#255#190#186#192#255
+  +#194#186#194#255#201#185#198#255#212#189#209#255#212#191#210#255#207#191#206
+  +#255#205#191#203#255#209#199#208#255#215#206#213#255#165#162#165#255#132#132
+  +#133#147'{'#228#254#0#132#132#133#0#132#132#133#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#133#133#134#0#133
+  +#133#134#0#133#133#134#135#155#154#155#255#209#207#208#255#201#199#201#255
+  +#195#194#196#255#193#193#196#255#192#193#196#255#190#193#196#255#190#191#196
+  +#255#189#189#194#255#190#188#195#255#194#188#198#255#201#188#203#255#213#192
+  ,#214#255#207#192#209#255#202#193#204#255#200#193#202#255#199#193#200#255#205
+  +#199#204#255#211#207#211#255#156#154#156#255#133#133#134#135#133#133#134#0
+  +#133#133#134#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#135#135#136#0#135#135#136'-'#142#142#143#255#206#204
+  +#205#255#205#202#204#255#197#196#198#255#195#195#198#255#193#195#198#255#191
+  +#194#198#255#189#194#198#255#189#194#199#255#187#191#197#255#190#190#199#255
+  +#195#190#203#255#203#191#209#255#208#193#214#255#202#194#208#255#198#194#204
+  +#255#196#194#202#255#196#195#200#255#197#195#200#255#205#202#205#255#207#204
+  +#206#255#143#143#144#255#135#135#136'-'#135#135#136#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#137#137#138#0
+  +#137#137#138#150#181#179#180#255#209#206#208#255#201#198#201#255#199#197#201
+  +#255#196#197#200#255#193#196#200#255#191#196#200#255#190#196#200#255#188#195
+  +#201#255#188#194#202#255#192#193#205#255#196#192#208#255#203#194#213#255#204
+  +#195#214#255#198#195#209#255#195#196#205#255#194#196#202#255#194#196#201#255
+  +#196#197#200#255#198#197#200#255#207#206#207#255#180#179#180#255#137#137#138
+  +#150#137#137#138#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#139#139#140#27#147#146#147#255#211#207#209#255
+  +#208#203#206#255#203#200#203#255#200#199#203#255#197#199#203#255#194#198#202
+  +#255#192#198#202#255#191#200#206#255#197#206#214#255#205#214#223#255#210#219
+  +#229#255#212#219#232#255#212#214#230#255#205#206#221#255#198#199#212#255#193
+  +#197#206#255#193#198#204#255#194#198#202#255#196#199#202#255#197#199#202#255
+  +#203#203#205#255#209#207#209#255#147#146#147#255#139#139#140#27#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#141
+  +#141#142'x'#174#173#174#255#212#207#210#255#206#202#205#255#204#201#205#255
+  +#201#201#205#255#197#200#205#255#194#200#204#255#194#202#208#255#199#210#216
+  +#255#188#199#205#255#171#174#178#255#150#151#152#255#150#151#152#255#173#174
+  +#180#255#192#198#208#255#202#209#221#255#193#201#210#255#192#199#205#255#193
+  +#200#204#255#195#200#204#255#198#201#203#255#201#201#203#255#208#207#208#255
+  +#173#173#174#255#141#141#142'x'#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#144#144#144#186#194#191#193#255#212
+  +#207#210#255#208#204#207#255#205#203#207#255#202#203#207#255#198#202#207#255
+  +#195#201#206#255#197#207#213#255#186#195#200#255#155#156#158#255#144#144#144
+  +'f'#144#144#144#28#144#144#144#28#144#144#144'f'#156#156#158#255#186#194#202
+  +#255#196#206#215#255#191#201#207#255#194#201#206#255#196#202#205#255#199#203
+  +#205#255#202#203#205#255#208#207#208#255#193#191#192#255#144#144#144#186#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#146#146#146#228#207#204#206#255#213#209#211#255#209#207#210#255#207
+  +#206#210#255#204#206#210#255#200#205#209#255#196#204#209#255#199#208#215#255
+  +#168#171#174#255#146#146#146'f{'#228#254#0'{'#228#254#0'{'#228#254#0'{'#228
+  +#254#0#146#146#146'f'#168#170#175#255#196#208#216#255#193#203#209#255#195#204
+  +#209#255#199#205#209#255#202#206#208#255#205#206#208#255#209#209#210#255#206
+  +#204#205#255#146#146#146#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#148#148#149#249#213#211#212#255#213
+  +#210#212#255#211#210#212#255#209#209#212#255#205#208#212#255#202#208#212#255
+  +#199#207#212#255#196#206#213#255#154#155#156#255#148#148#149#28'{'#228#254#0
+  +'{'#228#254#0'{'#228#254#0'{'#228#253#0#148#148#149#28#154#155#156#255#194
+  +#206#213#255#195#206#212#255#198#207#212#255#202#208#212#255#205#208#212#255
+  +#209#209#212#255#210#210#211#255#212#211#212#255#148#148#149#249#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#150
+  +#150#151#249#214#212#213#255#229#228#228#255#228#227#228#255#226#226#228#255
+  +#224#226#228#255#222#226#228#255#220#225#228#255#220#226#231#255#191#191#192
+  +#255#237#237#237'k'#253#255#255'Z'#253#255#255'Z'#255#255#255'Y'#255#255#255
+  +'Y'#237#237#237'k'#191#191#192#255#218#226#231#255#218#224#228#255#219#225
+  +#228#255#222#226#228#255#224#226#228#255#226#226#228#255#228#228#229#255#215
+  +#212#213#255#150#150#151#249#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#152#152#153#228#210#208#209#255#230
+  +#229#229#255#229#228#229#255#227#228#229#255#225#228#229#255#223#227#229#255
+  +#221#226#230#255#223#228#233#255#203#205#207#255#211#211#211#155#253#255#255
+  +'Z'#253#255#255'Z'#255#255#255'Y'#255#255#255'Y'#211#211#211#155#202#204#207
+  +#255#220#228#232#255#219#226#230#255#221#226#230#255#224#227#230#255#226#228
+  +#230#255#228#228#230#255#231#230#231#255#217#214#215#255#152#152#153#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#155#155#155#189#201#200#201#255#229#229#229#255#230#230#230#255#229
+  +#229#230#255#227#229#230#255#225#228#230#255#224#228#231#255#225#230#234#255
+  ,#217#222#226#255#196#196#198#255#211#212#212#157#236#237#237'm'#238#238#238
+  +'k'#212#212#212#155#196#196#198#255#214#221#224#255#221#229#233#255#221#228
+  +#230#255#224#228#231#255#226#228#231#255#228#229#231#255#230#229#231#255#233
+  +#232#233#255#207#205#206#255#155#155#155#189#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#157#157#157'x'#187#187
+  +#187#255#230#229#230#255#232#232#232#255#231#232#232#255#230#231#232#255#228
+  +#230#232#255#226#230#233#255#226#230#234#255#229#234#237#255#220#224#229#255
+  +#207#208#210#255#195#196#196#255#196#196#197#255#207#209#211#255#217#224#228
+  +#255#224#233#236#255#223#230#233#255#224#230#232#255#226#230#232#255#228#230
+  +#233#255#230#231#233#255#232#232#233#255#235#234#235#255#189#188#188#255#157
+  +#157#157'x'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#159#159#159'!'#168#168#168#255#227#226#227#255#235#235
+  +#235#255#234#233#234#255#232#232#234#255#230#232#234#255#229#232#234#255#229
+  +#232#234#255#230#232#236#255#232#233#238#255#232#232#238#255#231#235#240#255
+  +#230#237#242#255#229#235#239#255#225#233#237#255#225#232#234#255#225#231#234
+  +#255#227#232#234#255#228#232#234#255#231#232#234#255#232#232#234#255#236#235
+  +#235#255#233#231#232#255#168#168#168#255#159#159#159'!'#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#161#161#161#0
+  +#161#161#161#159#203#202#203#255#237#236#237#255#235#234#235#255#234#234#235
+  +#255#233#234#235#255#232#234#235#255#232#233#235#255#233#233#237#255#234#230
+  +#235#255#231#228#233#255#229#229#234#255#228#232#236#255#227#232#235#255#227
+  +#232#235#255#227#232#235#255#228#233#235#255#230#233#235#255#232#234#235#255
+  +#233#234#235#255#234#234#235#255#239#238#239#255#207#207#207#255#161#161#161
+  +#159#161#161#161#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#163#163#163#0#163#163#163'6'#170#170#170#255#232
+  +#230#231#255#239#238#239#255#236#235#236#255#236#235#236#255#235#235#236#255
+  +#235#235#237#255#236#234#237#255#235#230#235#255#233#228#233#255#232#231#234
+  +#255#231#234#237#255#230#234#236#255#230#234#236#255#230#234#236#255#231#234
+  +#235#255#232#235#235#255#234#235#236#255#235#235#236#255#239#238#239#255#236
+  +#235#235#255#170#170#170#255#163#163#163'6'#163#163#163#0#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#164
+  +#164#0#164#164#164#0#164#164#164#138#186#185#186#255#241#239#239#255#241#239
+  +#239#255#239#237#237#255#239#237#238#255#239#236#238#255#239#235#238#255#238
+  +#230#234#255#234#230#232#255#233#230#233#255#234#235#237#255#234#235#237#255
+  +#234#235#237#255#234#236#237#255#234#236#237#255#235#236#237#255#236#237#237
+  +#255#239#239#239#255#241#241#241#255#189#188#188#255#164#164#164#138#255#255
+  +#255#0#164#164#164#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#166#166#166#0#166#166#166#0#255#255#255#0#166
+  +#166#166#150#199#197#197#255#244#241#241#255#243#240#241#255#242#237#239#255
+  +#242#237#239#255#241#235#237#255#239#230#232#255#237#230#232#255#235#231#234
+  +#255#236#235#237#255#235#237#238#255#236#237#237#255#236#237#237#255#237#237
+  +#237#255#237#237#237#255#241#240#240#255#243#243#243#255#202#202#202#255#166
+  +#166#166#150#255#255#255#0#255#255#255#0#166#166#166#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#167#167#168#0
+  +#167#167#168#0#255#255#255#0#167#167#168#6#167#167#168#150#191#189#190#255
+  +#242#240#242#255#246#243#244#255#245#239#241#255#243#234#235#255#241#231#233
+  +#255#239#231#233#255#237#231#232#255#239#237#238#255#239#239#239#255#239#239
+  +#239#255#239#239#239#255#241#240#240#255#243#243#243#255#242#241#241#255#193
+  +#192#193#255#167#167#168#150#167#167#168#6#255#255#255#0#255#255#255#0#167
+  +#167#168#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#169#169#169#0#169#169#169#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#169#169#169#138#177#177#177#255#218#215#216#255#248#243#243
+  +#255#249#242#243#255#245#237#239#255#243#234#235#255#241#234#235#255#241#237
+  +#238#255#243#241#242#255#244#243#243#255#246#244#244#255#245#244#244#255#218
+  +#218#218#255#177#177#177#255#169#169#169#138#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#169#169#169#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#170#170#170#0#170#170#170#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#170#170#170'3'#170
+  +#170#170#156#178#178#178#255#203#201#202#255#228#224#225#255#234#230#231#255
+  +#247#242#243#255#247#244#245#255#234#233#234#255#227#226#226#255#202#201#201
+  +#255#178#178#178#255#170#170#170#156#170#170#170'3'#255#255#255#0#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#170#170#170#0#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#171
+  +#171#0#171#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0
+  ,#171#171#171#0#171#171#171#0#171#171#171#27#171#171#171'l'#171#171#171#183
+  +#171#171#171#204#171#171#171#252#171#171#171#252#171#171#171#204#171#171#171
+  +#183#171#171#171'l'#171#171#171#27#171#171#171#0#171#171#171#0#171#171#171#0
+  +#171#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#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#11'bbCopyClick'#8'TabOrd'
+  +'er'#2#3#0#0#7'TBitBtn'#7'bbClose'#4'Left'#3#160#0#6'Height'#2'1'#3'Top'#3
+  +#184#1#5'Width'#2'r'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#6'&C'
+  +'lose'#4'Kind'#7#7'bkClose'#7'OnClick'#7#12'bbCloseClick'#8'TabOrder'#2#4#0#0
+  +#6'TLabel'#11'laDatabase1'#4'Left'#2#12#6'Height'#2'"'#3'Top'#3#174#0#5'Widt'
+  +'h'#3#148#0#8'AutoSize'#8#7'Caption'#6'5Make sure it is already exist with t'
+  +'he same structure'#10'Font.Color'#4'FFF'#0#11'Font.Height'#2#245#11'ParentC'
+  +'olor'#8#10'ParentFont'#8#8'WordWrap'#9#0#0#6'TLabel'#6'Label5'#4'Left'#2#9#6
+  +'Height'#2#18#3'Top'#3#224#0#5'Width'#3#239#0#7'Caption'#6'"select statement'
+  +' from Source Table'#11'ParentColor'#8#0#0#244#8'TSynEdit'#8'syScript'#4'Lef'
+  +'t'#2#8#6'Height'#3#161#0#3'Top'#3#8#1#5'Width'#3'Q'#2#7'Anchors'#11#5'akTop'
+  +#6'akLeft'#7'akRight'#8'akBottom'#0#11'Font.Height'#2#243#9'Font.Name'#6#11
+  +'Courier New'#10'Font.Pitch'#7#7'fpFixed'#12'Font.Quality'#7#16'fqNonAntiali'
+  +'ased'#11'ParentColor'#8#10'ParentFont'#8#8'TabOrder'#2#5#12'Gutter.Width'#2
+  +'9'#19'Gutter.MouseActions'#14#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7
+  +#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#13
+  +#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'
+  +#11#0#6'Button'#7#7'mbRight'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cd'
+  +'Up'#7'Command'#2#12#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#17'Rig'
+  +'htGutter.Width'#2#0#24'RightGutter.MouseActions'#14#1#5'Shift'#11#0#9'Shift'
+  +'Mask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6
+  +'cdDown'#7'Command'#2#13#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5
+  +'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#7'mbRight'#10'ClickCount'#7#8'ccS'
+  +'ingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2#12#9'MoveCaret'#8#6'Option'#2#0#8
+  +'Priority'#2#0#0#0#11'Highlighter'#7#10'SynSQLSyn1'#10'Keystrokes'#14#1#7'Co'
+  +'mmand'#7#4'ecUp'#8'ShortCut'#2'&'#0#1#7'Command'#7#7'ecSelUp'#8'ShortCut'#3
+  +'& '#0#1#7'Command'#7#10'ecScrollUp'#8'ShortCut'#3'&@'#0#1#7'Command'#7#6'ec'
+  +'Down'#8'ShortCut'#2'('#0#1#7'Command'#7#9'ecSelDown'#8'ShortCut'#3'( '#0#1#7
+  +'Command'#7#12'ecScrollDown'#8'ShortCut'#3'(@'#0#1#7'Command'#7#6'ecLeft'#8
+  +'ShortCut'#2'%'#0#1#7'Command'#7#9'ecSelLeft'#8'ShortCut'#3'% '#0#1#7'Comman'
+  +'d'#7#10'ecWordLeft'#8'ShortCut'#3'%@'#0#1#7'Command'#7#13'ecSelWordLeft'#8
+  +'ShortCut'#3'%`'#0#1#7'Command'#7#7'ecRight'#8'ShortCut'#2''''#0#1#7'Command'
+  +#7#10'ecSelRight'#8'ShortCut'#3''' '#0#1#7'Command'#7#11'ecWordRight'#8'Shor'
+  +'tCut'#3'''@'#0#1#7'Command'#7#14'ecSelWordRight'#8'ShortCut'#3'''`'#0#1#7'C'
+  +'ommand'#7#10'ecPageDown'#8'ShortCut'#2'"'#0#1#7'Command'#7#13'ecSelPageDown'
+  +#8'ShortCut'#3'" '#0#1#7'Command'#7#12'ecPageBottom'#8'ShortCut'#3'"@'#0#1#7
+  ,'Command'#7#15'ecSelPageBottom'#8'ShortCut'#3'"`'#0#1#7'Command'#7#8'ecPageU'
+  +'p'#8'ShortCut'#2'!'#0#1#7'Command'#7#11'ecSelPageUp'#8'ShortCut'#3'! '#0#1#7
+  +'Command'#7#9'ecPageTop'#8'ShortCut'#3'!@'#0#1#7'Command'#7#12'ecSelPageTop'
+  +#8'ShortCut'#3'!`'#0#1#7'Command'#7#11'ecLineStart'#8'ShortCut'#2'$'#0#1#7'C'
+  +'ommand'#7#14'ecSelLineStart'#8'ShortCut'#3'$ '#0#1#7'Command'#7#11'ecEditor'
+  +'Top'#8'ShortCut'#3'$@'#0#1#7'Command'#7#14'ecSelEditorTop'#8'ShortCut'#3'$`'
+  +#0#1#7'Command'#7#9'ecLineEnd'#8'ShortCut'#2'#'#0#1#7'Command'#7#12'ecSelLin'
+  +'eEnd'#8'ShortCut'#3'# '#0#1#7'Command'#7#14'ecEditorBottom'#8'ShortCut'#3'#'
+  +'@'#0#1#7'Command'#7#17'ecSelEditorBottom'#8'ShortCut'#3'#`'#0#1#7'Command'#7
+  +#12'ecToggleMode'#8'ShortCut'#2'-'#0#1#7'Command'#7#6'ecCopy'#8'ShortCut'#3
+  +'-@'#0#1#7'Command'#7#7'ecPaste'#8'ShortCut'#3'- '#0#1#7'Command'#7#12'ecDel'
+  +'eteChar'#8'ShortCut'#2'.'#0#1#7'Command'#7#5'ecCut'#8'ShortCut'#3'. '#0#1#7
+  +'Command'#7#16'ecDeleteLastChar'#8'ShortCut'#2#8#0#1#7'Command'#7#16'ecDelet'
+  +'eLastChar'#8'ShortCut'#3#8' '#0#1#7'Command'#7#16'ecDeleteLastWord'#8'Short'
+  +'Cut'#3#8'@'#0#1#7'Command'#7#6'ecUndo'#8'ShortCut'#4#8#128#0#0#0#1#7'Comman'
+  +'d'#7#6'ecRedo'#8'ShortCut'#4#8#160#0#0#0#1#7'Command'#7#11'ecLineBreak'#8'S'
+  +'hortCut'#2#13#0#1#7'Command'#7#11'ecSelectAll'#8'ShortCut'#3'A@'#0#1#7'Comm'
+  +'and'#7#6'ecCopy'#8'ShortCut'#3'C@'#0#1#7'Command'#7#13'ecBlockIndent'#8'Sho'
+  +'rtCut'#3'I`'#0#1#7'Command'#7#11'ecLineBreak'#8'ShortCut'#3'M@'#0#1#7'Comma'
+  +'nd'#7#12'ecInsertLine'#8'ShortCut'#3'N@'#0#1#7'Command'#7#12'ecDeleteWord'#8
+  +'ShortCut'#3'T@'#0#1#7'Command'#7#15'ecBlockUnindent'#8'ShortCut'#3'U`'#0#1#7
+  +'Command'#7#7'ecPaste'#8'ShortCut'#3'V@'#0#1#7'Command'#7#5'ecCut'#8'ShortCu'
+  +'t'#3'X@'#0#1#7'Command'#7#12'ecDeleteLine'#8'ShortCut'#3'Y@'#0#1#7'Command'
+  +#7#11'ecDeleteEOL'#8'ShortCut'#3'Y`'#0#1#7'Command'#7#6'ecUndo'#8'ShortCut'#3
+  +'Z@'#0#1#7'Command'#7#6'ecRedo'#8'ShortCut'#3'Z`'#0#1#7'Command'#7#13'ecGoto'
+  +'Marker0'#8'ShortCut'#3'0@'#0#1#7'Command'#7#13'ecGotoMarker1'#8'ShortCut'#3
+  +'1@'#0#1#7'Command'#7#13'ecGotoMarker2'#8'ShortCut'#3'2@'#0#1#7'Command'#7#13
+  +'ecGotoMarker3'#8'ShortCut'#3'3@'#0#1#7'Command'#7#13'ecGotoMarker4'#8'Short'
+  +'Cut'#3'4@'#0#1#7'Command'#7#13'ecGotoMarker5'#8'ShortCut'#3'5@'#0#1#7'Comma'
+  +'nd'#7#13'ecGotoMarker6'#8'ShortCut'#3'6@'#0#1#7'Command'#7#13'ecGotoMarker7'
+  +#8'ShortCut'#3'7@'#0#1#7'Command'#7#13'ecGotoMarker8'#8'ShortCut'#3'8@'#0#1#7
+  +'Command'#7#13'ecGotoMarker9'#8'ShortCut'#3'9@'#0#1#7'Command'#7#12'ecSetMar'
+  +'ker0'#8'ShortCut'#3'0`'#0#1#7'Command'#7#12'ecSetMarker1'#8'ShortCut'#3'1`'
+  +#0#1#7'Command'#7#12'ecSetMarker2'#8'ShortCut'#3'2`'#0#1#7'Command'#7#12'ecS'
+  +'etMarker3'#8'ShortCut'#3'3`'#0#1#7'Command'#7#12'ecSetMarker4'#8'ShortCut'#3
+  +'4`'#0#1#7'Command'#7#12'ecSetMarker5'#8'ShortCut'#3'5`'#0#1#7'Command'#7#12
+  +'ecSetMarker6'#8'ShortCut'#3'6`'#0#1#7'Command'#7#12'ecSetMarker7'#8'ShortCu'
+  +'t'#3'7`'#0#1#7'Command'#7#12'ecSetMarker8'#8'ShortCut'#3'8`'#0#1#7'Command'
+  +#7#12'ecSetMarker9'#8'ShortCut'#3'9`'#0#1#7'Command'#7#12'EcFoldLevel1'#8'Sh'
+  +'ortCut'#4'1'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel2'#8'ShortCut'#4'2'#160
+  +#0#0#0#1#7'Command'#7#12'EcFoldLevel1'#8'ShortCut'#4'3'#160#0#0#0#1#7'Comman'
+  +'d'#7#12'EcFoldLevel1'#8'ShortCut'#4'4'#160#0#0#0#1#7'Command'#7#12'EcFoldLe'
+  +'vel1'#8'ShortCut'#4'5'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel6'#8'ShortCut'
+  +#4'6'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel7'#8'ShortCut'#4'7'#160#0#0#0#1
+  +#7'Command'#7#12'EcFoldLevel8'#8'ShortCut'#4'8'#160#0#0#0#1#7'Command'#7#12
+  +'EcFoldLevel9'#8'ShortCut'#4'9'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel0'#8
+  +'ShortCut'#4'0'#160#0#0#0#1#7'Command'#7#13'EcFoldCurrent'#8'ShortCut'#4'-'
+  +#160#0#0#0#1#7'Command'#7#15'EcUnFoldCurrent'#8'ShortCut'#4'+'#160#0#0#0#1#7
+  +'Command'#7#18'EcToggleMarkupWord'#8'ShortCut'#4'M'#128#0#0#0#1#7'Command'#7
+  +#14'ecNormalSelect'#8'ShortCut'#3'N`'#0#1#7'Command'#7#14'ecColumnSelect'#8
+  +'ShortCut'#3'C`'#0#1#7'Command'#7#12'ecLineSelect'#8'ShortCut'#3'L`'#0#1#7'C'
+  +'ommand'#7#5'ecTab'#8'ShortCut'#2#9#0#1#7'Command'#7#10'ecShiftTab'#8'ShortC'
+  +'ut'#3#9' '#0#1#7'Command'#7#14'ecMatchBracket'#8'ShortCut'#3'B`'#0#1#7'Comm'
+  +'and'#7#10'ecColSelUp'#8'ShortCut'#4'&'#160#0#0#0#1#7'Command'#7#12'ecColSel'
+  +'Down'#8'ShortCut'#4'('#160#0#0#0#1#7'Command'#7#12'ecColSelLeft'#8'ShortCut'
+  +#4'%'#160#0#0#0#1#7'Command'#7#13'ecColSelRight'#8'ShortCut'#4''''#160#0#0#0
+  +#1#7'Command'#7#16'ecColSelPageDown'#8'ShortCut'#4'"'#160#0#0#0#1#7'Command'
+  +#7#18'ecColSelPageBottom'#8'ShortCut'#4'"'#224#0#0#0#1#7'Command'#7#14'ecCol'
+  +'SelPageUp'#8'ShortCut'#4'!'#160#0#0#0#1#7'Command'#7#15'ecColSelPageTop'#8
+  +'ShortCut'#4'!'#224#0#0#0#1#7'Command'#7#17'ecColSelLineStart'#8'ShortCut'#4
+  +'$'#160#0#0#0#1#7'Command'#7#15'ecColSelLineEnd'#8'ShortCut'#4'#'#160#0#0#0#1
+  +#7'Command'#7#17'ecColSelEditorTop'#8'ShortCut'#4'$'#224#0#0#0#1#7'Command'#7
+  +#20'ecColSelEditorBottom'#8'ShortCut'#4'#'#224#0#0#0#0#12'MouseActions'#14#1
+  +#5'Shift'#11#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbLeft'#10
+  ,'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#1#9'MoveCare'
+  +'t'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#7'ssShift'#0#9'ShiftMask'
+  +#11#7'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'
+  +#8'ClickDir'#7#6'cdDown'#7'Command'#2#1#9'MoveCaret'#9#6'Option'#2#1#8'Prior'
+  +'ity'#2#0#0#1#5'Shift'#11#5'ssAlt'#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6
+  +'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7
+  +'Command'#2#3#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#7
+  +'ssShift'#5'ssAlt'#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbL'
+  +'eft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#3#9
+  +'MoveCaret'#9#6'Option'#2#1#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11
+  +#0#6'Button'#7#7'mbRight'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'
+  +#7'Command'#2#12#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11
+  +#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccDouble'#8'Cl'
+  +'ickDir'#7#6'cdDown'#7'Command'#2#6#9'MoveCaret'#9#6'Option'#2#0#8'Priority'
+  +#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'
+  +#7#8'ccTriple'#8'ClickDir'#7#6'cdDown'#7'Command'#2#7#9'MoveCaret'#9#6'Optio'
+  +'n'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mb'
+  +'Left'#10'ClickCount'#7#6'ccQuad'#8'ClickDir'#7#6'cdDown'#7'Command'#2#8#9'M'
+  +'oveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11
+  +#0#6'Button'#7#8'mbMiddle'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDo'
+  +'wn'#7'Command'#2#10#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shif'
+  +'t'#11#6'ssCtrl'#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#6'ssCtrl'#0#6'Button'
+  +#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2
+  +#11#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#15'MouseSelActions'#14#1
+  +#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'cc'
+  +'Single'#8'ClickDir'#7#6'cdDown'#7'Command'#2#9#9'MoveCaret'#8#6'Option'#2#0
+  +#8'Priority'#2#0#0#0#9'RightEdge'#2'A'#10'ScrollBars'#7#10'ssAutoBoth'#21'Br'
+  +'acketHighlightStyle'#7#8'sbhsBoth'#0#244#18'TSynGutterPartList'#0#0#15'TSyn'
+  +'GutterMarks'#0#5'Width'#2#24#0#0#20'TSynGutterLineNumber'#0#5'Width'#2#17#12
+  +'MouseActions'#14#0#21'MarkupInfo.Background'#7#9'clBtnFace'#21'MarkupInfo.F'
+  +'oreground'#7#6'clNone'#10'DigitCount'#2#2#30'ShowOnlyLineNumbersMultiplesOf'
+  +#2#1#9'ZeroStart'#8#12'LeadingZeros'#8#0#0#17'TSynGutterChanges'#0#5'Width'#2
+  +#4#13'ModifiedColor'#4#252#233#0#0#10'SavedColor'#7#7'clGreen'#0#0#19'TSynGu'
+  +'tterSeparator'#0#5'Width'#2#2#0#0#21'TSynGutterCodeFolding'#0#12'MouseActio'
+  +'ns'#14#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#7'mbRight'#10'ClickCou'
+  +'nt'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2#16#9'MoveCaret'#8#6'Op'
+  +'tion'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#7'ssShift'#0#6
+  +'Button'#7#8'mbMiddle'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'C'
+  +'ommand'#2#14#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#7
+  +'ssShift'#0#9'ShiftMask'#11#7'ssShift'#0#6'Button'#7#8'mbMiddle'#10'ClickCou'
+  +'nt'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#14#9'MoveCaret'#8#6'Opt'
+  +'ion'#2#1#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6
+  +'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#0#9
+  +'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#21'MarkupInfo.Background'#7#6
+  +'clNone'#21'MarkupInfo.Foreground'#7#6'clGray'#20'MouseActionsExpanded'#14#1
+  +#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'cc'
+  +'Any'#8'ClickDir'#7#6'cdDown'#7'Command'#2#14#9'MoveCaret'#8#6'Option'#2#0#8
+  +'Priority'#2#0#0#0#21'MouseActionsCollapsed'#14#1#5'Shift'#11#6'ssCtrl'#0#9
+  +'ShiftMask'#11#6'ssCtrl'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8
+  +'ClickDir'#7#6'cdDown'#7'Command'#2#15#9'MoveCaret'#8#6'Option'#2#0#8'Priori'
+  +'ty'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#6'ssCtrl'#0#6'Button'#7#6'mbLeft'
+  +#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#15#9'MoveCar'
+  +'et'#8#6'Option'#2#1#8'Priority'#2#0#0#0#0#0#0#0#10'TSynSQLSyn'#10'SynSQLSyn'
+  +'1'#13'DefaultFilter'#6#23'SQL Files (*.sql)|*.sql'#7'Enabled'#8#23'CommentA'
+  +'ttri.Foreground'#7#6'clTeal'#23'CommentAttri.FrameEdges'#7#9'sfeAround'#24
+  +'DataTypeAttri.FrameEdges'#7#9'sfeAround'#30'DefaultPackageAttri.FrameEdges'
+  +#7#9'sfeAround'#25'ExceptionAttri.FrameEdges'#7#9'sfeAround'#24'FunctionAttr'
+  +'i.FrameEdges'#7#9'sfeAround'#26'IdentifierAttri.Foreground'#4'1'#26#255#0#26
+  +'IdentifierAttri.FrameEdges'#7#9'sfeAround'#19'KeyAttri.FrameEdges'#7#9'sfeA'
+  +'round'#22'NumberAttri.Foreground'#4'644'#0#22'NumberAttri.FrameEdges'#7#9's'
+  +'feAround'#21'PLSQLAttri.FrameEdges'#7#9'sfeAround'#21'SpaceAttri.FrameEdges'
+  +#7#9'sfeAround'#23'SQLPlusAttri.FrameEdges'#7#9'sfeAround'#22'StringAttri.Fo'
+  +'reground'#4#161#16#16#0#22'StringAttri.FrameEdges'#7#9'sfeAround'#22'Symbol'
+  +'Attri.Foreground'#4'b'#8#8#0#22'SymbolAttri.FrameEdges'#7#9'sfeAround'#25'T'
+  ,'ableNameAttri.Foreground'#7#6'clNavy'#25'TableNameAttri.FrameEdges'#7#9'sfe'
+  +'Around'#20'TableNameAttri.Style'#11#6'fsBold'#0#24'VariableAttri.FrameEdges'
+  +#7#9'sfeAround'#10'SQLDialect'#7#9'sqlSybase'#4'left'#3#204#1#3'top'#2'$'#0#0
+  +#0
+]);

+ 190 - 0
copytable.pas

@@ -0,0 +1,190 @@
+unit CopyTable;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+  StdCtrls, Buttons, SynEdit, SynHighlighterSQL, sqldb;
+
+type
+
+  { TfmCopyTable }
+
+  TfmCopyTable = class(TForm)
+    bbCopy: TBitBtn;
+    bbClose: TBitBtn;
+    cbSourceTable: TComboBox;
+    cbDestDatabase: TComboBox;
+    cbDestTable: TComboBox;
+    Label1: TLabel;
+    Label2: TLabel;
+    Label3: TLabel;
+    Label4: TLabel;
+    Label5: TLabel;
+    laDatabase: TLabel;
+    laDatabase1: TLabel;
+    laSourceDatabase: TLabel;
+    SynSQLSyn1: TSynSQLSyn;
+    syScript: TSynEdit;
+    procedure bbCopyClick(Sender: TObject);
+    procedure bbCloseClick(Sender: TObject);
+    procedure cbDestDatabaseChange(Sender: TObject);
+    procedure cbSourceTableChange(Sender: TObject);
+  private
+    fSourceIndex: Integer;
+    { private declarations }
+  public
+    { public declarations }
+    procedure Init(SourceIndex: Integer; ATableName: string);
+  end; 
+
+var
+  fmCopyTable: TfmCopyTable;
+
+implementation
+
+{ TfmCopyTable }
+
+uses main, SysTables, EnterPass, Reg;
+
+procedure TfmCopyTable.cbDestDatabaseChange(Sender: TObject);
+var
+  Count: Integer;
+begin
+  laDatabase.Caption:= fmMain.RegisteredDatabases[cbDestDatabase.ItemIndex].RegRec.DatabaseName;
+  cbDestDatabase.SetFocus;
+  dmSysTables.Init(cbDestDatabase.ItemIndex);
+  cbDestTable.Items.CommaText:= dmSysTables.GetDBObjectNames(cbDestDatabase.ItemIndex, 0, count);
+  if cbDestTable.Items.IndexOf(cbSourceTable.Text) <> -1 then
+    cbDestTable.Text:= cbSourceTable.Text;
+end;
+
+procedure TfmCopyTable.cbSourceTableChange(Sender: TObject);
+var
+  List: TStringList;
+  Line: string;
+begin
+  List:= TStringList.Create;
+  fmMain.GetFields(fSourceIndex, cbSourceTable.Text, List);
+  Line:= List.CommaText;
+  List.Free;
+  syScript.Lines.Text:= 'select ' + Line;
+  syScript.Lines.Add(' from ' + cbSourceTable.Text);
+
+end;
+
+procedure TfmCopyTable.bbCloseClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfmCopyTable.bbCopyClick(Sender: TObject);
+var
+  i: Integer;
+  Statement: string;
+  Values: string;
+  SQLTarget: TSQLQuery;
+begin
+  Statement:= 'insert into ' + cbDestTable.Text + ' (';
+  dmSysTables.sqQuery.Close;
+  dmSysTables.Init(fSourceIndex);
+  dmSysTables.sqQuery.SQL.Text:= syScript.Lines.Text;
+  dmSysTables.sqQuery.Open;
+  Values:= '';
+
+  // Get field names
+  with dmSysTables.sqQuery do
+  for i:= 0 to Fields.Count - 1 do
+  begin
+    Statement:= Statement + Fields[i].FieldName + ',';
+    Values:= Values + ':' + Fields[i].FieldName + ',';
+    Next;
+  end;
+  Delete(Statement, Length(Statement), 1);
+  Delete(Values, Length(Values), 1);
+  Statement:= Statement + ') Values (' + Values + ')';
+
+  with fmMain.RegisteredDatabases[cbDestDatabase.ItemIndex] do
+  begin
+    if IBConnection.Password = '' then
+    begin
+      if fmEnterPass.ShowModal = mrOk then
+      begin
+        if fmReg.TestConnection(RegRec.DatabaseName, fmEnterPass.edUser.Text, fmEnterPass.edPassword.Text,
+          RegRec.Charset) then
+          with fmMain do
+          begin
+            RegisteredDatabases[cbDestDatabase.ItemIndex].RegRec.UserName:= fmEnterPass.edUser.Text;
+            RegisteredDatabases[cbDestDatabase.ItemIndex].RegRec.Password:= fmEnterPass.edPassword.Text;
+            RegisteredDatabases[cbDestDatabase.ItemIndex].RegRec.Role:= fmEnterPass.cbRole.Text;
+          end
+          else
+          begin
+            Exit;
+          end;
+      end
+    end;
+
+    SQLTarget:= TSQLQuery.Create(nil);
+    SQLTarget.DataBase:= IBConnection;
+    SQLTarget.Transaction:= SQLTrans;
+    SQLTarget.SQL.Text:= Statement;
+
+    // Start copy
+    try
+      dmSysTables.sqQuery.First;
+      with dmSysTables.sqQuery do
+      while not EOF do
+      begin
+        for i:= 0 to Fields.Count - 1 do
+          SQLTarget.Params.ParamByName(Fields[i].FieldName).Value:= Fields[i].Value;
+        SQLTarget.ExecSQL;
+        Next;
+      end;
+      SQLTrans.Commit;
+      ShowMessage('Table has been copied' + #10 + 'Don''t forget to set the Generator to the new value, ' +
+        'if it does exists');
+      dmSysTables.sqQuery.Close;
+      SQLTarget.Free;
+      Close;
+
+    except
+      on e: exception do
+      begin
+        MessageDlg('Error while copy: ' + e.Message, mtError, [mbOk], 0);
+        SQLTrans.Rollback;
+        SQLTarget.Free;
+      end;
+    end;
+  end;
+
+
+  dmSysTables.sqQuery.Close;
+
+end;
+
+procedure TfmCopyTable.Init(SourceIndex: Integer; ATableName: string);
+var
+  i: Integer;
+  Count: Integer;
+begin
+  dmSysTables.sqQuery.Close;
+  fSourceIndex:= SourceIndex;
+  laSourceDatabase.Caption:= fmMain.RegisteredDatabases[SourceIndex].RegRec.Title;
+  cbDestDatabase.Clear;
+  for i:= 0 to High(fmMain.RegisteredDatabases) do
+    cbDestDatabase.Items.Add(fmMain.RegisteredDatabases[i].RegRec.Title);
+  laDatabase.Caption:= '';
+  cbSourceTable.Items.CommaText:= dmSysTables.GetDBObjectNames(SourceIndex, 1, count);
+  cbSourceTable.Text:= ATableName;
+  SynSQLSyn1.TableNames.Text:= cbSourceTable.Text;
+  cbSourceTableChange(nil);
+end;
+
+initialization
+  {$I copytable.lrs}
+
+end.
+

+ 231 - 0
createdb.lfm

@@ -0,0 +1,231 @@
+object fmCreateDB: TfmCreateDB
+  Left = 407
+  Height = 267
+  Top = 201
+  Width = 481
+  ActiveControl = btBrowse
+  Caption = 'Create new Firebird Database'
+  ClientHeight = 267
+  ClientWidth = 481
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object Label1: TLabel
+    Left = 11
+    Height = 18
+    Top = 37
+    Width = 109
+    Caption = 'Server:Database'
+    ParentColor = False
+  end
+  object Label2: TLabel
+    Left = 11
+    Height = 18
+    Top = 88
+    Width = 72
+    Caption = 'User name'
+    ParentColor = False
+  end
+  object Label3: TLabel
+    Left = 11
+    Height = 18
+    Top = 136
+    Width = 62
+    Caption = 'Password'
+    ParentColor = False
+  end
+  object Label4: TLabel
+    Left = 11
+    Height = 18
+    Top = 174
+    Width = 51
+    Caption = 'Charset'
+    ParentColor = False
+  end
+  object edNewDatabase: TEdit
+    Left = 128
+    Height = 27
+    Top = 35
+    Width = 248
+    TabOrder = 0
+  end
+  object btBrowse: TButton
+    Left = 381
+    Height = 25
+    Top = 34
+    Width = 27
+    Caption = '...'
+    OnClick = btBrowseClick
+    TabOrder = 1
+  end
+  object edUserName: TEdit
+    Left = 87
+    Height = 27
+    Top = 81
+    Width = 129
+    TabOrder = 2
+  end
+  object edPassword: TEdit
+    Left = 87
+    Height = 27
+    Top = 128
+    Width = 129
+    EchoMode = emPassword
+    PasswordChar = '-'
+    TabOrder = 3
+  end
+  object bbCreate: TBitBtn
+    Left = 11
+    Height = 30
+    Top = 215
+    Width = 93
+    Caption = 'Create'
+    Color = 16249563
+    Default = True
+    Glyph.Data = {
+      76060000424D7606000000000000360000002800000014000000140000000100
+      2000000000004006000064000000640000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000093E0D3A083D0DCA073C0DF9083C0EA90037120E00000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000073B0E6C073D0DFA0D6217FF0D6617FF073C
+      0DFF063C0D9D0000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000083C0E840944
+      0FFF149023FF18AF2AFF18AE2AFF084810FF073C0DFB093C111E000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000063C0D780A5012FF169F26FF22B233FFA3DFAAFF61C86EFF0C5D
+      15FF073C0DFF073C0DAD053C0B2F004000080000000000000000000000000000
+      000000000000000000000000000000000000063B0E5B094D11FE17A628FF2FB7
+      3FFFC6EBCAFFA0DEA7FF30B741FF138D22FF0E6A19FF0D6417FF0A5113FF073E
+      0EFD083C0DCB063C0D770037120E00000000000000000000000000000000083E
+      0C3E094911FA16A127FF23B334FF5CC769FF24B335FF18AF2AFF18AF2AFF18AF
+      2AFF38BA47FF44BE53FF46BF55FF4DBB5AFF1B8028FF09440FFF073C0DEB063C
+      0E59000000000000000000400008073D0DDC149423FF18AF2AFF19AF2BFF18AF
+      2AFF18AF2AFF18AF2AFF18AD2AFF149D24FF15A025FF16A828FF18AF2AFF20B2
+      32FF72CE7DFF82CD8BFF125819FF073C0DFE063C0E5A00000000063C0D510A52
+      13FF17AB29FF18AF2AFF18AF2AFF18AF2AFF18AF2AFF18AF2AFF16A527FF0F8B
+      1FFF108D1FFF0F8B1EFF108D1FFF139B24FF17AB28FF3DBC4CFF9FDAA6FF0A4A
+      11FF073C0DF10C3D0C15083C0B44073F0EFF108B1FFF139B23FF17AB29FF18AF
+      2AFF18AF2AFF18AF2AFF149F25FF0E7B1BFF073E0EFF0A5612FF0E7C1CFF0F8B
+      1FFF108C1EFF14A025FF56C463FF63AF6CFF073C0DFF073D0E6D00000001073B
+      0DB008400DFF0F811DFF0F8C1FFF139A24FF17A928FF18AF2AFF129823FF0D69
+      17FF073D0DB1063C0D78073C0DDE08450FFF10871EFF0F8B1EFF16A426FF8ED7
+      97FF08450FFF063C0DA200000000003B140D083C0EAA073C0DFF0C5E16FF108B
+      1FFF0F8B1FFF119422FF108F20FF0A5213FF083B0D630000000000400004083C
+      0CA508430FFF0F8B1EFF149F25FF68CB74FF196622FF073C0DB4000000000000
+      000000000000063B0C52073C0DD5073C0DFF0C6517FF108C1FFF108E1FFF073D
+      0DFF063D0C2A0000000000000000083C0C40073D0DFF0F8A1FFF16A426FF29B5
+      3AFF307F39FF083D0CA40000000000000000000000000000000000000001093D
+      0D3B073C0D99073C0DF008430FFF073C0DD2000000000000000000000000063D
+      0C5308460FFF0F8B1EFF17AB29FF18AF2AFF136B1DFF063D0D7A000000000000
+      0000000000000000000000000000000000000000000000550003063D0B2E0739
+      0E24000000000000000000000000073D0C930C6116FF119121FF18AF2AFF18AF
+      2AFF0B5413FF093C0D3C00000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000083C
+      0DCC0F7B1CFF119321FF18AF2AFF16A127FF063E0DEC00550003000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000073C0DD50F801DFF0F8B1EFF149C24FF0C5F
+      16FF073D0C8F0000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000073D
+      0C9308450FFF0E731AFF0C5413FF073C0DEA0B400B1800000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000D360D13073C0DB4073C0DFD073C0DD8063D
+      0C2A000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000049000700000000000000000000000000000000
+    }
+    OnClick = bbCreateClick
+    TabOrder = 4
+  end
+  object bbCancel: TBitBtn
+    Left = 120
+    Height = 30
+    Top = 215
+    Width = 80
+    Cancel = True
+    Caption = 'Cancel'
+    Color = 16249563
+    Kind = bkCancel
+    ModalResult = 2
+    TabOrder = 5
+  end
+  object cbCharset: TComboBox
+    Left = 90
+    Height = 29
+    Top = 170
+    Width = 124
+    ItemHeight = 0
+    ItemIndex = 0
+    Items.Strings = (
+      'NONE'
+      'TRIM'
+      'ASCII'
+      'BIG_5'
+      'CP943C'
+      'CYRL'
+      'DOS437'
+      'DOS737'
+      'DOS775'
+      'DOS850'
+      'DOS852'
+      'DOS857'
+      'DOS858'
+      'DOS860'
+      'DOS861'
+      'DOS862'
+      'DOS863'
+      'DOS864'
+      'DOS865'
+      'DOS866'
+      'DOS869'
+      'EUCJ_0208'
+      'GBK'
+      'GB_2312'
+      'ISO8859_1'
+      'ISO8859_13'
+      'ISO8859_2'
+      'ISO8859_3'
+      'ISO8859_4'
+      'ISO8859_5'
+      'ISO8859_6'
+      'ISO8859_7'
+      'ISO8859_8'
+      'ISO8859_9'
+      'KOI8R'
+      'KOI8U'
+      'KSC_5601'
+      'NEXT'
+      'OCTETS'
+      'SJIS_0208'
+      'TIS620'
+      'UNICODE_FSS'
+      'UTF8'
+      'WIN1250'
+      'WIN1251'
+      'WIN1252'
+      'WIN1253'
+      'WIN1254'
+      'WIN1255'
+      'WIN1256'
+      'WIN1257'
+      'WIN1258'
+    )
+    TabOrder = 6
+    Text = 'NONE'
+  end
+  object SaveDialog1: TSaveDialog
+    DefaultExt = '.fdb'
+    Filter = 'Firebird database|*.fdb|All files|*.*'
+    Options = [ofOverwritePrompt, ofEnableSizing, ofViewDetail]
+    left = 424
+    top = 32
+  end
+  object IBConnection1: TIBConnection
+    Connected = False
+    LoginPrompt = False
+    KeepConnection = False
+    left = 319
+    top = 102
+  end
+end

+ 101 - 0
createdb.lrs

@@ -0,0 +1,101 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmCreateDB','FORMDATA',[
+  'TPF0'#11'TfmCreateDB'#10'fmCreateDB'#4'Left'#3#151#1#6'Height'#3#11#1#3'Top'
+  +#3#201#0#5'Width'#3#225#1#13'ActiveControl'#7#8'btBrowse'#7'Caption'#6#28'Cr'
+  +'eate new Firebird Database'#12'ClientHeight'#3#11#1#11'ClientWidth'#3#225#1
+  +#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#6'TLabel'#6'L'
+  +'abel1'#4'Left'#2#11#6'Height'#2#18#3'Top'#2'%'#5'Width'#2'm'#7'Caption'#6#15
+  +'Server:Database'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#11#6'H'
+  +'eight'#2#18#3'Top'#2'X'#5'Width'#2'H'#7'Caption'#6#9'User name'#11'ParentCo'
+  +'lor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2#11#6'Height'#2#18#3'Top'#3#136#0#5
+  +'Width'#2'>'#7'Caption'#6#8'Password'#11'ParentColor'#8#0#0#6'TLabel'#6'Labe'
+  +'l4'#4'Left'#2#11#6'Height'#2#18#3'Top'#3#174#0#5'Width'#2'3'#7'Caption'#6#7
+  +'Charset'#11'ParentColor'#8#0#0#5'TEdit'#13'edNewDatabase'#4'Left'#3#128#0#6
+  +'Height'#2#27#3'Top'#2'#'#5'Width'#3#248#0#8'TabOrder'#2#0#0#0#7'TButton'#8
+  +'btBrowse'#4'Left'#3'}'#1#6'Height'#2#25#3'Top'#2'"'#5'Width'#2#27#7'Caption'
+  +#6#3'...'#7'OnClick'#7#13'btBrowseClick'#8'TabOrder'#2#1#0#0#5'TEdit'#10'edU'
+  +'serName'#4'Left'#2'W'#6'Height'#2#27#3'Top'#2'Q'#5'Width'#3#129#0#8'TabOrde'
+  +'r'#2#2#0#0#5'TEdit'#10'edPassword'#4'Left'#2'W'#6'Height'#2#27#3'Top'#3#128
+  +#0#5'Width'#3#129#0#8'EchoMode'#7#10'emPassword'#12'PasswordChar'#6#1'-'#8'T'
+  +'abOrder'#2#3#0#0#7'TBitBtn'#8'bbCreate'#4'Left'#2#11#6'Height'#2#30#3'Top'#3
+  +#215#0#5'Width'#2']'#7'Caption'#6#6'Create'#5'Color'#4#219#242#247#0#7'Defau'
+  +'lt'#9#10'Glyph.Data'#10'z'#6#0#0'v'#6#0#0'BMv'#6#0#0#0#0#0#0'6'#0#0#0'('#0#0
+  +#0#20#0#0#0#20#0#0#0#1#0' '#0#0#0#0#0'@'#6#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#0#0#0#0#0#0#0#9'>'#13':'#8'='
+  +#13#202#7'<'#13#249#8'<'#14#169#0'7'#18#14#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#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';'#14'l'#7'='#13#250#13'b'#23#255#13'f'#23#255#7'<'#13#255#6'<'#13#157#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#8'<'#14#132#9'D'#15#255#20#144'#'#255#24#175'*'
+  +#255#24#174'*'#255#8'H'#16#255#7'<'#13#251#9'<'#17#30#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#6'<'#13'x'
+  +#10'P'#18#255#22#159'&'#255'"'#178'3'#255#163#223#170#255'a'#200'n'#255#12']'
+  +#21#255#7'<'#13#255#7'<'#13#173#5'<'#11'/'#0'@'#0#8#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#6';'#14'['#9'M'#17#254#23#166'('#255
+  +'/'#183'?'#255#198#235#202#255#160#222#167#255'0'#183'A'#255#19#141'"'#255#14
+  +'j'#25#255#13'd'#23#255#10'Q'#19#255#7'>'#14#253#8'<'#13#203#6'<'#13'w'#0'7'
+  +#18#14#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#8'>'#12'>'#9'I'#17#250#22#161''''#255
+  +'#'#179'4'#255'\'#199'i'#255'$'#179'5'#255#24#175'*'#255#24#175'*'#255#24#175
+  +'*'#255'8'#186'G'#255'D'#190'S'#255'F'#191'U'#255'M'#187'Z'#255#27#128'('#255
+  +#9'D'#15#255#7'<'#13#235#6'<'#14'Y'#0#0#0#0#0#0#0#0#0'@'#0#8#7'='#13#220#20
+  +#148'#'#255#24#175'*'#255#25#175'+'#255#24#175'*'#255#24#175'*'#255#24#175'*'
+  +#255#24#173'*'#255#20#157'$'#255#21#160'%'#255#22#168'('#255#24#175'*'#255' '
+  +#178'2'#255'r'#206'}'#255#130#205#139#255#18'X'#25#255#7'<'#13#254#6'<'#14'Z'
+  +#0#0#0#0#6'<'#13'Q'#10'R'#19#255#23#171')'#255#24#175'*'#255#24#175'*'#255#24
+  +#175'*'#255#24#175'*'#255#24#175'*'#255#22#165''''#255#15#139#31#255#16#141
+  +#31#255#15#139#30#255#16#141#31#255#19#155'$'#255#23#171'('#255'='#188'L'#255
+  +#159#218#166#255#10'J'#17#255#7'<'#13#241#12'='#12#21#8'<'#11'D'#7'?'#14#255
+  +#16#139#31#255#19#155'#'#255#23#171')'#255#24#175'*'#255#24#175'*'#255#24#175
+  +'*'#255#20#159'%'#255#14'{'#27#255#7'>'#14#255#10'V'#18#255#14'|'#28#255#15
+  +#139#31#255#16#140#30#255#20#160'%'#255'V'#196'c'#255'c'#175'l'#255#7'<'#13
+  +#255#7'='#14'm'#0#0#0#1#7';'#13#176#8'@'#13#255#15#129#29#255#15#140#31#255
+  +#19#154'$'#255#23#169'('#255#24#175'*'#255#18#152'#'#255#13'i'#23#255#7'='#13
+  +#177#6'<'#13'x'#7'<'#13#222#8'E'#15#255#16#135#30#255#15#139#30#255#22#164'&'
+  +#255#142#215#151#255#8'E'#15#255#6'<'#13#162#0#0#0#0#0';'#20#13#8'<'#14#170#7
+  +'<'#13#255#12'^'#22#255#16#139#31#255#15#139#31#255#17#148'"'#255#16#143' '
+  +#255#10'R'#19#255#8';'#13'c'#0#0#0#0#0'@'#0#4#8'<'#12#165#8'C'#15#255#15#139
+  +#30#255#20#159'%'#255'h'#203't'#255#25'f"'#255#7'<'#13#180#0#0#0#0#0#0#0#0#0
+  +#0#0#0#6';'#12'R'#7'<'#13#213#7'<'#13#255#12'e'#23#255#16#140#31#255#16#142
+  +#31#255#7'='#13#255#6'='#12'*'#0#0#0#0#0#0#0#0#8'<'#12'@'#7'='#13#255#15#138
+  +#31#255#22#164'&'#255')'#181':'#255'0'#127'9'#255#8'='#12#164#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#1#9'='#13';'#7'<'#13#153#7'<'#13#240#8'C'#15#255#7'<'
+  +#13#210#0#0#0#0#0#0#0#0#0#0#0#0#6'='#12'S'#8'F'#15#255#15#139#30#255#23#171
+  +')'#255#24#175'*'#255#19'k'#29#255#6'='#13'z'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0'U'#0#3#6'='#11'.'#7'9'#14'$'#0#0#0#0#0#0#0#0#0#0#0
+  ,#0#7'='#12#147#12'a'#22#255#17#145'!'#255#24#175'*'#255#24#175'*'#255#11'T'
+  +#19#255#9'<'#13'<'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#8'<'#13#204#15'{'#28#255#17
+  +#147'!'#255#24#175'*'#255#22#161''''#255#6'>'#13#236#0'U'#0#3#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#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'<'#13#213#15#128#29#255#15#139#30#255#20#156'$'#255#12'_'#22
+  +#255#7'='#12#143#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#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'='#12#147#8'E'#15#255
+  +#14's'#26#255#12'T'#19#255#7'<'#13#234#11'@'#11#24#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#13'6'#13#19#7'<'#13#180#7'<'#13#253#7'<'#13#216#6'='#12'*'#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'I'#0#7#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#7'OnClick'#7#13'bbCreateClick'#8'TabOrder'#2#4#0#0#7'TBitBt'
+  +'n'#8'bbCancel'#4'Left'#2'x'#6'Height'#2#30#3'Top'#3#215#0#5'Width'#2'P'#6'C'
+  +'ancel'#9#7'Caption'#6#6'Cancel'#5'Color'#4#219#242#247#0#4'Kind'#7#8'bkCanc'
+  +'el'#11'ModalResult'#2#2#8'TabOrder'#2#5#0#0#9'TComboBox'#9'cbCharset'#4'Lef'
+  +'t'#2'Z'#6'Height'#2#29#3'Top'#3#170#0#5'Width'#2'|'#10'ItemHeight'#2#0#9'It'
+  +'emIndex'#2#0#13'Items.Strings'#1#6#4'NONE'#6#4'TRIM'#6#5'ASCII'#6#5'BIG_5'#6
+  +#6'CP943C'#6#4'CYRL'#6#6'DOS437'#6#6'DOS737'#6#6'DOS775'#6#6'DOS850'#6#6'DOS'
+  +'852'#6#6'DOS857'#6#6'DOS858'#6#6'DOS860'#6#6'DOS861'#6#6'DOS862'#6#6'DOS863'
+  +#6#6'DOS864'#6#6'DOS865'#6#6'DOS866'#6#6'DOS869'#6#9'EUCJ_0208'#6#3'GBK'#6#7
+  +'GB_2312'#6#9'ISO8859_1'#6#10'ISO8859_13'#6#9'ISO8859_2'#6#9'ISO8859_3'#6#9
+  +'ISO8859_4'#6#9'ISO8859_5'#6#9'ISO8859_6'#6#9'ISO8859_7'#6#9'ISO8859_8'#6#9
+  +'ISO8859_9'#6#5'KOI8R'#6#5'KOI8U'#6#8'KSC_5601'#6#4'NEXT'#6#6'OCTETS'#6#9'SJ'
+  +'IS_0208'#6#6'TIS620'#6#11'UNICODE_FSS'#6#4'UTF8'#6#7'WIN1250'#6#7'WIN1251'#6
+  +#7'WIN1252'#6#7'WIN1253'#6#7'WIN1254'#6#7'WIN1255'#6#7'WIN1256'#6#7'WIN1257'
+  +#6#7'WIN1258'#0#8'TabOrder'#2#6#4'Text'#6#4'NONE'#0#0#11'TSaveDialog'#11'Sav'
+  +'eDialog1'#10'DefaultExt'#6#4'.fdb'#6'Filter'#6'%Firebird database|*.fdb|All'
+  +' files|*.*'#7'Options'#11#17'ofOverwritePrompt'#14'ofEnableSizing'#12'ofVie'
+  +'wDetail'#0#4'left'#3#168#1#3'top'#2' '#0#0#13'TIBConnection'#13'IBConnectio'
+  +'n1'#9'Connected'#8#11'LoginPrompt'#8#14'KeepConnection'#8#4'left'#3'?'#1#3
+  +'top'#2'f'#0#0#0
+]);

+ 77 - 0
createdb.pas

@@ -0,0 +1,77 @@
+unit createdb;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, IBConnection, FileUtil, LResources, Forms, Controls,
+  Graphics, Dialogs, StdCtrls, Buttons;
+
+type
+
+  { TfmCreateDB }
+
+  TfmCreateDB = class(TForm)
+    bbCreate: TBitBtn;
+    btBrowse: TButton;
+    bbCancel: TBitBtn;
+    cbCharset: TComboBox;
+    edUserName: TEdit;
+    edNewDatabase: TEdit;
+    edPassword: TEdit;
+    IBConnection1: TIBConnection;
+    Label1: TLabel;
+    Label2: TLabel;
+    Label3: TLabel;
+    Label4: TLabel;
+    SaveDialog1: TSaveDialog;
+    procedure bbCreateClick(Sender: TObject);
+    procedure btBrowseClick(Sender: TObject);
+  private
+    { private declarations }
+  public
+    { public declarations }
+  end; 
+
+var
+  fmCreateDB: TfmCreateDB;
+
+implementation
+
+uses Reg;
+
+{ TfmCreateDB }
+
+procedure TfmCreateDB.btBrowseClick(Sender: TObject);
+begin
+  if SaveDialog1.Execute then
+  begin
+    edNewDatabase.Text:= SaveDialog1.FileName;
+  end;
+end;
+
+procedure TfmCreateDB.bbCreateClick(Sender: TObject);
+begin
+  IBConnection1.UserName:= edUserName.Text;
+  IBConnection1.Password:= edPassword.Text;
+  IBConnection1.DatabaseName:= edNewDatabase.Text;
+  IBConnection1.CharSet:= cbCharset.Text;
+  IBConnection1.CreateDB;
+
+  ShowMessage('Successfully created');
+  fmReg.edTitle.Clear;
+  fmReg.edDatabaseName.Text:= edNewDatabase.Text;
+  fmReg.edUserName.Text:= edUserName.Text;
+  fmReg.edPassword.Text:= edPassword.Text;
+  fmReg.cbCharset.Text:= cbCharset.Text;
+  fmReg.NewReg:= True;
+  ModalResult:= fmReg.ShowModal;
+  ModalResult:= mrOK;
+end;
+
+initialization
+  {$I createdb.lrs}
+
+end.
+

+ 110 - 0
createtrigger.lfm

@@ -0,0 +1,110 @@
+object fmCreateTrigger: TfmCreateTrigger
+  Left = 430
+  Height = 300
+  Top = 201
+  Width = 400
+  ActiveControl = edTriggerName
+  Caption = 'Create new Trigger'
+  ClientHeight = 300
+  ClientWidth = 400
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object Label1: TLabel
+    Left = 7
+    Height = 18
+    Top = 22
+    Width = 88
+    Caption = 'Trigger Name'
+    ParentColor = False
+  end
+  object Label2: TLabel
+    Left = 7
+    Height = 18
+    Top = 64
+    Width = 57
+    Caption = 'On Table'
+    ParentColor = False
+  end
+  object edTriggerName: TEdit
+    Left = 107
+    Height = 27
+    Top = 16
+    Width = 149
+    TabOrder = 0
+  end
+  object cbTables: TComboBox
+    Left = 107
+    Height = 31
+    Top = 56
+    Width = 152
+    ItemHeight = 0
+    Style = csDropDownList
+    TabOrder = 1
+  end
+  object rbBefor: TRadioButton
+    Left = 7
+    Height = 22
+    Top = 111
+    Width = 67
+    Caption = 'Before'
+    Checked = True
+    TabOrder = 2
+    TabStop = True
+  end
+  object rbAfter: TRadioButton
+    Left = 7
+    Height = 22
+    Top = 142
+    Width = 56
+    Caption = 'After'
+    TabOrder = 3
+  end
+  object cxInsert: TCheckBox
+    Left = 135
+    Height = 22
+    Top = 111
+    Width = 61
+    Caption = 'Insert'
+    TabOrder = 4
+  end
+  object cxUpdate: TCheckBox
+    Left = 135
+    Height = 22
+    Top = 146
+    Width = 71
+    Caption = 'Update'
+    TabOrder = 5
+  end
+  object cxDelete: TCheckBox
+    Left = 135
+    Height = 22
+    Top = 182
+    Width = 67
+    Caption = 'Delete'
+    TabOrder = 6
+  end
+  object BitBtn1: TBitBtn
+    Left = 11
+    Height = 30
+    Top = 252
+    Width = 85
+    Caption = 'Script'
+    Color = 16249563
+    Default = True
+    Kind = bkYes
+    OnClick = BitBtn1Click
+    TabOrder = 7
+  end
+  object BitBtn2: TBitBtn
+    Left = 113
+    Height = 30
+    Top = 252
+    Width = 87
+    Cancel = True
+    Caption = 'Cancel'
+    Color = 16249563
+    Kind = bkCancel
+    ModalResult = 2
+    TabOrder = 8
+  end
+end

+ 29 - 0
createtrigger.lrs

@@ -0,0 +1,29 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmCreateTrigger','FORMDATA',[
+  'TPF0'#16'TfmCreateTrigger'#15'fmCreateTrigger'#4'Left'#3#174#1#6'Height'#3','
+  +#1#3'Top'#3#201#0#5'Width'#3#144#1#13'ActiveControl'#7#13'edTriggerName'#7'C'
+  +'aption'#6#18'Create new Trigger'#12'ClientHeight'#3','#1#11'ClientWidth'#3
+  +#144#1#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#6'TLabe'
+  +'l'#6'Label1'#4'Left'#2#7#6'Height'#2#18#3'Top'#2#22#5'Width'#2'X'#7'Caption'
+  +#6#12'Trigger Name'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#7#6
+  +'Height'#2#18#3'Top'#2'@'#5'Width'#2'9'#7'Caption'#6#8'On Table'#11'ParentCo'
+  +'lor'#8#0#0#5'TEdit'#13'edTriggerName'#4'Left'#2'k'#6'Height'#2#27#3'Top'#2
+  +#16#5'Width'#3#149#0#8'TabOrder'#2#0#0#0#9'TComboBox'#8'cbTables'#4'Left'#2
+  +'k'#6'Height'#2#31#3'Top'#2'8'#5'Width'#3#152#0#10'ItemHeight'#2#0#5'Style'#7
+  +#14'csDropDownList'#8'TabOrder'#2#1#0#0#12'TRadioButton'#7'rbBefor'#4'Left'#2
+  +#7#6'Height'#2#22#3'Top'#2'o'#5'Width'#2'C'#7'Caption'#6#6'Before'#7'Checked'
+  +#9#8'TabOrder'#2#2#7'TabStop'#9#0#0#12'TRadioButton'#7'rbAfter'#4'Left'#2#7#6
+  +'Height'#2#22#3'Top'#3#142#0#5'Width'#2'8'#7'Caption'#6#5'After'#8'TabOrder'
+  +#2#3#0#0#9'TCheckBox'#8'cxInsert'#4'Left'#3#135#0#6'Height'#2#22#3'Top'#2'o'
+  +#5'Width'#2'='#7'Caption'#6#6'Insert'#8'TabOrder'#2#4#0#0#9'TCheckBox'#8'cxU'
+  +'pdate'#4'Left'#3#135#0#6'Height'#2#22#3'Top'#3#146#0#5'Width'#2'G'#7'Captio'
+  +'n'#6#6'Update'#8'TabOrder'#2#5#0#0#9'TCheckBox'#8'cxDelete'#4'Left'#3#135#0
+  +#6'Height'#2#22#3'Top'#3#182#0#5'Width'#2'C'#7'Caption'#6#6'Delete'#8'TabOrd'
+  +'er'#2#6#0#0#7'TBitBtn'#7'BitBtn1'#4'Left'#2#11#6'Height'#2#30#3'Top'#3#252#0
+  +#5'Width'#2'U'#7'Caption'#6#6'Script'#5'Color'#4#219#242#247#0#7'Default'#9#4
+  +'Kind'#7#5'bkYes'#7'OnClick'#7#12'BitBtn1Click'#8'TabOrder'#2#7#0#0#7'TBitBt'
+  +'n'#7'BitBtn2'#4'Left'#2'q'#6'Height'#2#30#3'Top'#3#252#0#5'Width'#2'W'#6'Ca'
+  +'ncel'#9#7'Caption'#6#6'Cancel'#5'Color'#4#219#242#247#0#4'Kind'#7#8'bkCance'
+  +'l'#11'ModalResult'#2#2#8'TabOrder'#2#8#0#0#0
+]);

+ 53 - 0
createtrigger.pas

@@ -0,0 +1,53 @@
+unit CreateTrigger;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+  StdCtrls, Buttons;
+
+type
+
+  { TfmCreateTrigger }
+
+  TfmCreateTrigger = class(TForm)
+    BitBtn1: TBitBtn;
+    BitBtn2: TBitBtn;
+    cbTables: TComboBox;
+    cxUpdate: TCheckBox;
+    cxDelete: TCheckBox;
+    cxInsert: TCheckBox;
+    edTriggerName: TEdit;
+    Label1: TLabel;
+    Label2: TLabel;
+    rbAfter: TRadioButton;
+    rbBefor: TRadioButton;
+    procedure BitBtn1Click(Sender: TObject);
+  private
+    { private declarations }
+  public
+    { public declarations }
+  end; 
+
+var
+  fmCreateTrigger: TfmCreateTrigger;
+
+implementation
+
+{ TfmCreateTrigger }
+
+procedure TfmCreateTrigger.BitBtn1Click(Sender: TObject);
+begin
+  if (Trim(edTriggerName.Text) = '') or (not (cxDelete.Checked or cxInsert.Checked or cxUpdate.Checked)) then
+    MessageDlg('Incorrect configuration', mtError, [mbOk], 0)
+  else
+    ModalResult:= mrOK;
+end;
+
+initialization
+  {$I createtrigger.lrs}
+
+end.
+

+ 97 - 0
createuser.lfm

@@ -0,0 +1,97 @@
+object fmCreateUser: TfmCreateUser
+  Left = 482
+  Height = 244
+  Top = 444
+  Width = 374
+  BorderStyle = bsDialog
+  Caption = 'Create New User'
+  ClientHeight = 244
+  ClientWidth = 374
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object Label1: TLabel
+    Left = 8
+    Height = 18
+    Top = 49
+    Width = 105
+    Caption = 'New User name'
+    ParentColor = False
+  end
+  object Label2: TLabel
+    Left = 7
+    Height = 18
+    Top = 88
+    Width = 62
+    Caption = 'Password'
+    ParentColor = False
+  end
+  object edUserName: TEdit
+    Left = 128
+    Height = 27
+    Top = 40
+    Width = 160
+    TabOrder = 0
+  end
+  object edPassword: TEdit
+    Left = 129
+    Height = 27
+    Top = 82
+    Width = 160
+    EchoMode = emPassword
+    PasswordChar = '*'
+    TabOrder = 1
+  end
+  object cxGrantRole: TCheckBox
+    Left = 7
+    Height = 22
+    Top = 125
+    Width = 92
+    Caption = 'Grant Role'
+    OnChange = cxGrantRoleChange
+    TabOrder = 2
+  end
+  object cbRoles: TComboBox
+    Left = 54
+    Height = 29
+    Top = 157
+    Width = 162
+    ItemHeight = 0
+    TabOrder = 3
+    Visible = False
+  end
+  object bbCreate: TBitBtn
+    Left = 18
+    Height = 30
+    Top = 199
+    Width = 86
+    Caption = 'Create'
+    Color = 16249563
+    Default = True
+    Kind = bkOK
+    ModalResult = 1
+    TabOrder = 4
+  end
+  object bbCanel: TBitBtn
+    Left = 176
+    Height = 30
+    Top = 199
+    Width = 91
+    Cancel = True
+    Caption = 'Cancel'
+    Color = 16249563
+    Kind = bkCancel
+    ModalResult = 2
+    TabOrder = 5
+  end
+  object Label3: TLabel
+    Left = 13
+    Height = 18
+    Top = 8
+    Width = 262
+    Caption = 'Requires FireBird version 2.5.0 or above'
+    Font.Color = clGray
+    Font.Style = [fsItalic]
+    ParentColor = False
+    ParentFont = False
+  end
+end

+ 27 - 0
createuser.lrs

@@ -0,0 +1,27 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmCreateUser','FORMDATA',[
+  'TPF0'#13'TfmCreateUser'#12'fmCreateUser'#4'Left'#3#226#1#6'Height'#3#244#0#3
+  +'Top'#3#188#1#5'Width'#3'v'#1#11'BorderStyle'#7#8'bsDialog'#7'Caption'#6#15
+  +'Create New User'#12'ClientHeight'#3#244#0#11'ClientWidth'#3'v'#1#8'Position'
+  +#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#6'TLabel'#6'Label1'#4'Lef'
+  +'t'#2#8#6'Height'#2#18#3'Top'#2'1'#5'Width'#2'i'#7'Caption'#6#13'New User na'
+  +'me'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#7#6'Height'#2#18#3
+  +'Top'#2'X'#5'Width'#2'>'#7'Caption'#6#8'Password'#11'ParentColor'#8#0#0#5'TE'
+  +'dit'#10'edUserName'#4'Left'#3#128#0#6'Height'#2#27#3'Top'#2'('#5'Width'#3
+  +#160#0#8'TabOrder'#2#0#0#0#5'TEdit'#10'edPassword'#4'Left'#3#129#0#6'Height'
+  +#2#27#3'Top'#2'R'#5'Width'#3#160#0#8'EchoMode'#7#10'emPassword'#12'PasswordC'
+  +'har'#6#1'*'#8'TabOrder'#2#1#0#0#9'TCheckBox'#11'cxGrantRole'#4'Left'#2#7#6
+  +'Height'#2#22#3'Top'#2'}'#5'Width'#2'\'#7'Caption'#6#10'Grant Role'#8'OnChan'
+  +'ge'#7#17'cxGrantRoleChange'#8'TabOrder'#2#2#0#0#9'TComboBox'#7'cbRoles'#4'L'
+  +'eft'#2'6'#6'Height'#2#29#3'Top'#3#157#0#5'Width'#3#162#0#10'ItemHeight'#2#0
+  +#8'TabOrder'#2#3#7'Visible'#8#0#0#7'TBitBtn'#8'bbCreate'#4'Left'#2#18#6'Heig'
+  +'ht'#2#30#3'Top'#3#199#0#5'Width'#2'V'#7'Caption'#6#6'Create'#5'Color'#4#219
+  +#242#247#0#7'Default'#9#4'Kind'#7#4'bkOK'#11'ModalResult'#2#1#8'TabOrder'#2#4
+  +#0#0#7'TBitBtn'#7'bbCanel'#4'Left'#3#176#0#6'Height'#2#30#3'Top'#3#199#0#5'W'
+  +'idth'#2'['#6'Cancel'#9#7'Caption'#6#6'Cancel'#5'Color'#4#219#242#247#0#4'Ki'
+  +'nd'#7#8'bkCancel'#11'ModalResult'#2#2#8'TabOrder'#2#5#0#0#6'TLabel'#6'Label'
+  +'3'#4'Left'#2#13#6'Height'#2#18#3'Top'#2#8#5'Width'#3#6#1#7'Caption'#6'(Requ'
+  +'ires FireBird version 2.5.0 or above'#10'Font.Color'#7#6'clGray'#10'Font.St'
+  +'yle'#11#8'fsItalic'#0#11'ParentColor'#8#10'ParentFont'#8#0#0#0
+]);

+ 58 - 0
createuser.pas

@@ -0,0 +1,58 @@
+unit CreateUser;
+
+{$mode objfpc}
+
+interface
+
+uses
+  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+  StdCtrls, Buttons;
+
+type
+
+  { TfmCreateUser }
+
+  TfmCreateUser = class(TForm)
+    bbCreate: TBitBtn;
+    bbCanel: TBitBtn;
+    cbRoles: TComboBox;
+    cxGrantRole: TCheckBox;
+    edUserName: TEdit;
+    edPassword: TEdit;
+    Label1: TLabel;
+    Label2: TLabel;
+    Label3: TLabel;
+    procedure cxGrantRoleChange(Sender: TObject);
+  private
+    { private declarations }
+  public
+    procedure Init(dbIndex: Integer);
+    { public declarations }
+  end; 
+
+var
+  fmCreateUser: TfmCreateUser;
+
+implementation
+
+{ TfmCreateUser }
+
+uses SysTables;
+
+procedure TfmCreateUser.cxGrantRoleChange(Sender: TObject);
+begin
+  cbRoles.Visible:= cxGrantRole.Checked;
+end;
+
+procedure TfmCreateUser.Init(dbIndex: Integer);
+var
+  Count: Integer;
+begin
+  cbRoles.Items.CommaText:= dmSysTables.GetDBObjectNames(dbIndex, 9, Count);
+end;
+
+initialization
+  {$I createuser.lrs}
+
+end.
+

+ 159 - 0
dbinfo.lfm

@@ -0,0 +1,159 @@
+object fmDBInfo: TfmDBInfo
+  Left = 323
+  Height = 390
+  Top = 158
+  Width = 701
+  Caption = 'fmDBInfo'
+  ClientHeight = 390
+  ClientWidth = 701
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object Label1: TLabel
+    Left = 15
+    Height = 18
+    Top = 36
+    Width = 65
+    Caption = 'Database'
+    ParentColor = False
+  end
+  object edName: TEdit
+    Left = 136
+    Height = 21
+    Top = 33
+    Width = 479
+    Anchors = [akTop, akLeft, akRight]
+    AutoSelect = False
+    BorderStyle = bsNone
+    Font.Color = clNavy
+    ParentFont = False
+    ReadOnly = True
+    TabOrder = 0
+    Text = 'edName'
+  end
+  object Label2: TLabel
+    Left = 15
+    Height = 18
+    Top = 72
+    Width = 84
+    Caption = 'ODS Version'
+    ParentColor = False
+  end
+  object edODSVer: TEdit
+    Left = 136
+    Height = 21
+    Top = 69
+    Width = 88
+    AutoSelect = False
+    BorderStyle = bsNone
+    Font.Color = clNavy
+    ParentFont = False
+    ReadOnly = True
+    TabOrder = 1
+    Text = 'odsVersion'
+  end
+  object Label3: TLabel
+    Left = 15
+    Height = 18
+    Top = 104
+    Width = 54
+    Caption = 'CharSet'
+    ParentColor = False
+  end
+  object edCharset: TEdit
+    Left = 136
+    Height = 21
+    Top = 104
+    Width = 88
+    AutoSelect = False
+    BorderStyle = bsNone
+    Font.Color = clNavy
+    ParentFont = False
+    ReadOnly = True
+    TabOrder = 2
+    Text = 'odsVersion'
+  end
+  object Label4: TLabel
+    Left = 15
+    Height = 18
+    Top = 136
+    Width = 94
+    Caption = 'Creation Date'
+    ParentColor = False
+  end
+  object edCreationDate: TEdit
+    Left = 136
+    Height = 21
+    Top = 136
+    Width = 176
+    AutoSelect = False
+    BorderStyle = bsNone
+    Font.Color = clNavy
+    ParentFont = False
+    ReadOnly = True
+    TabOrder = 3
+    Text = 'odsVersion'
+  end
+  object Label5: TLabel
+    Left = 15
+    Height = 18
+    Top = 168
+    Width = 64
+    Caption = 'Page Size'
+    ParentColor = False
+  end
+  object edPageSize: TEdit
+    Left = 136
+    Height = 21
+    Top = 168
+    Width = 88
+    AutoSelect = False
+    BorderStyle = bsNone
+    Font.Color = clNavy
+    ParentFont = False
+    ReadOnly = True
+    TabOrder = 4
+    Text = 'odsVersion'
+  end
+  object edDBSize: TEdit
+    Left = 136
+    Height = 21
+    Top = 200
+    Width = 176
+    AutoSelect = False
+    BorderStyle = bsNone
+    Font.Color = clNavy
+    ParentFont = False
+    ReadOnly = True
+    TabOrder = 5
+    Text = 'odsVersion'
+  end
+  object Label6: TLabel
+    Left = 15
+    Height = 18
+    Top = 200
+    Width = 95
+    Caption = 'Database Size'
+    ParentColor = False
+  end
+  object Label7: TLabel
+    Left = 16
+    Height = 18
+    Top = 234
+    Width = 122
+    Caption = 'Connected Clients'
+    ParentColor = False
+  end
+  object meClients: TMemo
+    Left = 16
+    Height = 116
+    Top = 264
+    Width = 673
+    Anchors = [akTop, akLeft, akRight, akBottom]
+    Font.Height = -11
+    Font.Name = 'courier 10 pitch [bitstream]'
+    ParentFont = False
+    ReadOnly = True
+    ScrollBars = ssAutoBoth
+    TabOrder = 6
+  end
+end

+ 43 - 0
dbinfo.pas

@@ -0,0 +1,43 @@
+unit dbInfo;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
+
+type
+
+  { TfmDBInfo }
+
+  TfmDBInfo = class(TForm)
+    edCreationDate: TEdit;
+    edPageSize: TEdit;
+    edDBSize: TEdit;
+    edName: TEdit;
+    edODSVer: TEdit;
+    edCharset: TEdit;
+    Label1: TLabel;
+    Label2: TLabel;
+    Label3: TLabel;
+    Label4: TLabel;
+    Label5: TLabel;
+    Label6: TLabel;
+    Label7: TLabel;
+    meClients: TMemo;
+  private
+    { private declarations }
+  public
+    { public declarations }
+  end; 
+
+var
+  fmDBInfo: TfmDBInfo;
+
+implementation
+
+{$R *.lfm}
+
+end.
+

+ 71 - 0
editdatafullrec.lfm

@@ -0,0 +1,71 @@
+object fmEditDataFullRec: TfmEditDataFullRec
+  Left = 532
+  Height = 300
+  Top = 328
+  Width = 593
+  ActiveControl = bbSave
+  Caption = 'Edit Data Full Record'
+  ClientHeight = 300
+  ClientWidth = 593
+  OnClose = FormClose
+  Position = poScreenCenter
+  LCLVersion = '0.9.30'
+  object Label1: TLabel
+    Left = 258
+    Height = 18
+    Top = 27
+    Width = 60
+    Caption = 'Record #'
+    ParentColor = False
+  end
+  object laPos: TLabel
+    Left = 326
+    Height = 18
+    Top = 27
+    Width = 9
+    Caption = '0'
+    Font.Color = 11610912
+    ParentColor = False
+    ParentFont = False
+  end
+  object DBNavigator1: TDBNavigator
+    Left = 8
+    Height = 25
+    Top = 21
+    Width = 241
+    BevelOuter = bvNone
+    ChildSizing.EnlargeHorizontal = crsScaleChilds
+    ChildSizing.EnlargeVertical = crsScaleChilds
+    ChildSizing.ShrinkHorizontal = crsScaleChilds
+    ChildSizing.ShrinkVertical = crsScaleChilds
+    ChildSizing.Layout = cclLeftToRightThenTopToBottom
+    ChildSizing.ControlsPerLine = 100
+    ClientHeight = 25
+    ClientWidth = 241
+    DataSource = Datasource1
+    TabOrder = 0
+  end
+  object bbSave: TBitBtn
+    Left = 493
+    Height = 30
+    Top = 16
+    Width = 75
+    Caption = 'Save'
+    OnClick = bbSaveClick
+    TabOrder = 1
+  end
+  object Datasource1: TDatasource
+    DataSet = sqEditTable
+    left = 408
+    top = 128
+  end
+  object sqEditTable: TSQLQuery
+    IndexName = 'DEFAULT_ORDER'
+    AutoCalcFields = False
+    AfterScroll = sqEditTableAfterScroll
+    ReadOnly = False
+    Params = <>
+    left = 385
+    top = 48
+  end
+end

+ 25 - 0
editdatafullrec.lrs

@@ -0,0 +1,25 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmEditDataFullRec','FORMDATA',[
+  'TPF0'#18'TfmEditDataFullRec'#17'fmEditDataFullRec'#4'Left'#3#20#2#6'Height'#3
+  +','#1#3'Top'#3'H'#1#5'Width'#3'Q'#2#13'ActiveControl'#7#6'bbSave'#7'Caption'
+  +#6#21'Edit Data Full Record'#12'ClientHeight'#3','#1#11'ClientWidth'#3'Q'#2#7
+  +'OnClose'#7#9'FormClose'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#6
+  +'0.9.30'#0#6'TLabel'#6'Label1'#4'Left'#3#2#1#6'Height'#2#18#3'Top'#2#27#5'Wi'
+  +'dth'#2'<'#7'Caption'#6#8'Record #'#11'ParentColor'#8#0#0#6'TLabel'#5'laPos'
+  +#4'Left'#3'F'#1#6'Height'#2#18#3'Top'#2#27#5'Width'#2#9#7'Caption'#6#1'0'#10
+  +'Font.Color'#4' +'#177#0#11'ParentColor'#8#10'ParentFont'#8#0#0#12'TDBNaviga'
+  +'tor'#12'DBNavigator1'#4'Left'#2#8#6'Height'#2#25#3'Top'#2#21#5'Width'#3#241
+  +#0#10'BevelOuter'#7#6'bvNone'#29'ChildSizing.EnlargeHorizontal'#7#14'crsScal'
+  +'eChilds'#27'ChildSizing.EnlargeVertical'#7#14'crsScaleChilds'#28'ChildSizin'
+  +'g.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14
+  +'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'
+  +#27'ChildSizing.ControlsPerLine'#2'd'#12'ClientHeight'#2#25#11'ClientWidth'#3
+  +#241#0#10'DataSource'#7#11'Datasource1'#8'TabOrder'#2#0#0#0#7'TBitBtn'#6'bbS'
+  +'ave'#4'Left'#3#237#1#6'Height'#2#30#3'Top'#2#16#5'Width'#2'K'#7'Caption'#6#4
+  +'Save'#7'OnClick'#7#11'bbSaveClick'#8'TabOrder'#2#1#0#0#11'TDatasource'#11'D'
+  +'atasource1'#7'DataSet'#7#11'sqEditTable'#4'left'#3#152#1#3'top'#3#128#0#0#0
+  +#9'TSQLQuery'#11'sqEditTable'#9'IndexName'#6#13'DEFAULT_ORDER'#14'AutoCalcFi'
+  +'elds'#8#11'AfterScroll'#7#22'sqEditTableAfterScroll'#8'ReadOnly'#8#6'Params'
+  +#14#0#4'left'#3#129#1#3'top'#2'0'#0#0#0
+]);

+ 174 - 0
editdatafullrec.pas

@@ -0,0 +1,174 @@
+unit EditDataFullRec;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, db, sqldb, IBConnection, FileUtil, LResources, Forms,
+  Controls, Graphics, Dialogs, DbCtrls, StdCtrls, main,
+  Buttons;
+
+type
+
+  { TfmEditDataFullRec }
+
+  TfmEditDataFullRec = class(TForm)
+    bbSave: TBitBtn;
+    Datasource1: TDatasource;
+    DBNavigator1: TDBNavigator;
+    Label1: TLabel;
+    laPos: TLabel;
+    sqEditTable: TSQLQuery;
+    procedure bbSaveClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
+    procedure sqEditTableAfterScroll(DataSet: TDataSet);
+  private
+    ibConnection: TIBConnection;
+    sqlTrans: TSQLTransaction;
+    { private declarations }
+  public
+    procedure CurrentDateClick(Sender: TObject);
+    procedure Init(dbIndex: Integer; ATableName: string);
+    { public declarations }
+  end; 
+
+var
+  fmEditDataFullRec: TfmEditDataFullRec;
+
+implementation
+
+uses Calen;
+
+procedure TfmEditDataFullRec.FormClose(Sender: TObject;
+  var CloseAction: TCloseAction);
+begin
+  if bbSave.Visible then
+    bbSaveClick(nil);
+  sqEditTable.Close;
+  CloseAction:= caFree;
+end;
+
+procedure TfmEditDataFullRec.bbSaveClick(Sender: TObject);
+begin
+  if sqEditTable.State in [dsInsert, dsEdit] then
+    sqEditTable.Post;
+  sqEditTable.ApplyUpdates;
+  SQLTrans.CommitRetaining;
+end;
+
+procedure TfmEditDataFullRec.sqEditTableAfterScroll(DataSet: TDataSet);
+begin
+  laPos.Caption:= IntToStr(sqEditTable.RecNo) + ' of ' + IntToStr(sqEditTable.RecordCount);
+end;
+
+procedure TfmEditDataFullRec.CurrentDateClick(Sender: TObject);
+var
+  FieldNum: Integer;
+begin
+  FieldNum:= (Sender as TBitBtn).Tag;
+  fmCalen.DateTimeValue:= sqEditTable.Fields[FieldNum].AsDateTime;
+
+  if fmCalen.ShowModal = mrOK then
+  begin
+    sqEditTable.Edit;
+    sqEditTable.Fields[FieldNum].AsDateTime:= fmCalen.DateTimeValue;
+  end;
+end;
+
+procedure TfmEditDataFullRec.Init(dbIndex: Integer; ATableName: string);
+var
+  ALabel: TLabel;
+  ADBEdit: TDBEdit;
+  i: Integer;
+  AWidth: Integer;
+  ADBMemo: TDBMemo;
+  ATop: Integer;
+  bbDate: TBitBtn;
+begin
+  ibConnection:= fmMain.RegisteredDatabases[dbIndex].IBConnection;
+  ibConnection.Close;
+  sqlTrans:= fmMain.RegisteredDatabases[dbIndex].SQLTrans;
+  sqEditTable.DataBase:= ibConnection;
+
+
+  sqEditTable.SQL.Text:= 'select * from ' +  ATableName;
+
+  bbSave.Visible:= fmMain.ChangeQueryToBIDirectional(dbIndex, ATableName, sqEditTable);
+  if not bbSave.Visible then
+    ShowMessage('Primary key is not exist, table can not be edited');
+  sqEditTable.Open;
+
+  ATop:= 70;
+  for i:= 0 to sqEditTable.Fields.Count - 1 do
+  begin
+    ALabel:= TLabel.Create(self);
+    ALabel.Parent:= self;
+
+    ALabel.Left:= 20;
+    ALabel.Top:= ATop + 5;
+    ALabel.Caption:= sqEditTable.Fields[i].FieldName;
+
+    // Memo
+    if sqEditTable.Fields[i].DataType = ftBlob then
+    begin
+      ADBMemo:= TDBMemo.Create(self);
+      ADBMemo.Parent:= self;
+      ADBMemo.Left:= 160;
+      ADBMemo.Top:= ATop;
+      ADBMemo.Width:= 400;
+      ADBMemo.Height:= 200;
+      ADBMemo.Anchors:= [akLeft, akTop, akRight];
+      ADBMemo.ScrollBars:= ssBoth;
+      ADBMemo.DataSource:= Datasource1;
+      ADBMemo.DataField:= sqEditTable.Fields[i].FieldName;
+    end
+    else   // Edit control
+    begin
+      ADBEdit:= TDBEdit.Create(self);
+      ADBEdit.Parent:= self;
+
+      ADBEdit.Left:= 160;
+      ADBEdit.Top:= ATop;
+      ADBEdit.DataSource:= Datasource1;
+      ADBEdit.DataField:= sqEditTable.Fields[i].FieldName;
+      AWidth:= 80;
+      if sqEditTable.Fields[i].DataType = ftString then
+        AWidth:= sqEditTable.Fields[i].DataSize * 10
+      else
+      if sqEditTable.Fields[i].DataType = ftDateTime then
+        AWidth:= 140;
+      if AWidth > 400 then
+        AWidth:= 400;
+      ADBEdit.Width:= AWidth;
+    end;
+
+    // DateTime field
+    if sqEditTable.Fields[i].DataType in [ftDate, ftDateTime, ftTime] then
+    begin
+      bbDate:= TBitBtn.Create(self);
+      bbDate.Parent:= self;
+      bbDate.Left:= 180 + AWidth;
+      bbDate.Top:= ATop;
+      bbDate.Caption:= 'Calen.';
+      bbDate.Width:= 60;
+      bbDate.Hint:= 'Date/Time Selector';
+      bbDate.ShowHint:= True;
+      bbDate.Tag:= i;
+      bbDate.OnClick:= @CurrentDateClick;
+    end;
+
+    if sqEditTable.Fields[i].DataType = ftBlob then
+      Inc(ATop, 200)
+    else
+      Inc(ATop, 30);
+  end;
+  Height:= ATop + 10;
+
+end;
+
+initialization
+  {$I editdatafullrec.lrs}
+
+end.
+

+ 99 - 0
edittable.lfm

@@ -0,0 +1,99 @@
+object fmEditTable: TfmEditTable
+  Left = 602
+  Height = 300
+  Top = 404
+  Width = 568
+  ActiveControl = Panel1
+  Caption = 'fmEditTable'
+  ClientHeight = 300
+  ClientWidth = 568
+  OnClose = FormClose
+  OnCreate = FormCreate
+  Position = poScreenCenter
+  LCLVersion = '0.9.30'
+  object Panel1: TPanel
+    Left = 0
+    Height = 50
+    Top = 0
+    Width = 568
+    Align = alTop
+    ClientHeight = 50
+    ClientWidth = 568
+    ParentColor = False
+    TabOrder = 0
+    OnClick = Panel1Click
+    object Label1: TLabel
+      Left = 258
+      Height = 18
+      Top = 27
+      Width = 60
+      Caption = 'Record #'
+      ParentColor = False
+    end
+    object laPos: TLabel
+      Left = 326
+      Height = 18
+      Top = 27
+      Width = 9
+      Caption = '0'
+      Font.Color = 11610912
+      ParentColor = False
+      ParentFont = False
+    end
+    object DBNavigator1: TDBNavigator
+      Left = 8
+      Height = 25
+      Top = 21
+      Width = 241
+      BevelOuter = bvNone
+      ChildSizing.EnlargeHorizontal = crsScaleChilds
+      ChildSizing.EnlargeVertical = crsScaleChilds
+      ChildSizing.ShrinkHorizontal = crsScaleChilds
+      ChildSizing.ShrinkVertical = crsScaleChilds
+      ChildSizing.Layout = cclLeftToRightThenTopToBottom
+      ChildSizing.ControlsPerLine = 100
+      ClientHeight = 25
+      ClientWidth = 241
+      Color = 14539471
+      DataSource = Datasource1
+      ParentColor = False
+      TabOrder = 0
+    end
+    object bbSave: TBitBtn
+      Left = 480
+      Height = 30
+      Top = 15
+      Width = 75
+      Caption = 'Save'
+      OnClick = bbSaveClick
+      TabOrder = 1
+    end
+  end
+  object DBGrid1: TDBGrid
+    Left = 0
+    Height = 250
+    Top = 50
+    Width = 568
+    Align = alClient
+    Color = clWindow
+    Columns = <>
+    DataSource = Datasource1
+    FixedColor = 14539471
+    Scrollbars = ssAutoBoth
+    TabOrder = 1
+  end
+  object Datasource1: TDatasource
+    DataSet = sqEditTable
+    left = 472
+    top = 48
+  end
+  object sqEditTable: TSQLQuery
+    IndexName = 'DEFAULT_ORDER'
+    AutoCalcFields = False
+    AfterScroll = sqEditTableAfterScroll
+    ReadOnly = False
+    Params = <>
+    left = 357
+    top = 20
+  end
+end

+ 32 - 0
edittable.lrs

@@ -0,0 +1,32 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmEditTable','FORMDATA',[
+  'TPF0'#12'TfmEditTable'#11'fmEditTable'#4'Left'#3'Z'#2#6'Height'#3','#1#3'Top'
+  +#3#148#1#5'Width'#3'8'#2#13'ActiveControl'#7#6'Panel1'#7'Caption'#6#11'fmEdi'
+  +'tTable'#12'ClientHeight'#3','#1#11'ClientWidth'#3'8'#2#7'OnClose'#7#9'FormC'
+  +'lose'#8'OnCreate'#7#10'FormCreate'#8'Position'#7#14'poScreenCenter'#10'LCLV'
+  +'ersion'#6#6'0.9.30'#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6'Height'#2'2'#3'Top'
+  +#2#0#5'Width'#3'8'#2#5'Align'#7#5'alTop'#12'ClientHeight'#2'2'#11'ClientWidt'
+  +'h'#3'8'#2#11'ParentColor'#8#8'TabOrder'#2#0#7'OnClick'#7#11'Panel1Click'#0#6
+  +'TLabel'#6'Label1'#4'Left'#3#2#1#6'Height'#2#18#3'Top'#2#27#5'Width'#2'<'#7
+  +'Caption'#6#8'Record #'#11'ParentColor'#8#0#0#6'TLabel'#5'laPos'#4'Left'#3'F'
+  +#1#6'Height'#2#18#3'Top'#2#27#5'Width'#2#9#7'Caption'#6#1'0'#10'Font.Color'#4
+  +' +'#177#0#11'ParentColor'#8#10'ParentFont'#8#0#0#12'TDBNavigator'#12'DBNavi'
+  +'gator1'#4'Left'#2#8#6'Height'#2#25#3'Top'#2#21#5'Width'#3#241#0#10'BevelOut'
+  +'er'#7#6'bvNone'#29'ChildSizing.EnlargeHorizontal'#7#14'crsScaleChilds'#27'C'
+  +'hildSizing.EnlargeVertical'#7#14'crsScaleChilds'#28'ChildSizing.ShrinkHoriz'
+  +'ontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChi'
+  +'lds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSiz'
+  +'ing.ControlsPerLine'#2'd'#12'ClientHeight'#2#25#11'ClientWidth'#3#241#0#5'C'
+  +'olor'#4#207#218#221#0#10'DataSource'#7#11'Datasource1'#11'ParentColor'#8#8
+  +'TabOrder'#2#0#0#0#7'TBitBtn'#6'bbSave'#4'Left'#3#224#1#6'Height'#2#30#3'Top'
+  +#2#15#5'Width'#2'K'#7'Caption'#6#4'Save'#7'OnClick'#7#11'bbSaveClick'#8'TabO'
+  +'rder'#2#1#0#0#0#7'TDBGrid'#7'DBGrid1'#4'Left'#2#0#6'Height'#3#250#0#3'Top'#2
+  +'2'#5'Width'#3'8'#2#5'Align'#7#8'alClient'#5'Color'#7#8'clWindow'#7'Columns'
+  +#14#0#10'DataSource'#7#11'Datasource1'#10'FixedColor'#4#207#218#221#0#10'Scr'
+  +'ollbars'#7#10'ssAutoBoth'#8'TabOrder'#2#1#0#0#11'TDatasource'#11'Datasource'
+  +'1'#7'DataSet'#7#11'sqEditTable'#4'left'#3#216#1#3'top'#2'0'#0#0#9'TSQLQuery'
+  +#11'sqEditTable'#9'IndexName'#6#13'DEFAULT_ORDER'#14'AutoCalcFields'#8#11'Af'
+  +'terScroll'#7#22'sqEditTableAfterScroll'#8'ReadOnly'#8#6'Params'#14#0#4'left'
+  +#3'e'#1#3'top'#2#20#0#0#0
+]);

+ 114 - 0
edittable.pas

@@ -0,0 +1,114 @@
+unit EditTable;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, db, sqldb, IBConnection, FileUtil, LResources, Forms,
+  Controls, Graphics, Dialogs, ExtCtrls, DbCtrls, DBGrids, StdCtrls, ComCtrls,
+  Buttons, main;
+
+type
+
+  { TfmEditTable }
+
+  TfmEditTable = class(TForm)
+    bbSave: TBitBtn;
+    Datasource1: TDatasource;
+    DBGrid1: TDBGrid;
+    DBNavigator1: TDBNavigator;
+    Label1: TLabel;
+    laPos: TLabel;
+    Panel1: TPanel;
+    sqEditTable: TSQLQuery;
+    procedure bbSaveClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
+    procedure FormCreate(Sender: TObject);
+    procedure Panel1Click(Sender: TObject);
+    procedure sqEditTableAfterScroll(DataSet: TDataSet);
+  private
+    ibConnection: TIBConnection;
+    sqlTrans: TSQLTransaction;
+    { private declarations }
+  public
+    { public declarations }
+    Rec: TDatabaseRec;
+    procedure Init(dbIndex: Integer; ATableName: string);
+  end; 
+
+var
+  fmEditTable: TfmEditTable;
+
+implementation
+
+{ TfmEditTable }
+
+procedure TfmEditTable.FormClose(Sender: TObject; var CloseAction: TCloseAction);
+begin
+  sqEditTable.Close;
+  CloseAction:= caFree;
+  ibConnection:= nil;
+  sqlTrans:= nil;
+end;
+
+procedure TfmEditTable.FormCreate(Sender: TObject);
+begin
+  ibConnection:= nil;
+  sqlTrans:= nil;
+end;
+
+procedure TfmEditTable.Panel1Click(Sender: TObject);
+begin
+end;
+
+procedure TfmEditTable.bbSaveClick(Sender: TObject);
+begin
+  try
+    if sqEditTable.State in [dsInsert, dsEdit] then
+      sqEditTable.Post;
+
+    if sqEditTable.Active then
+      sqEditTable.ApplyUpdates;
+    if SQLTrans.Active then
+      SQLTrans.CommitRetaining;
+
+  except
+  on e: exception do
+  begin
+    ShowMessage(e.Message);
+  end;
+  end;
+end;
+
+procedure TfmEditTable.sqEditTableAfterScroll(DataSet: TDataSet);
+begin
+  laPos.Caption:= IntToStr(sqEditTable.RecNo) + ' of ' + IntToStr(sqEditTable.RecordCount);
+end;
+
+procedure TfmEditTable.Init(dbIndex: Integer; ATableName: string);
+begin
+  sqEditTable.Close;
+  if ibConnection = nil then
+  begin
+    ibConnection:= Rec.IBConnection;
+    ibConnection.Close;
+    sqlTrans:= Rec.SQLTrans;
+    sqEditTable.DataBase:= ibConnection;
+  end;
+
+  bbSave.Visible:= fmMain.ChangeQueryToBIDirectional(dbIndex, ATableName, sqEditTable);
+  if not bbSave.Visible then
+    ShowMessage('Primary key is not found on this table. It can not be edited');
+
+  sqEditTable.Close;
+  sqEditTable.SQL.Text:= 'select * from ' + ATableName;
+  sqEditTable.Open;
+
+end;
+
+initialization
+  {$I edittable.lrs}
+
+end.
+

+ 88 - 0
enterpass.lfm

@@ -0,0 +1,88 @@
+object fmEnterPass: TfmEnterPass
+  Left = 362
+  Height = 236
+  Top = 201
+  Width = 388
+  ActiveControl = edUser
+  BorderIcons = [biSystemMenu]
+  BorderStyle = bsDialog
+  Caption = 'Connect to Database As'
+  ClientHeight = 236
+  ClientWidth = 388
+  OnActivate = FormActivate
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object Label1: TLabel
+    Left = 14
+    Height = 18
+    Top = 80
+    Width = 62
+    Caption = 'Password'
+    ParentColor = False
+  end
+  object Label2: TLabel
+    Left = 14
+    Height = 18
+    Top = 30
+    Width = 31
+    Caption = 'User'
+    ParentColor = False
+  end
+  object Label3: TLabel
+    Left = 14
+    Height = 18
+    Top = 125
+    Width = 29
+    Caption = 'Role'
+    ParentColor = False
+  end
+  object edPassword: TEdit
+    Left = 89
+    Height = 27
+    Top = 72
+    Width = 176
+    EchoMode = emPassword
+    PasswordChar = '*'
+    TabOrder = 1
+  end
+  object BitBtn1: TBitBtn
+    Left = 14
+    Height = 30
+    Top = 168
+    Width = 75
+    Caption = '&OK'
+    Color = 16249563
+    Default = True
+    Kind = bkOK
+    ModalResult = 1
+    OnClick = BitBtn1Click
+    TabOrder = 3
+  end
+  object BitBtn2: TBitBtn
+    Left = 102
+    Height = 30
+    Top = 169
+    Width = 98
+    Cancel = True
+    Caption = 'Cancel'
+    Color = 16249563
+    Kind = bkCancel
+    ModalResult = 2
+    TabOrder = 4
+  end
+  object edUser: TEdit
+    Left = 89
+    Height = 27
+    Top = 24
+    Width = 176
+    TabOrder = 0
+  end
+  object cbRole: TComboBox
+    Left = 89
+    Height = 29
+    Top = 114
+    Width = 176
+    ItemHeight = 0
+    TabOrder = 2
+  end
+end

+ 25 - 0
enterpass.lrs

@@ -0,0 +1,25 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmEnterPass','FORMDATA',[
+  'TPF0'#12'TfmEnterPass'#11'fmEnterPass'#4'Left'#3'j'#1#6'Height'#3#236#0#3'To'
+  +'p'#3#201#0#5'Width'#3#132#1#13'ActiveControl'#7#6'edUser'#11'BorderIcons'#11
+  +#12'biSystemMenu'#0#11'BorderStyle'#7#8'bsDialog'#7'Caption'#6#22'Connect to'
+  +' Database As'#12'ClientHeight'#3#236#0#11'ClientWidth'#3#132#1#10'OnActivat'
+  +'e'#7#12'FormActivate'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0'
+  +'.9.31'#0#6'TLabel'#6'Label1'#4'Left'#2#14#6'Height'#2#18#3'Top'#2'P'#5'Widt'
+  +'h'#2'>'#7'Caption'#6#8'Password'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4
+  +'Left'#2#14#6'Height'#2#18#3'Top'#2#30#5'Width'#2#31#7'Caption'#6#4'User'#11
+  +'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2#14#6'Height'#2#18#3'Top'#2
+  +'}'#5'Width'#2#29#7'Caption'#6#4'Role'#11'ParentColor'#8#0#0#5'TEdit'#10'edP'
+  +'assword'#4'Left'#2'Y'#6'Height'#2#27#3'Top'#2'H'#5'Width'#3#176#0#8'EchoMod'
+  +'e'#7#10'emPassword'#12'PasswordChar'#6#1'*'#8'TabOrder'#2#1#0#0#7'TBitBtn'#7
+  +'BitBtn1'#4'Left'#2#14#6'Height'#2#30#3'Top'#3#168#0#5'Width'#2'K'#7'Caption'
+  +#6#3'&OK'#5'Color'#4#219#242#247#0#7'Default'#9#4'Kind'#7#4'bkOK'#11'ModalRe'
+  +'sult'#2#1#7'OnClick'#7#12'BitBtn1Click'#8'TabOrder'#2#3#0#0#7'TBitBtn'#7'Bi'
+  +'tBtn2'#4'Left'#2'f'#6'Height'#2#30#3'Top'#3#169#0#5'Width'#2'b'#6'Cancel'#9
+  +#7'Caption'#6#6'Cancel'#5'Color'#4#219#242#247#0#4'Kind'#7#8'bkCancel'#11'Mo'
+  +'dalResult'#2#2#8'TabOrder'#2#4#0#0#5'TEdit'#6'edUser'#4'Left'#2'Y'#6'Height'
+  +#2#27#3'Top'#2#24#5'Width'#3#176#0#8'TabOrder'#2#0#0#0#9'TComboBox'#6'cbRole'
+  +#4'Left'#2'Y'#6'Height'#2#29#3'Top'#2'r'#5'Width'#3#176#0#10'ItemHeight'#2#0
+  +#8'TabOrder'#2#2#0#0#0
+]);

+ 53 - 0
enterpass.pas

@@ -0,0 +1,53 @@
+unit EnterPass;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+  StdCtrls, Buttons;
+
+type
+
+  { TfmEnterPass }
+
+  TfmEnterPass = class(TForm)
+    BitBtn1: TBitBtn;
+    BitBtn2: TBitBtn;
+    cbRole: TComboBox;
+    edPassword: TEdit;
+    edUser: TEdit;
+    Label1: TLabel;
+    Label2: TLabel;
+    Label3: TLabel;
+    procedure BitBtn1Click(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+  private
+    { private declarations }
+  public
+    { public declarations }
+  end; 
+
+var
+  fmEnterPass: TfmEnterPass;
+
+implementation
+
+{ TfmEnterPass }
+
+procedure TfmEnterPass.FormActivate(Sender: TObject);
+begin
+  edPassword.SetFocus;
+end;
+
+procedure TfmEnterPass.BitBtn1Click(Sender: TObject);
+begin
+
+end;
+
+initialization
+  {$I enterpass.lrs}
+
+end.
+

+ 1899 - 0
main.lfm

@@ -0,0 +1,1899 @@
+object fmMain: TfmMain
+  Left = 334
+  Height = 640
+  Top = 206
+  Width = 1024
+  ActiveControl = tvMain
+  Caption = 'TurboBird Admin for FireBird'
+  ClientHeight = 615
+  ClientWidth = 1024
+  Color = clForm
+  Menu = MainMenu1
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object tvMain: TTreeView
+    Left = 0
+    Height = 615
+    Top = 0
+    Width = 360
+    Align = alLeft
+    BackgroundColor = clWhite
+    Color = clWhite
+    DefaultItemHeight = 19
+    HideSelection = False
+    Images = ImageList1
+    Indent = 25
+    ReadOnly = True
+    RightClickSelect = True
+    ShowLines = False
+    TabOrder = 0
+    OnDblClick = tvMainDblClick
+    OnExpanded = tvMainExpanded
+    Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoShowButtons, tvoShowRoot, tvoToolTips]
+    ExpandSignColor = clMaroon
+  end
+  object Splitter1: TSplitter
+    Left = 360
+    Height = 615
+    Top = 0
+    Width = 14
+  end
+  object PageControl1: TPageControl
+    Left = 374
+    Height = 615
+    Top = 0
+    Width = 650
+    ActivePage = TabSheet1
+    Align = alClient
+    TabIndex = 0
+    TabOrder = 2
+    OnCloseTabClicked = PageControl1CloseTabClicked
+    Options = [nboHidePageListPopup]
+    object TabSheet1: TTabSheet
+      Caption = 'Main'
+      ClientHeight = 584
+      ClientWidth = 646
+      object bbCreateNewDB: TBitBtn
+        Left = 24
+        Height = 93
+        Top = 22
+        Width = 208
+        Caption = 'Create new Database'
+        Glyph.Data = {
+          36100000424D3610000000000000360000002800000020000000200000000100
+          2000000000000010000064000000640000000000000000000000FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF0000000000000000000000000100000001808080028080
+          8002808080025555550340404004666666056666660555555506555555065555
+          5506666666058080800455555503808080028080800280808002000000010000
+          0001000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF000000000180808002666666054D4D4D0A5B5B5B0E5A5A
+          5A115555551259595914555555185252521C5858581D5555551E5555551E5555
+          551E5858581D5858581A55555515515151135A5A5A115555550F5555550C4949
+          4907555555030000000100000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00808080027E7E7F997E7E7FFF7E7E7FFF7E7E7FFF7E7E
+          7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E
+          7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7D7D7EFF7D7D7EFF7D7D7EFF5F5F
+          60FF878787EC4040400400000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00555555037F7F80FFD9D9D9FFDFDFDFFFDFDFDFFFDFDF
+          DFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDF
+          DFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFAEAEAEFFAEAEAEFF7E7F80FF4545
+          45FF828282FF555B5CA300000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF0080808002818182FFCECECEFFCBCBCBFFCBCBCBFFCBCB
+          CBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCB
+          CBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFA4A4A4FFA4A4A4FF63A1BCFFC1E6
+          EFFF83DEF4FF57A8C4BD00000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF0000000001828283FFCFCFCFFFCCCCCCFFCCCCCCFFCCCC
+          CCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCC
+          CCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFA4A4A5FFA4A5A6FF69D4F5FFCCF4
+          FFFF8BE7FEFF6CD4F5FF7BE4FE18FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF0000000000848485FFCFCFCFFFCDCDCDFFCDCDCDFFCDCD
+          CDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCD
+          CDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFA5A5A5FF73A8C1FF64CBF3FFCDF5
+          FFFF8BE7FEFF72D3F5FF3CAEE398FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00868687FFD0D0D0FFCECECEFFCECECEFFCECE
+          CEFFCECECEFFCECECEFFCECECEFFCECECEFFCECECEFFCECECEFFCECECEFFCECE
+          CEFFCECECEFFCECECEFFCECECEFFCECECEFFA5A5A6FF379DD3FF5EBEE8FF8FD1
+          EEFF6FCAEDFF68C5EBFF30A0D9FF32A2DB03FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00888889FFD2D2D2FFD0D0D0FFD0D0D0FFD0D0
+          D0FFD0D0D0FFD0D0D0FFD0D0D0FFD0D0D0FFD0D0D0FFD0D0D0FFD0D0D0FFD0D0
+          D0FFD0D0D0FFD0D0D0FFD0D0D0FFD0D0D0FFA6A6A7FF2090D1FF2898D5FF4FA8
+          DAFF2292D0FF2B96D2FF2090D1FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF008A8A8BFFD3D3D3FFD1D1D1FFD1D1D1FFD1D1
+          D1FFD1D1D1FFD1D1D1FFD1D1D1FFD1D1D1FFD1D1D1FFD1D1D1FFD1D1D1FFD1D1
+          D1FFD1D1D1FFD1D1D1FFD1D1D1FFD1D1D1FFA7A7A7FF1E8DD1FF7BCBF1FF8AC5
+          EAFF4FACDDFFB3DBF1FF1E8DD1FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF008C8C8DFFD5D5D5FFD3D3D3FFD2D2D2FFD2D2
+          D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2
+          D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFA7A7A8FF1B8BD2FF53BCEEFF8AC6
+          EBFF34A2DBFFBEE1F3FF1B8BD2FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF008E8E8FFFD6D6D6FFD4D4D4FFD3D3D3FFD2D2
+          D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2
+          D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFA7A7A8FF1988D2FF51BDF0FF89C8
+          EDFF41ABE0FFC5E6F6FF1988D2FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00919191FFD8D8D8FFD6D6D6FFD6D6D6FFD5D5
+          D5FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2
+          D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFA7A7A8FF1785D3FF51BDF1FF88CA
+          EFFF4BB3E5FFCAE8F8FF1785D3FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00939393FFDADADAFFD8D8D8FFD8D8D8FFD8D8
+          D8FFD7D7D7FFD4D4D4FFD3D3D3FFD3D3D3FFD3D3D3FFD3D3D3FFD3D3D3FFD3D3
+          D3FFD3D3D3FFD3D3D3FFD3D3D3FFD3D3D3FFA8A8A8FF1483D3FF50BEF2FF87CB
+          F0FF4DB7E8FFCBEAF8FF1483D3FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00959596FFE2E2E2FFE1E1E2FFE1E2E1FFE1E2
+          E1FFE1E1E1FFE1E1E1FFE0E0E0FFDFDFDFFFDEDEDEFFDEDEDEFFDEDEDEFFDEDE
+          DEFFDEDEDEFFDEDEDEFFDEDEDEFFDEDEDEFFADADAEFF1280D4FF50BFF4FF86CD
+          F2FF4BB9EBFFCBEBF9FF1280D4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00979798FFE4E4E4FFE3E3E3FFE3E3E3FFE3E3
+          E3FFE3E3E3FFE3E3E3FFE3E3E3FFE3E3E3FFE2E2E2FFE2E2E2FFE1E1E1FFDFDF
+          DFFFDFDFDFFFDEDFDEFFDFDFDFFFDFDFDFFFAEADAEFF0F7DD5FF4FC0F5FF85CE
+          F4FF48BBEEFFCAEBFAFF0F7DD5FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF009A9A9AFFE6E6E6FFE5E5E5FFE5E5E5FFE5E5
+          E5FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5
+          E5FFE5E5E5FFE3E3E3FFE2E2E2FFE1E1E1FFAEAEAFFF0D7AD5FF4FC1F7FF84CF
+          F6FF46BDF1FFC9ECFBFF0D7AD5FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF009C9C9CFFE8E8E8FFE6E7E7FFE7E7E7FFE7E7
+          E6FFE7E7E7FFE7E7E7FFE7E7E6FFE6E6E6FFE6E7E7FFE7E7E7FFE7E6E7FFE7E7
+          E6FFE7E7E7FFE7E7E7FFE7E7E7FFE6E7E7FFB2B1B2FF0A77D6FF4FC2F9FF83D1
+          F8FF47C0F4FFC9ECFCFF0A77D6FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF009E9E9EFFEAEAEAFFE9E9E9FFE9E9E9FFE9E9
+          E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9
+          E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFB3B3B3FF0875D6FF54C5F9FF82D3
+          F9FF45C2F6FFC8EDFCFF0875D6FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00A0A0A0FFEBEBEBFFEBEBEBFFEBEAEAFFEAEB
+          EAFFEAEAEAFFEBEBEBFFEBEBEBFFEBEBEAFFEBEAEAFFEBEAEAFFEBEAEAFFEBEB
+          EAFFEBEBEAFFEAEAEBFFE9EAE9FFEAE9EAFFB3B3B3FF0672D7FF5BC9FBFF81D3
+          FAFF3EC0F5FFC3EBFCFF0672D7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00A2A2A2FFEDEDEDFFECEDEDFFEDEDEDFFEDED
+          ECFFEDECEDFFEDEDEDFFECEDECFFEDECEDFFEDEDEDFFECEDEDFFEDEDEDFFEDED
+          EDFFEDEDEDFFEDEDEDFFEAEAEAFFDCDCDCFFA9A9A9FF0469C9FF94D2EEFF91D2
+          EFFF6DBFE0FFC7ECFAFF0470D7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00A4A4A4FFEFEFEFFFEEEEEEFFEEEEEEFFEFEE
+          EEFFEEEEEEFFEEEEEEFFEEEFEEFFEEEEEEFFEEEEEFFFEEEEEEFFEEEEEEFFEFEE
+          EEFFEEEEEEFFEEEEEEFFEAE9EAFFC7C7C8FFA9A9A9FF959FA9FFABABABFFB3B3
+          B3FFD9D9D9FFD6D6D6FF719DC9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00A6A6A6FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0
+          F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0
+          F0FFF0F0F0FFF0F0F0FFEBEBEBFFCDCDCDFFA5A5A5FF999999FFDADADAFFF2F2
+          F2FFF8F8F8FFE2E2E2FFBEBEBEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00A7A7A7FFF2F2F2FFF2F1F1FFF1F1F1FFF1F1
+          F1FFF1F1F1FFF1F2F1FFF1F1F1FFF2F1F2FFF2F1F2FFF2F1F1FFF1F2F1FFF1F1
+          F1FFF1F1F1FFF2F2F1FFEDEDEDFFD2D2D2FFA7A7A7FFA2A2A2FFE8E8E8FFFDFD
+          FDFFFDFDFDFFE2E2E2FFBEBEBEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00A9A9A9FFF1F0F1FFF0F0F0FFF0F0F0FFF0F0
+          F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0
+          F0FFF0F0F0FFF0F0F0FFEBEBEBFFD0D0D0FFA7A7A7FF9288B0FFC1C1C1FFDDDD
+          DDFFE8E8E8FFD8D8D8FFA395C9D4FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00AAAAAAFFEFEFEFFFF3F3F3FFF3F3F3FFF3F3
+          F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3
+          F3FFF3F3F3FFF3F3F3FFEFEFEFFFD5D5D5FFAAAAAAFF6F43E4FFAD8FFDFFBEA6
+          FEFF9973FDFF9973FDFF7345ECFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00ABABAB96ABABABFFABABABFFABABABFFABAB
+          ABFFABABABFFABABABFFABABABFFABABABFFABABABFFABABABFFABABABFFABAB
+          ABFFABABABFFABABABFFAAAAAAFFA7A7A7FFA7A7A7FF8357F4FFC9B5FCFFD8CA
+          FDFFB194FBFFAB8CFAFF8458F7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009066FF969066FFFF9066
+          FFFF9066FFFF9066FFFF9066FF96FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
+        }
+        OnClick = mnCreateDBClick
+        TabOrder = 0
+      end
+      object bbRegisterDB: TBitBtn
+        Left = 24
+        Height = 93
+        Top = 139
+        Width = 208
+        Caption = 'Register Database'
+        Glyph.Data = {
+          36100000424D3610000000000000360000002800000020000000200000000100
+          2000000000000010000064000000640000000000000000000000FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF0000000000000000000000000100000001808080028080
+          8002808080025555550340404004666666056666660555555506555555065555
+          5506666666058080800455555503808080028080800280808002000000010000
+          0001000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF000000000180808002666666054D4D4D0A5B5B5B0E5A5A
+          5A115555551259595914555555185252521C5858581D5555551E5555551E5555
+          551E5858581D5858581A55555515515151135A5A5A115555550F5555550C4949
+          4907555555030000000100000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00808080027E7E7F997E7E7FFF7E7E7FFF7E7E7FFF7E7E
+          7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E
+          7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E
+          7FFF7D7D7E9B4040400400000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00555555037F7F80FFD9D9D9FFDFDFDFFFDFDFDFFFDFDF
+          DFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDF
+          DFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFD9D9
+          D9FF7F7F80FF5555550600000001FFFFFF00FFFFFF00FFFFFF00B206AD00B206
+          AD00B206AD00B206AD0080808002818182FFCECECEFFCBCBCBFFCBCBCBFFCBCB
+          CBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCB
+          CBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCECE
+          CEFF818182FF4040400400000001FFFFFF00FFFFFF00FFFFFF00B206AD00B206
+          AD00B206AD00B206AD0000000001828283FFCFCFCFFFCCCCCCFFCCCCCCFFCCCC
+          CCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCC
+          CCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCFCF
+          CFFF828283FF0000000100000000FFFFFF00FFFFFF00FFFFFF00B206AD00B206
+          AD00B206AD00B206AD00B206AD00848485FFCFCFCFFFCDCDCDFFCDCDCDFFCDCD
+          CDFFCDCDCDFFC8C8C8FFC3C3C3FFC8C8C8FFCDCDCDFFCDCDCDFFCDCDCDFFCDCD
+          CDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCFCF
+          CFFF848485FF0000000000000000FFFFFF00FFFFFF00FFFFFF00B206AD00B206
+          AD00B206AD00B206AD00B206AD00868687FFD0D0D0FFCECECEFFA0A0A0FF7F7F
+          80FF8E5B8EFF9C399AFF8A4888FF707071FF7C7C7DFF7F7F80FF7F7F80FF7F7F
+          80FF7F7F80FF7F7F80FF7F7F80FF7F7F80FF7F7F80FFA0A0A0FFCECECEFFD0D0
+          D0FF868687FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFDFF00888889FFD2D2D2FFD0D0D0FF828283FFE4E4
+          E4FFC56FC3FFEC6DE9FFBF4FBDFFB167AFFFBFBFC0FFD4D4D5FFD9D9DAFFD9D9
+          DAFFD9D9DAFFD9D9DAFFD9D9DAFFD9D9DAFFE4E4E4FF828283FFD0D0D0FFD2D2
+          D2FF888889FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007D7D7E017D7D
+          7E047D7D7E0A7D7D7E107D7D7E18818182FFC3C3C3FFBFBFBFFF79797AFFD2D2
+          D2FFC06ABEFFDE54DAFFDF59DBFFB739B3FFA756A4FFACACADFFBFBFBFFFC4C4
+          C4FFC4C4C4FFC4C4C4FFC4C4C4FFCFCFCFFFE8E8E8FF858586FFD1D1D1FFD3D3
+          D3FF8A8A8BFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007D7D7E037D7D
+          7E0A7D7D7E148669861E90528F278B788CFFCBABCAFFCA9CC9FF975C96FFD48B
+          D2FFBD67BBFFD343CFFFCC38C7FFE263DEFF8F10A9FF5C1992FF063087FF0838
+          95FF0B3C9CFF1243A0FF2355ABFFC9C9C9FFEDEDEDFF89898AFFD2D2D2FFD4D4
+          D4FF8C8C8DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E757E315E756
+          E234E555E258E353DF84E453E0AECE54CBFFD549D1FFD33CCFFFD43FD0FFD644
+          D2FFD340D0FFC42EC0FFC22CBCFFCE42C9FFE368DFFF9D13B2FF6C27A8FF1E5B
+          BBFF2366CFFF2B6DD5FF3D7AD9FFC9C9C9FFEDEDEDFF8D8D8EFFD2D2D2FFD4D4
+          D4FF8E8E8FFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E655E215E555
+          E134E554E158E352DF84D53CD1AEBF3DBBFFC32BBEFFBF1ABBFFC11DBCFFC323
+          BFFFC527C1FFC52AC1FFC733C1FFCD3FC7FFD64FD1FFE671E3FFA912B2FF7E36
+          AFFF4A8ED6FF589EE7FF3E8AE1FFD7D7D7FFF2F2F2FF929292FFD2D2D2FFD4D4
+          D4FF919191FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E655E215E555
+          E134E554E158E352DF84D53CD1AEC03DBCFFC32BBEFFBF1ABBFFC11DBCFFC323
+          BFFFC527C1FFC72CC3FFCE3BCAFFD044CAFFD54DCFFFDB59D6FFEC7DE7FFB00C
+          AFFF70ADE0FF6EB4EFFF5CA7EBFFD7D7D7FFF2F2F2FF969697FFD3D3D3FFD5D5
+          D5FF939393FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E655E215E555
+          E134E554E158E454E087D741D3B3C545C1FFCB37C6FFC92CC6FFCE33C9FFD23D
+          CEFFD645D2FFDA4ED6FFE05DDDFFE368DFFFE772E3FFEB7DE8FFF599F1FFB00D
+          B0FF66B7EFFF5CB6F3FF50ACF0FFD7D7D7FFF2F2F2FF9B9B9BFFDEDEDEFFDDDD
+          DDFF959596FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E655E215E555
+          E134E554E158E454E087D741D3B3C546C1FFCB38C6FFC92CC6FFCE33C9FFD23D
+          CEFFD645D2FFD84CD5FFDC57D7FFE264DDFFE873E4FFF290EFFFAE16B3FF985A
+          CCFF74CBFAFF69C7F9FF50BCF8FFD7D7D7FFF2F2F2FF9F9F9FFFDFDFDFFFDDDD
+          DDFF979798FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E757E315E756
+          E234E555E258E455E087E557E0B3D45DD1FFDB54D7FFDA4BD6FFDD52D9FFE05A
+          DDFFE05ADDFFD84FD4FFD951D4FFE266DEFFEF87ECFFAE24B8FFA464CEFF95D7
+          FBFF95D7FBFF8FD5FBFF7ACDFAFFD7D7D7FFF2F2F2FFA3A3A3FFE0DFE0FFDEDD
+          DEFF9A9A9AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00B206AD05B206AD0E9E8B9EFFDEBEDDFFD8AAD7FFAA6FA8FFD990
+          D7FFCA74C8FFE261DEFFDF5BDBFFEE81EBFFBA31B6FFC46DC1FFDADADAFFDADA
+          DAFFDADADAFFDADADAFFDADADAFFDADADAFFF3F3F3FFA6A6A6FFE4E4E4FFE0E0
+          E0FF9B9B9BFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00D564CB00D564CB009E9E9EFFEAEAEAFFE9E9E9FFA9A9A9FFFDFD
+          FDFFD680D4FFE96FE6FFEB76E8FFC648C2FFD686D4FFFBFBFBFFFBFBFBFFFBFB
+          FBFFFBFBFBFFFBFBFBFFFBFBFBFFFAFAFAFFFCFCFCFFA9A9A9FFE9E9E9FFE8E8
+          E8FF9E9E9EFFABABAB00ABABAB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFDFF00A0A0A0FFEBEBEBFFEBEBEBFFC5C5C5FFABAB
+          ABFFAF58ACFFEC6DE9FFB03FACFFAC63AAFFABABABFFABABABFFABABABFFABAB
+          ABFFABABABFFABABABFFABABABFFAAAAAAFFAAAAAAFFC5C5C5FFEBEBEBFFE8E8
+          E8FF9E9E9EFFABABAB04ABABAB00FFFFFF00FFFFFF00FFFFFF00B206AD00B206
+          AD00B206AD00B206AD00B206AD00A2A2A2FFEDEDEDFFECEDEDFFEDEDEDFFEDED
+          ECFFDBA8DAFFCB68C8FFD694D4FFEDECEDFFEDEDEDFFECEDEDFFEDEDEDFFEDED
+          EDFFEDEDEDFFEDEDEDFFEAEAEAFFDCDCDCFFDADADAFFDDDDDDFFDFDFDFFFDEDE
+          DEFFA0A0A0FFABABAB09ABABAB00FFFFFF00FFFFFF00FFFFFF00B206AD00B206
+          AD00B206AD00B206AD00B206AD00A4A4A4FFEFEFEFFFEEEEEEFFEEEEEEFFEFEE
+          EEFFEEEEEEFFEEEEEEFFEEEFEEFFEEEEEEFFEEEEEFFFEEEEEEFFEEEEEEFFEFEE
+          EEFFEEEEEEFFEEEEEEFFEAE9EAFFC7C7C8FFAEAEAEFFB4B4B4FFB7B7B7FFB7B7
+          B7FF9D9D9DFFABABAB07ABABAB00FFFFFF00FFFFFF00FFFFFF00B206AD00B206
+          AD00B206AD00B206AD00B206AD00A6A6A6FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0
+          F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0
+          F0FFF0F0F0FFF0F0F0FFEBEBEBFFCDCDCDFFB6B6B6FFD7D8D8FFE1E1E1FFC4C4
+          C4FFA3A3A39CABABAB01ABABAB00FFFFFF00FFFFFF00FFFFFF00B206AD00B206
+          AD00B206AD00B206AD00B206AD00A7A7A7FFF2F2F2FFF2F1F1FFF1F1F1FFF1F1
+          F1FFF1F1F1FFF1F2F1FFF1F1F1FFF2F1F2FFF2F1F2FFF2F1F1FFF1F2F1FFF1F1
+          F1FFF1F1F1FFF2F2F1FFEDEDEDFFD2D2D2FFB8B8B8FFE2E2E2FFDEDEDEFFA9A9
+          A9FFA7A7A72DABABAB00ABABAB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00A9A9A9FFF1F0F1FFF0F0F0FFF0F0F0FFF0F0
+          F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0
+          F0FFF0F0F0FFF0F0F0FFEBEBEBFFD0D0D0FFB9B9B9FFDCDCDCFFB2B2B2FFA9A9
+          A963ABABAB00ABABAB00ABABAB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00AAAAAAFFEFEFEFFFF3F3F3FFF3F3F3FFF3F3
+          F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3
+          F3FFF3F3F3FFF3F3F3FFEFEFEFFFD5D5D5FFC5C5C5FFB7B7B7FFAAAAAA84ABAB
+          AB00ABABAB00ABABAB00ABABAB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00ABABAB96ABABABFFABABABFFABABABFFABAB
+          ABFFABABABFFABABABFFABABABFFABABABFFABABABFFABABABFFABABABFFABAB
+          ABFFABABABFFABABABFFAAAAAAFFA7A7A7FFA7A7A7FFA9A9A999ABABAB00ABAB
+          AB00ABABAB00ABABAB00ABABAB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
+        }
+        OnClick = mnRegDBClick
+        TabOrder = 1
+      end
+      object bbRestoreDB: TBitBtn
+        Left = 24
+        Height = 93
+        Top = 259
+        Width = 208
+        Caption = 'Restore Database'
+        Glyph.Data = {
+          36100000424D3610000000000000360000002800000020000000200000000100
+          2000000000000010000064000000640000000000000000000000FFFFFF00FFFF
+          FF00FFFFFF007D7D7E007D7D7E007D7D7E000000000100000001808080028080
+          800280808002555555034040400466666605565656074545450B3E3E3E103D3D
+          3D114242420F54545409464646058080800280808002585858042A2A2A062D2D
+          2D0B3232320B3232320A3232320532323202FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF007D7D7E000000000180808002666666054D4D4D0A5B5B5B0E5A5A
+          5A115555551259595914555555185252521C535353214848482A414141383F3F
+          3F3B42424237494949274D4D4D1A515151135A5A5A114B4B4B14414141193535
+          3523343434243030301E3232320E32323205FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF007E7E7F00808080026D6D6D0755555512555555215757572F5757
+          57385959593C63636352737373907A7A7BCA777778DD4E4E4EFB353535FF3535
+          35FF353535FF424242D9565657624F4F4F484F4F4F444B4B4B45373737B33535
+          35FF353535FF353535FF353535A23232320AFFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF007F7F8000555555035D5D5D0B5858581D575757355858584B6767
+          6876777778BD878788FFA4A2A4FFC1BBBFFFC2BCC1FF393939FF4E4E4FFF4949
+          4AFF49494AFF393939FF737173FF646465C95353549043434374393939FF4949
+          4AFF49494AFF4E4E4FFF393939FF3232320DFFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF0081818100808080026D6D6D0755555512555555217B7B7B9D8787
+          87FFB4B3B4FFD4D1D3FFD1CDD0FFCAC4C8FFBCB4B8FF3D3D3EFF656565FF4C4C
+          4CFF555555FF3D3D3EFF3D3D3EFF3D3D3EFF3D3D3EFF3D3D3EFF3D3D3EFF5555
+          55FF4C4C4CFF656565FF3D3D3EFF3232320EFFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00828283000000000180808002666666058181829799999AFFCFCE
+          CFFFCDCACCFFC4C2C4FFC0BEC1FFBEBABFFFB5AFB3FF434343FF727272FF5C5C
+          5CFF656566FF515152FF4C4C4DFF4C4C4DFF4C4C4DFF4C4C4DFF515152FF6565
+          66FF5C5C5CFF727272FF434343FF3232320EFFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF0084848500848485008484850084848593A3A2A3FFD0CED0FFC7C7
+          C8FFC0C0C2FFC0BFC2FFBFBFC2FFBDBEC2FFB5B2B6FF484849FF737374FF9797
+          97FF5D5D5DFFABABABFFABABABFFABABABFFABABABFFABABABFFABABABFF5D5D
+          5DFF979797FF737374FF484849FF3232320EFFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF008585860085858600858586879B9A9BFFD1CFD0FFC9C7C9FFC3C2
+          C4FFC1C1C4FFC0C1C4FFBEC1C4FFBEBFC4FFB5B5B9FF4E4E4FFF767677FFD3D3
+          D3FF656566FFABABABFF601A68FF601A68FF601A68FF601A68FFABABABFF6565
+          66FFD3D3D3FF767677FF4E4E4FFF3232320EFFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00878788008787882D8E8E8FFFCECCCDFFCDCACCFFC5C4C6FFC3C3
+          C6FFC1C3C6FFBFC2C6FFBDC2C6FFBDC2C7FFB3B7BCFF545455FF797979FF7676
+          76FF696969FFC9C9C9FFB206ADFFB206ADFFB206ADFFB206ADFFC9C9C9FF6969
+          69FF767676FF797979FF545455FF3232320EFFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF0089898A0089898A96B5B3B4FFD1CED0FFC9C6C9FFC7C5C9FFC4C5
+          C8FFC1C4C8FFBFC4C8FFBEC4C8FFBCC3C9FFB4B9C1FF5B5B5BFF8A8A8AFFA2A2
+          A2FF7F7F80FFC0C0C0FFB038ACFFB038ACFFB038ACFFB038ACFFC0C0C0FF7F7F
+          80FFA2A2A2FF7C7C7CFF5B5B5BFF3232320EFFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF008B8B8C1B939293FFD3CFD1FFD0CBCEFFCBC8CBFFC8C7CBFFC5C7
+          CBFFC2C6CAFFC0C6CAFFBFC8CEFFC5CED6FFC4CDD5FF616161FF8F8E8EFFCBCB
+          CBFF848484FFD0D0CFFFCA7CC3FFCB7CC3FFCB7CC3FFCA7CC3FFCFCFD0FF8484
+          84FFCBCBCBFF7F7F7FFF616161FF3232320EFFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF008D8D8E78AEADAEFFD4CFD2FFCECACDFFCCC9CDFFC9C9CDFFC5C8
+          CDFFC2C8CCFFC2CAD0FFC7D2D8FFBCC7CDFFA3A6AAFF676767FF929293FF9191
+          92FF89898AFFD3D3D3FFCE7FC7FFCE7FC7FFCE7FC7FFCE7FC7FFD3D3D3FF8989
+          8AFF919192FF808081FF676767FF3232320EFFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00909090BAC2BFC1FFD4CFD2FFD0CCCFFFCDCBCFFFCACBCFFFC6CA
+          CFFFC3C9CEFFC5CFD5FFBAC3C8FF9B9C9EFF8383836E6C6C6DFF989899FFAFAF
+          B0FF919192FFD7D6D6FFD7D6D6FFD6D6D7FFD7D7D7FFD6D6D6FFD6D7D7FF9191
+          92FFAFAFB0FF838384FF6C6C6DFF3232320EFFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00929292E4CFCCCEFFD5D1D3FFD1CFD2FFCFCED2FFCCCED2FFC8CD
+          D1FFC4CCD1FFC7D0D7FFA8ABAEFF929292663232320D727272FF9D9D9EFFD8D8
+          D8FFA9A9AAFFACACADFFAEAEAFFFAFAFB0FFAFAFB0FFAEAEAFFFACACADFFA9A9
+          AAFFD8D8D8FF858586FF727272FF3232320DFFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00949495F9D5D3D4FFD5D2D4FFD3D2D4FFD1D1D4FFCDD0D4FFCAD0
+          D4FFC7CFD4FFC4CED5FF9A9B9CFF9494951C3232320A767677FFAAABABFFA6A6
+          A6FFAEAEAFFF767677FF767677FF767677FF767677FF767677FF969697FFAFAF
+          AFFFA5A5A6FF939394FF767677FF3232320AFFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00969697F9D6D4D5FFE5E4E4FFE4E3E4FFE2E2E4FFE0E2E4FFDEE2
+          E4FFDCE1E4FFDCE2E7FFBFBFC0FFEDEDED6BF3F5F55D7A7A7BFFB3B3B4FFB6B6
+          B6FFB4B4B5FF7A7A7BFFD7DEE3FFDAE0E4FFDBE1E4FFDBDEE0FF9B9B9CFFB4B4
+          B5FFB6B6B6FF9C9C9DFF7A7A7BFF32323205FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00989899E4D2D0D1FFE6E5E5FFE5E4E5FFE3E4E5FFE1E4E5FFDFE3
+          E5FFDDE2E6FFDFE4E9FFCBCDCFFFD3D3D39BF9FBFB5B959596BC7D7D7EFF7D7D
+          7EFF7D7D7EFF9B9C9EFFDBE3E7FFDBE2E6FFDDE2E6FFDFE2E5FFA5A6A7FF7D7D
+          7EFF7D7D7EFF7D7D7EFF878788F432323202FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF009B9B9BBDC9C8C9FFE5E5E5FFE6E6E6FFE5E5E6FFE3E5E6FFE1E4
+          E6FFE0E4E7FFE1E6EAFFD9DEE2FFC4C4C6FFD3D4D49DECEDED6DEEEEEE6BD4D4
+          D49BC4C4C6FFD6DDE0FFDDE5E9FFDDE4E6FFE0E4E7FFE2E4E7FFE4E5E7FFE6E5
+          E7FFE9E8E9FFCFCDCEFF9B9B9BBD32323200FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF009D9D9D78BBBBBBFFE6E5E6FFE8E8E8FFE7E8E8FFE6E7E8FFE4E6
+          E8FFE2E6E9FFE2E6EAFFE5EAEDFFDCE0E5FFCFD0D2FFC3C4C4FFC4C4C5FFCFD1
+          D3FFD9E0E4FFE0E9ECFFDFE6E9FFE0E6E8FFE2E6E8FFE4E6E9FFE6E7E9FFE8E8
+          E9FFEBEAEBFFBDBCBCFF9D9D9D7832323200FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF009F9F9F21A8A8A8FFE3E2E3FFEBEBEBFFEAE9EAFFE8E8EAFFE6E8
+          EAFFE5E8EAFFE5E8EAFFE6E8ECFFE8E9EEFFE8E8EEFFE7EBF0FFE6EDF2FFE5EB
+          EFFFE1E9EDFFE1E8EAFFE1E7EAFFE3E8EAFFE4E8EAFFE7E8EAFFE8E8EAFFECEB
+          EBFFE9E7E8FFA8A8A8FF9F9F9F219F9F9F00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00A1A1A100A1A1A19FCBCACBFFEDECEDFFEBEAEBFFEAEAEBFFE9EA
+          EBFFE8EAEBFFE8E9EBFFE9E9EDFFEAE6EBFFE7E4E9FFE5E5EAFFE4E8ECFFE3E8
+          EBFFE3E8EBFFE3E8EBFFE4E9EBFFE6E9EBFFE8EAEBFFE9EAEBFFEAEAEBFFEFEE
+          EFFFCFCFCFFFA1A1A19FA1A1A100A1A1A100FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00A3A3A300A3A3A336AAAAAAFFE8E6E7FFEFEEEFFFECEBECFFECEB
+          ECFFEBEBECFFEBEBEDFFECEAEDFFEBE6EBFFE9E4E9FFE8E7EAFFE7EAEDFFE6EA
+          ECFFE6EAECFFE6EAECFFE7EAEBFFE8EBEBFFEAEBECFFEBEBECFFEFEEEFFFECEB
+          EBFFAAAAAAFFA3A3A336A3A3A300A3A3A300FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00A4A4A400A4A4A400A4A4A48ABAB9BAFFF1EFEFFFF1EFEFFFEFED
+          EDFFEFEDEEFFEFECEEFFEFEBEEFFEEE6EAFFEAE6E8FFE9E6E9FFEAEBEDFFEAEB
+          EDFFEAEBEDFFEAECEDFFEAECEDFFEBECEDFFECEDEDFFEFEFEFFFF1F1F1FFBDBC
+          BCFFA4A4A48AFFFFFF00A4A4A400A4A4A400FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00A6A6A600A6A6A600FFFFFF00A6A6A696C7C5C5FFF4F1F1FFF3F0
+          F1FFF2EDEFFFF2EDEFFFF1EBEDFFEFE6E8FFEDE6E8FFEBE7EAFFECEBEDFFEBED
+          EEFFECEDEDFFECEDEDFFEDEDEDFFEDEDEDFFF1F0F0FFF3F3F3FFCACACAFFA6A6
+          A696FFFFFF00FFFFFF00A6A6A600A6A6A600FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00A7A7A800A7A7A800FFFFFF00A7A7A806A7A7A896BFBDBEFFF2F0
+          F2FFF6F3F4FFF5EFF1FFF3EAEBFFF1E7E9FFEFE7E9FFEDE7E8FFEFEDEEFFEFEF
+          EFFFEFEFEFFFEFEFEFFFF1F0F0FFF3F3F3FFF2F1F1FFC1C0C1FFA7A7A896A7A7
+          A806FFFFFF00FFFFFF00A7A7A800A7A7A800FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00A9A9A900A9A9A900FFFFFF00FFFFFF00FFFFFF00A9A9A98AB1B1
+          B1FFDAD7D8FFF8F3F3FFF9F2F3FFF5EDEFFFF3EAEBFFF1EAEBFFF1EDEEFFF3F1
+          F2FFF4F3F3FFF6F4F4FFF5F4F4FFDADADAFFB1B1B1FFA9A9A98AFFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00A9A9A900A9A9A900FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00AAAAAA00AAAAAA00FFFFFF00FFFFFF00FFFFFF00FFFFFF00AAAA
+          AA33AAAAAA9CB2B2B2FFCBC9CAFFE4E0E1FFEAE6E7FFF7F2F3FFF7F4F5FFEAE9
+          EAFFE3E2E2FFCAC9C9FFB2B2B2FFAAAAAA9CAAAAAA33FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00AAAAAA00AAAAAA00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00ABABAB00ABABAB00ABABAB00ABABAB00ABABAB00ABABAB00ABAB
+          AB00ABABAB00ABABAB1BABABAB6CABABABB7ABABABCCABABABFCABABABFCABAB
+          ABCCABABABB7ABABAB6CABABAB1BABABAB00ABABAB00ABABAB00ABABAB00ABAB
+          AB00ABABAB00ABABAB00ABABAB00ABABAB00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+          FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
+        }
+        OnClick = mnRestoreClick
+        TabOrder = 2
+      end
+    end
+  end
+  object MainMenu1: TMainMenu
+    left = 63
+    top = 113
+    object MenuItem1: TMenuItem
+      Caption = '&File'
+      object mnCreateDB: TMenuItem
+        Caption = 'Create new Database'
+        OnClick = mnCreateDBClick
+      end
+      object mnRegDB: TMenuItem
+        Caption = 'Register Database'
+        OnClick = mnRegDBClick
+      end
+      object mnRestore: TMenuItem
+        Caption = 'Restore Database'
+        OnClick = mnRestoreClick
+      end
+      object mnExit: TMenuItem
+        Caption = 'Exit'
+        OnClick = mnExitClick
+      end
+    end
+    object MenuItem5: TMenuItem
+      Caption = 'Help'
+      object MenuItem6: TMenuItem
+        Caption = 'About'
+        OnClick = MenuItem6Click
+      end
+    end
+  end
+  object ImageList1: TImageList
+    left = 180
+    top = 82
+    Bitmap = {
+      4C691D0000001000000010000000FFFFFE00FFFDFCFFFFFEFFFFFCFBFFFFFBFB
+      FFFFFDFCFFFFF3F1FDFFFDFBFFFFFDFBFFFFF3F2FCFFFDFCFFFFFBFBFFFFFCFB
+      FFFFFFFFFFFFFFFDFDFFFFFFFE00F4F2F1FFFFFFFFFFF9F8FAFFFFFEFFFFFDFC
+      FFFFFDFCFFFFFAF8FFFFFAF8FFFFFAF8FFFFFAF8FFFFFDFCFFFFFDFDFFFFFFFE
+      FFFFF9F8FAFFFFFFFFFFF4F2F1FFFFFFFFFFFCFCFCFFFFFEFFFFFBFAFEFFF6F5
+      FEFF4A4953FF40404CFF474755FF474755FF40404CFF4A4953FFF6F5FEFFFBF9
+      FFFFFFFEFFFFFCFCFCFFFFFFFFFFFFFEFFFFFFFEFFFFFAF9FDFFF9F9FFFF4342
+      4CFF3F3F4BFFA1A1AFFF90909EFF908F9FFFA1A1AFFF413F4BFF43424CFFFBF9
+      FFFFFAF9FDFFFFFEFFFFFFFFFFFFFAFBFFFFFDFEFFFFF6F6FCFF47464FFF4947
+      53FF9F9FADFF9C9BABFF9D9DADFF9D9DAFFF9B9BABFF9F9FADFF474753FF4746
+      4FFFF6F6FCFFFDFEFFFFFAFCFDFFFCFDFFFFFDFDFFFFFDFCFFFF44454FFF4545
+      53FF2E2E3EFF9797A9FF9A9AACFF9A9AACFF9797A9FF2F2E3EFF454551FF4645
+      4FFFFDFCFFFFFDFDFFFFFCFDFFFFF8F8FEFFFDFDFFFFF4F6FEFF454650FFA5A5
+      B3FF4D4D5DFF4B4B5DFF37384CFF37384CFF494B5DFF4D4D5DFFA4A5B3FF4545
+      51FFF4F6FEFFFDFDFFFFF8F8FEFFFDFDFFFFFCFCFFFFFBFCFFFF3F3F4BFFB7B8
+      C6FFB1B1C1FFABACC0FFB5B6CAFFB5B6CAFFABADBFFFB1B1C3FFB7B8C6FF3F3F
+      4BFFFBFDFFFFFCFBFFFFFDFDFFFFFDFDFFFFF8F8FEFFFBFCFFFF464652FFB0B1
+      BFFFB8B8C8FFA7A8BCFFB3B4C8FFB3B4C8FFA7A9BBFFB8B8CAFFB0B1BFFF4646
+      52FFFBFDFFFFF8F7FFFFFDFDFFFFF6F6FCFFFDFDFFFFF3F5FDFF454650FFB1B1
+      BFFFAAAABAFFC1C1D3FFB4B5C9FFB4B5C9FFBFC1D3FFAAAABAFFB0B1BFFF4545
+      51FFF3F5FDFFFDFDFFFFF6F6FCFFFDFEFFFFF4F4FAFFFDFCFFFF4C4D57FFB5B5
+      C3FFB9B9C9FFAFAFC1FFACACBEFFACACBEFFAFAFC1FFBAB9C9FFB5B5C1FF4E4D
+      57FFFDFCFFFFF4F4FAFFFDFEFFFFF3F4F8FFFDFEFFFFFDFDFFFF35343DFFBEBC
+      C8FFACACBAFFABAABAFFB9B9C9FFB9B9CBFFAAAABAFFACACBAFFBCBCC8FF3534
+      3DFFFDFDFFFFFDFEFFFFF3F5F6FFFEFDFFFFFFFEFFFFFFFEFFFF4B4B51FF3736
+      40FFA8A8B4FF9B9BA9FF9797A5FF9796A6FF9B9BA9FFAAA8B4FF373640FF4D4B
+      51FFFFFEFFFFFFFEFFFFFEFEFEFFFFFFFFFFFDFDFDFFF6F5F7FFFEFDFFFF403F
+      48FF3F3E48FF42424EFF434351FF434351FF42424EFF3F3E48FF403F48FFFEFC
+      FFFFF6F5F7FFFDFDFDFFFFFFFFFFFDFBFAFFFEFCFCFFFFFEFFFFFEFDFFFFFDFC
+      FFFFFDFCFFFFFBF9FFFFFAF8FFFFFAF8FFFFFBF9FFFFFDFCFFFFFDFDFFFFFEFD
+      FFFFFFFEFFFFFEFCFCFFFDFBFAFFFFFFFE00FDFBFAFFFFFEFFFFFFFEFFFFFAFA
+      FFFFFDFCFFFFFBF9FFFFFDFBFFFFFDFBFFFFFBFAFFFFFDFCFFFFFAFAFFFFFFFE
+      FFFFFFFFFFFFFDFBFBFFFFFFFE00F9FCF3FFFFFFFC00F7F9FAFFFCFDFFFFFBFE
+      FFFFF7FCFAFFFBFFF8FFFBFFF5FFF7FFF1FFFBFFF8FFF9FEFCFFF3F7F8FFFDFD
+      FFFFFDFFFFFFF8F9F5FFFFFFF9FFFFFFF9FFFFFFFC00FCFEFFFFFBFCFFFFFBFE
+      FFFFF7FCFAFFFBFFF8FFF7FFF1FFFBFFF5FFFBFFF8FFFBFFFEFFFBFFFFFFFDFD
+      FFFFFDFFFFFFFFFFFC00FDFFF7FFFFFFF9FFFEFFFBFFFCFEFFFFF9FAFEFFFBFE
+      FFFFF4F9F7FFFBFFF8FFFBFFF5FFF7FFF1FFFBFFF8FFEEF3F1FFF7FBFCFFFDFD
+      FFFFF5F7F8FFFFFFFC00FFFFF9FFFDFFF7FFF9FAF6FFFDFFFFFFF8F9FDFFF6F9
+      FDFFFBFFFEFFFAFFF7FF697363FF6F7969FF5B6358FFFBFFFEFFFBFFFFFFF0F0
+      F6FFFCFEFFFFFBFCF8FFFFFFF9FFFCFEF8FFFFFFFC00FDFFFFFFFBFCFFFFFBFE
+      FFFFF6FBF9FFF4FDF0FF727C6BFF6B7564FF60695CFFF8FDFBFFFBFFFFFFFDFD
+      FFFFFDFFFFFFFDFEFAFFF8FAF4FFFEFFFAFFFCFDF9FFFDFEFFFFFDFEFFFFF2F6
+      F7FFFBFFFCFFFBFFF7FF6B7564FF727C6BFF576053FFFAFFFDFFFBFFFFFFF6F7
+      FBFFF8FAFBFFFFFFFEFFFDFFF9FFFEFFFAFFFFFFFC00FAFBFFFFFDFEFFFFFBFF
+      FFFFFAFFFBFFFBFFF7FFF3FEEAFFFBFFF2FFF8FFF2FFFBFFFCFFF9FDFEFFFDFE
+      FFFFF7F9FAFFFFFFFEFFF9FBF5FFFFFFFBFFFFFFFC00FDFEFFFFF7F8FCFFFBFF
+      FFFFFBFFFBFFF1FBEBFFFBFFF2FFF8FFEFFFFBFFF5FFFBFFFCFFF6FAFBFFFDFE
+      FFFFFDFFFFFFF7F8F6FFFFFFFBFFFDFFF9FFFFFFFC00FDFEFFFFF9FAFEFFFBFF
+      FFFFF4FBF4FFFAFFF4FFFBFFF1FFF5FFEBFFFBFFF4FFFAFFFAFFF7FCFBFFFDFE
+      FFFFFAFCFDFFFBFCFAFFFFFFFBFFFFFFFBFFF7F8F6FFFDFEFFFFFCFDFFFFFBFF
+      FFFFF8FFF8FFFBFFF4FF6B7761FF6D7963FF5F6958FFF5FCF5FFF8FDFCFFFDFE
+      FFFFFDFEFFFFFFFFFEFFFAFCF6FFFEFFFBFFFFFFFEFFFDFEFFFFFDFEFFFFF7FC
+      FBFFFBFFFBFFFBFFF4FF6F7C64FF727F67FF525C4BFFF8FFF8FFFBFFFFFFECED
+      F1FFFDFEFFFFFAFBF9FFFFFFFC00FFFFFC00EEEFEDFFFDFEFFFFF5F6FAFFFBFF
+      FFFFFBFFF9FFF2FDE9FF77846CFF6F7C64FF616C58FFFBFFF9FFFBFFFFFFFDFE
+      FFFFFBFCFFFFFCFDFBFFFCFDF9FFFAFBF7FFFFFFFEFFFDFEFFFFF9FAFEFFFBFF
+      FEFFF9FFF7FFF8FFEFFFFBFFEEFF6A775DFF5A6551FFECF4EAFFFBFFFEFFFCFD
+      FFFFFDFEFFFFFAFBF9FFFFFFFC00FFFFFC00FFFFFEFFF2F3F7FFFDFEFFFFFBFF
+      FEFFFBFFF8FFECF7E3FF738066FF58654BFFFBFFF1FFFBFFF9FFFBFFFEFFFDFE
+      FFFFF9FAFEFFFFFFFEFFFCFDF9FFFCFDF9FFF2F3F1FFFDFEFFFFFDFEFFFFF8FD
+      FBFF6A7267FF7C8773FF566349FFFBFFEEFFE8F4DEFFFBFFF9FFEEF3F1FFFAFB
+      FFFFFDFEFFFFFFFFFEFFFFFFFC00FFFFFC00FFFFFEFFF5F6FAFFFDFEFFFFF3F8
+      F6FFFBFFF8FFFBFFF2FFFBFFEEFFF2FFE5FFFBFFF1FFFBFFF9FFFBFFFEFFFDFE
+      FFFFFDFEFFFFFEFFFDFFFBFCF8FFF0F7FFFFFDFFFF00FFFFF2FFFFFFF2FFFFFF
+      F9FFFBF4F1FFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFBF4FFFFFF
+      F2FFFFFFF5FFFBFDFEFFF6FDFFFFF8FEFFFFFAFAFAFFFFF8EAFFFFFFF1FFFFFF
+      F8FFFFFFFBFFFFFFFBFFFFF5F1FFFFFBF7FFFFFCF8FFFFFFFBFFFFFBF3FFFFFF
+      F1FFFFFFF4FFF5F5F5FFF8FEFFFFF5F9FEFFFFFFFEFF7E6F5FFF766552FF7569
+      5DFF7D726AFF675A52FF84776FFF7D7068FF73665EFF7E736BFF7E7266FF7867
+      54FF766757FFFFFFFEFFFAFEFFFFF4F6F7FFFFFDF8FF806F5CFFFFFFEDFFFFFF
+      F2FFFFFFF5FFFFFFF5FFFFFAEEFFFFFFF4FFFFFFF5FFFFF9EDFFFFFFF2FFFFFF
+      EDFF7C6D5AFFFFFFFBFFF1F3F4FFFFFFFFFFFFFFF9FF85725DFFFFFFEBFFA492
+      81FF968679FFB2A292FFA09080FFFFFFF0FFAD9D8DFFA8988BFFA59382FFFFFF
+      EBFF887560FFFFFDF6FFFFFFFFFFFEFCFBFFFFF9F0FF86715BFFFFF7DDFFFFFF
+      F0FFFFFFF1FFFFFEEDFFFFFFF1FFFFFFF1FFFFFFEEFFFFFFF2FFFFFAE8FFFFFF
+      EAFF7E6953FFFFFFF8FFFEFCFBFFFFFFFEFFFFFFF8FF7B6650FFFFFFEAFFA895
+      80FFAD9B8AFFA4907FFFFFFFF0FFA79381FFA99885FFFFFFF1FFAB9883FFFFFF
+      E9FF836E58FFFFF8EFFFFFFFFEFFFFFFFFFFFFF9F2FF826F5AFFFFFFEAFFFFFE
+      ECFFFFFFF1FFFFFFF1FFFFFFEDFFFFFFF0FFFFFFF1FFFFFFF0FFFFFFEEFFFFFF
+      EAFF816E59FFFFFFF9FFF9F9F9FFFDFFFF00FCF8F3FF847360FFFFFFEBFFA290
+      7FFFFFFFF2FFA49281FFFFFFF1FFAB9988FFAA9887FFA89888FFA79584FFFFFF
+      EBFF7D6E5BFFFFFFFBFFFDFFFF00FAFDFFFFFFFFFCFF736553FFFFFFEDFFFFFF
+      F2FFFFFAEDFFFFFFF1FFFFFFF1FFFFF9E8FFFFFFF2FFFFFFF4FFFFFEEEFFFFFF
+      EDFF766856FFFFFEFAFFFAFFFFFFF9FCFFFFFDFBFAFF7A6B5BFFFFFFEEFF9989
+      79FFFFFFF4FFA59585FFA69384FFAD9A8BFFFFFFF2FF9E8E81FFAC9D8DFFFFFF
+      EBFF736454FFFFFFFEFFF1F7FCFFF8FEFFFFFCFAF9FF807161FFFFFFEEFFFFFF
+      F2FFFFFFF4FFFFFBECFFFFFFF0FFFFF9EAFFFFFFF2FFFFFFF4FFFFFFF0FFFFFF
+      EEFF827363FFFFFDFCFFF8FEFFFFF2F6FBFFFFFFFEFF7B6D5BFFFFFFEDFFA593
+      82FFFFFFF2FFA79382FFFFFFF0FFB8A191FFA4907FFFFFFFF1FFA99786FFFFFD
+      E7FF7A6C5AFFFBF9F8FFFAFEFFFFFBFEFFFFFFFDF9FF827360FFFFFFE6FFFFFF
+      F0FFFFFFEEFFFFFFF0FFFFFCE7FFFFFAE6FFFFFDEBFFFFFFF1FFFFFFEFFFFFFF
+      EBFF7C6D5AFFFFFFFCFFFAFFFFFFF5F6FAFFFFFFFBFF786752FF867156FF7D68
+      53FF887462FF8D7660FF816A54FF8A725CFF8D7660FF796553FF7E6B56FF8D76
+      5CFF806F5AFFFDF9F4FFF9FDFEFFFDFFFF00FFFCF4FFFFFFEEFFFFFFE9FFFFFF
+      EEFFFFFEE9FFFFFFEDFFFFFFEBFFFFFFE8FFFFFFEDFFFFFFEEFFFFFFE9FFFFFF
+      EAFFFFFFEDFFFFFFFBFFFDFFFF00F7FBF6FFFDFFFEFFFAFAFAFFFFFFFFFFFFFE
+      FFFFF9F3F4FFFFFDFFFFF9EFF5FFF9EFF5FFFFFDFFFFF9F3F4FFFFFFFEFFFFFE
+      FFFFFAFAFAFFFDFFFEFFF7FBF6FFFAFCFCFFFBFDFDFFFCFEFEFFFBFDFDFFFCFD
+      FBFFFFFFFEFFF9FAF8FFFFFFFEFFFFFFFEFFF9FAF8FFFFFFFEFFFCFDFBFFFBFD
+      FDFFFCFEFEFFFBFDFDFFFAFCFCFFFBFEFFFFFBFEFFFFF7FEFBFFF8FFFCFFF6FF
+      FEFF0D1C14FF081A0DFF001201FF001201FF081B0CFF0D1B15FFF6FFFEFFF8FF
+      FCFFF7FEFBFFFBFEFFFFFBFEFFFFFCF6FFFFFDFDFFFFFAFFFEFFF3FFF8FF0016
+      07FFA4C4ACFF98BF9FFFABD6B1FFABD6B1FF98BF9FFFA6C3ACFF001607FFF3FF
+      F8FFFAFFFEFFFFFDFFFFFCF6FFFFFFF9FFFFFFF4FEFFFFFEFFFF0B1C0FFFABCF
+      ABFF99CC9AFFA4E1A9FF86CA8FFF86CA8FFFA2E1A9FF99CC9AFFABCFABFF0B1C
+      0FFFFDFEFFFFFFF4FEFFFFF9FFFFFFFAFFFFFFFAFFFF151717FF07180BFFA8CB
+      A9FF99CA9CFF9AD49EFF91D29AFF93D29AFF98D49EFF9BCA9CFFA8CBA9FF0718
+      0BFF151717FFFFFAFFFFFFFAFFFFF0F7FAFFF8FFFFFF122015FF788A7DFF0013
+      07FFAFC8BAFFA8C5AEFFA6C7ACFFA8C7ACFFA8C5AEFFAFC8BAFF001307FF788A
+      7DFF122015FFF8FFFFFFF0F7FAFFF6FFFEFFEFFEF6FF08190BFF7C8F7EFF839A
+      8CFF001505FF08250CFF001D00FF001D00FF08250CFF001505FF839A8CFF7C8F
+      7EFF08190BFFEFFEF6FFF6FFFEFFFEFFF7FFFDFFF8FF051204FF718A70FF7FA6
+      79FF6C9F66FF659F64FF64A064FF64A064FF659F64FF6C9F66FF7FA679FF718A
+      70FF051204FFFDFFF8FFFEFFF7FFFCFEF2FFF7FEEFFF192917FF7E9D7CFF6093
+      5AFF70AF69FF5BA45BFF5AA85BFF5AA85BFF5BA45BFF70AF69FF60935AFF7E9D
+      7CFF192A15FFF7FEEFFFFAFEF2FFF8FFF8FFEFFFEFFF001C00FF204A21FF649B
+      6AFF5D9F64FF59A55EFF55A75AFF55A75AFF59A55EFF5D9F64FF649B6AFF204A
+      21FF001C00FFEFFFF0FFF6FFF8FFF8FFFBFFF4FFF7FF012001FF1F4B22FF2158
+      29FF579B62FF58A960FF55AC5CFF55AC5CFF58A960FF579B62FF215829FF1F4B
+      22FF012001FFF4FFF7FFF8FFFBFFFFFBFAFFF4F8F2FFF6FFF5FF002100FF184E
+      19FF0E5610FF085D0DFF09640FFF09640FFF085D0DFF0E5610FF184E19FF0021
+      00FFF4FFF5FFF6F8F2FFFFFBFAFFFFFCFFFFFFFEFFFFEDF4EDFFF3FFF2FF0020
+      00FF205720FF1C5F21FF07500CFF074F0DFF1C5F21FF205720FF002000FFF3FF
+      F2FFEDF4EDFFFFFEFFFFFFFCFFFFFFFBFF00FBF7FDFFFDFFFFFFFAFFFCFFF6FF
+      F8FF041A08FF031D06FF032006FF032007FF031D06FF041A08FFF6FFF8FFFAFF
+      FCFFFDFFFFFFFBF7FDFFFFFBFF00FFFBFF00FFFCFFFFFDFCFFFFFCFEFFFFF6F7
+      FBFFFBFFFFFFF8FFFCFFFAFFFCFFFAFFFCFFF8FFFCFFFBFFFFFFF4F7FBFFFEFD
+      FFFFFDFCFFFFFFFCFFFFFFFBFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFEFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFFFFFBFCFFFFFBFBFFFFFB
+      FCFFFFFCFCFFFFFCFCFFFFFCFCFFFFFCFCFFFFFCFCFFFFFBFEFFFFFBFCFFFFFB
+      FBFFFFFBFCFFFFFEFEFFFFFFFFFFFFFFFFFFFFFBFCFF7E2424FF8E2020FF7E24
+      24FF752524FF752526FF752526FF752524FF752524FF752526FF7D2323FF8F21
+      21FF7E2424FFFFFBFCFFFFFFFFFFFFFFFFFFFFFBFBFF8E2020FFFFEFF0FFFFF2
+      F2FFFFF4F4FFFFF4F4FFFFF4F4FFFFF4F4FFFFF4F4FFFFF4F4FFFFF2F2FFFFEF
+      F0FF8F2121FFFFFBFBFFFFFFFFFFFFFFFFFFFFFCFBFF7E2424FFFFF2F2FFF595
+      95FFEC9696FFEC9696FFEC9696FFEC9696FFEC9696FFEB9595FFF39695FFFFF2
+      F2FF7E2423FFFFFBFCFFFFFFFFFFFFFFFFFFFFFCFCFF772524FFFFF4F4FFE797
+      96FFDC9998FFDA9998FFDA9998FFDC9998FFDB9897FFDA9998FFE29896FFFFF4
+      F4FF752524FFFFFCFCFFFFFFFFFFFFFFFFFFFFFCFCFF772426FFFFF4F5FFD999
+      98FFC99B9AFFC39D9BFFFFFBF9FFCA9C9BFFC99B9AFFFFFBF9FFCE9B99FFFFF6
+      F4FF752623FFFFFDFBFFFFFFFEFFFFFFFFFFFFFCFCFF762325FFFFF4F5FFFFF8
+      F8FFFFFBF9FFFFFBFBFFFFFBFBFFFFFAF9FFFFFAF9FFFFFBF9FFFFFAF8FFFFF6
+      F4FF752623FFFFFDFBFFFFFFFEFFFFFFFFFFFFFCFCFF772426FFFFF4F5FFDC99
+      98FFFFF9F8FFCE9A9AFFFFF9F8FFDA9998FFDC9998FFDA9998FFE39896FFFFF4
+      F4FF752524FFFFFDFBFFFFFFFEFFFFFFFFFFFFFCFCFF772426FFFFF4F5FFD999
+      98FFCC9C98FFCE9C96FFD19A95FFD59B96FFD99A96FFDA9A95FFE59993FFFFF5
+      F2FF752524FFFFFDFBFFFFFFFEFFFFFFFFFFFFFCFCFF772426FFFFF6F4FFBE90
+      89FFFFFFF4FFB29586FFB39485FFAF9388FFFFFFF4FFB69385FFC69184FFFFF7
+      F1FF742423FFFFFDFBFFFFFFFFFFFFFFFFFFFFFCFCFF772426FFFFF6F4FFFFFD
+      F5FFFFFFF4FFFFFFF1FFFFFFF0FFFFFFF2FFFFFFF2FFFFFFF0FFFFFFF0FFFFF7
+      F1FF752524FFFFFCFCFFFFFFFFFFFFFEFFFFFFFBFEFF772426FFFFF6F4FFB591
+      89FFFFFFF5FFA39688FFFFFFF2FFA89784FFA89784FFFFFFF2FFB99289FFFFF7
+      F2FF752524FFFFFCFCFFFFFFFFFFFFFEFFFFFFFBFEFF752526FFFFF5F4FFFFFB
+      F4FFFFFDF5FFFFFDF5FFFFFDF4FFFFFFF0FFFFFFF0FFFFFDF4FFFFFAF5FFFFF5
+      F4FF752524FFFFFCFCFFFFFFFFFFFDFFFF00FFFCFCFF752526FF882223FF7E24
+      23FF782523FF782523FF7A2621FF7A2620FF7A2621FF7A2523FF7E2423FF8723
+      21FF752524FFFFFDFBFFFFFFFEFFFDFFFF00FFFCFCFFFFF6F7FFFFF2F4FFFFF3
+      F2FFFFF3F2FFFFF3F2FFFFF3F2FFFFF3F2FFFFF2F1FFFFF2F4FFFFF2F4FFFFF3
+      F2FFFFF6F5FFFFFDFBFFFFFFFEFFFFFEFFFFFFFFFEFFFDFFF6FFFBFEF5FFFCF7
+      FFFFFFFBFFFFFFFEFFFFFDFFFEFFF9FCFAFFFFFEFFFFF8F2FDFFFFFDFFFFFCFE
+      F8FFFBFFF4FFFFFFFEFFFFFEFFFFFDFCFEFFFBFCFAFFFFFFF9FFFFFFFBFFFFFD
+      FFFFF2EFF8FFFFFFFFFFF4F5F1FFFFFFFEFFFFFFFFFFFFFCFFFFF4F2F8FFFFFF
+      FBFFF5FBF0FFFFFFFEFFF2F1F3FFFAFFFFFFFAFFFEFFF8FCF6FFFDFFFBFFF2F4
+      F5FFFDFFFFFFFFFEFDFFFFFFFBFFFFFFFCFFEDEEECFFFBFDFEFFFDFFFFFFFAFE
+      F8FFFDFFF9FFEEF3F1FFFAFFFFFFFAFFFFFFF3F8F6FFFFFFFCFFF4F5F1FFF8FF
+      FCFFF6FFFCFFEDF5EEFFF8FFF6FFFDFFF9FFFAFFFBFFF6FFFCFFF6FFFAFFFCFD
+      F9FFF7F6F2FFFBFFFEFFF7FDFCFFFAF8F7FFFFFFFEFFFFFEFFFFFFFFFCFFEEFF
+      F8FFCDEADAFF839C8EFF5E7567FF526659FF728B7DFFAFCCBCFFEEFFF8FFFFFF
+      FCFFFFFEFFFFFBF7F6FFFFFDFCFFFFFFFEFFF8F6F6FFFFFDFFFFFFFFFEFFD0EC
+      D9FF567E65FFA6C4B1FFE4FEECFFECFFF4FFC8E6D3FF7CA48BFFE9FFF4FFFFFF
+      FEFFFFFDFFFFFFFDFDFFFDFFFEFFECFBF7FFF8FFFFFFFFFCFFFFF7FAF8FF84A4
+      8CFFA4CCB0FFEFFFF2FFF6FFF4FFF6FFF4FFE9FFECFFE1FFEDFFE8FFF2FFFFFF
+      FEFFFFFCFFFFF4FCFBFFEEFFFBFFF3FFFEFFF2FAF9FFFFFCFFFFFFFFFEFF5479
+      5FFFD1FEDDFFEDFFF1FFEDFFECFFF0FFEFFFEDFFF0FFDEFFEAFFE6FFF1FFF4F5
+      F3FFFFFCFFFFF8FFFFFFF1FFFEFFFAFBF9FFFFFEFFFFFFFBFFFFFDFBFAFF4D74
+      5AFFD6FFE7FFE1FFF0FFE5FFF0FF4B7056FF426E51FF467C59FFDFFFECFFFFFE
+      FDFFFFF7FFFFFFFEFFFFFAFDFBFFFFFFFEFFFFFDFEFFFFF9FFFFFFFFFEFF5077
+      5EFFCCFFDDFFE3FFF0FFDFFFECFFE4FFEFFFE3FFF0FF3E714FFFE4FFF1FFFFFF
+      FEFFFFF7FDFFFFFEFFFFFEFFFDFFF8FFFFFFFBFFFFFFFDF8FAFFFDFFFCFF7D9C
+      87FFB4DABEFFEAFFEEFFF1FFF2FFF3FFF2FFEDFFF1FF43694DFFE8FFF2FFFDFF
+      FEFFFFFEFFFFF2F7F6FFF5FFFEFFF8FFFFFFFAFFFFFFFFFEFEFFFBFFFCFFDBF2
+      E3FF587460FFBACEBBFFDEF1DCFFF4FFF4FFC3D9C6FF57735FFFEDFFF5FFFDFF
+      FCFFF5F3F3FFF9FFFEFFF8FFFFFFFFFCFFFFFFFCFDFFFFFFFCFFFCFFFAFFE5F6
+      EBFFD2EBDDFF758D7BFF667F6BFF5A7260FF728C7AFFC7E0D2FFF3FFF9FFF4F6
+      F0FFFFFFFCFFFFFBFCFFFAF7F9FFFFFDFFFFFFFAFBFFFCF9F4FFFFFFF9FFF6FF
+      FCFFF0FFF9FFF1FFF8FFEAFFF0FFEFFFF5FFEFFFF6FFECFCF5FFF6FFFCFFFFFF
+      F9FFFDFAF5FFFFFDFFFFFFFDFFFFFFFAFFFFFFFFFFFFFDFFF7FFFDFFF9FFF1F6
+      F5FFF6FCFBFFF8FFF9FFEFFEF0FFF6FFF7FFF8FFF9FFFAFFFFFFF6FBFAFFFDFF
+      F9FFFFFFF9FFFBF8FAFFFFFCFFFFFEFAFF00FFFFFFFFFDFFF9FFFBFFF9FFFFFE
+      FFFFFAFCFDFFF8FFF8FFFAFFF7FFF6FFF3FFF9FFF7FFFDFEFFFFFAFCFDFFFDFF
+      F9FFF8FEF3FFFFFEFFFFFFFDFFFFFBFFFFFFFDFFFEFFFCFFF5FFFFFFF9FFFDFA
+      FFFFF9F5FFFFFFFEFFFFFFFFFEFFFFFCFBFFFFFEFFFFFFFBFFFFFCFBFFFFFFFF
+      FCFFFDFFF9FFFDFFFFFFFAFDFFFFF9FBFCFFFCFFFDFFFBFEF5FFF1F3EDFFFDFE
+      FFFFFFFDFFFFFCFAFAFFFFFFFBFFFFFFFCFFFFFFFFFFFFFCFFFFF9F8FFFFFFFF
+      FCFFFCFEF8FFFDFFFFFFFCFCFFFFFFFFFFFFFFFFFEFFFDFFFBFFFBFFFBFFF6F8
+      F8FFFDFFFFFFFBFFFCFFF8FFF8FFFBFFFBFFEBF1ECFFFDFFFFFFFDFFFFFFECF2
+      EDFFFDFFFCFFEDECEEFFFFFEFFFFFFFEFEFFF7F8F6FFF4FBF4FFFDFFFBFFFFFF
+      FAFFFFFFFBFFFCFAF0FFFFFFF8FFFFFFF8FFFFFFF9FFFFFFFCFFFFFEFBFFF5F9
+      F4FFF4F9F7FFFFFEFFFFFBF8FAFFFFFFFEFFFDFFFCFFFBFFFCFFFCF9F4FFFFFF
+      F7FFE7CDC1FF866E62FF796659FF745E53FF7D675CFFC3A69DFFFFFDF7FFFFFF
+      FCFFFBFFFFFFF6F8F8FFFFFFFFFFFEFDF9FFF4F5F1FFF7FEFBFFFFFFFBFFE5CE
+      BFFF816352FFB79E8EFFFFF2E1FFFFF7E8FFE0C6B8FF927364FFFFFDF1FFFEFD
+      F9FFF9FEFFFFF8F8F8FFFFFFFFFFFFFEF9FFFFFFFCFFF6FFFFFFF3FAF3FF8A7C
+      69FFAC9B81FFFFFFEEFFFFFFEFFFFFFFF0FFFFFFEEFFFFF9E2FFFFFFF1FFFBFF
+      FCFFF6FFFFFFFFFFFFFFFFF8F8FFFFFFFBFFFDFCF8FFF6FFFFFFF8FFF8FF7665
+      50FFFFF3D7FFFFFDE5FFFFFFEEFFFFFFEAFFFFFFEDFFFFFFEAFFFFFFEFFFFBFF
+      FCFFEDF9FBFFFFFFFFFFFFFEFEFFFFFCF9FFFFFFFEFFF5FDFDFFFDFAF5FF8869
+      54FFFFFFE7FFFFFFE8FFFFFFEDFF8A6B56FF84624BFF8F664DFFFFFEEBFFFFFF
+      FCFFF3FAFDFFFFFFFFFFFFFCFBFFFFFCF8FFFFFFFEFFFAFFFFFFFFFFFBFF7658
+      45FFFFDFC6FFFFFFEBFFFFFFEBFFFFF8E3FFFFFFECFF926952FFFFFCEBFFFEF9
+      F6FFFAFFFFFFFFFFFFFFFFFEFDFFFFFFFEFFFFFFFEFFF8FFFFFFF8FBF2FF8C7C
+      6BFFB49F89FFFFFFEAFFFFFFEEFFFFFFEEFFFFFFEEFF6F5A45FFFFFFF2FFFFFF
+      FCFFF6FEFEFFFCF9FBFFFFFEFFFFFFFDFEFFEAEBE9FFF8FFFAFFFFFFF9FFD6CB
+      BDFF756755FFAEA793FFF8F5E0FFFFFEE9FFBEB7A4FF736454FFFFF9EDFFFEFF
+      FBFFFAFFFFFFFFFEFFFFFFFDFFFFFFFEFFFFFFFFFFFFF9FDF7FFFFFFF9FFFFF8
+      F1FFD2BBB3FF897465FF746251FF7A6655FF7A6458FFCAB3ABFFFFFEF9FFFFFF
+      FBFFFDFFFEFFFEFDFFFFF8F6FCFFF8F9FDFFFBFDFDFFFCFDF4FFFFFEF7FFFFFE
+      FCFFFFFDFBFFFFF9EEFFFFFFF4FFFFFFF4FFFFFAF2FFFFFDFCFFFFFDFEFFFFF9
+      F4FFFFFFFCFFFDFEFFFFFBFAFFFFF8FBFFFFFDFFFFFFFFFFF9FFFAF8F0FFFFFB
+      FCFFFFF9FBFFFFFFF8FFFFFDF1FFFFFFF3FFFFFFF9FFFFFCFFFFFFFAFDFFFFFF
+      FBFFFEFEF8FFFCFDFFFFFBFCFFFFF9FCFF00FDFFFFFFF2F3EAFFFFFFF9FFFFFE
+      FFFFFFFDFFFFFFFBF4FFFFFFF5FFFFFFF7FFFFFEF9FFFFFDFFFFFDF9FEFFFFFF
+      FBFFFEFEF8FFFDFEFFFFF9FAFFFFF5FEFFFFF6FFFFFFF4FCFCFFF8FFFFFFFBFF
+      FFFFF7FCFAFFFDFFFCFFFCFFFBFFFDFFFEFFFAFDFBFFFBFFFFFFF8FCFDFFFAFF
+      FFFFFAFEFFFFF4FAFFFFF8FEFFFFFAFFFFFFF7FCFDFFF5F9FAFFFBFFFFFFFDFF
+      FEFFF9FAF8FFFCFDF9FFFFFFFCFFFFFFFEFFF5F6F4FFFDFFFFFFF9FBFBFFFDFE
+      FFFFEFF2F6FFFBFEFFFFF8FCFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFFFEFFFFFF
+      FEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFF9F5F4FFFFFFFFFFFFFF
+      FFFFFFFEFFFFFCF8FDFFFFFEFFFFFFFBFDFFFFFEFEFFFFFEFEFFFFFAFAFFFFFA
+      FAFFFFFFFEFFFFFFFEFFFFFDFCFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFEFEB
+      EAFFFFFBFCFFFFFEFFFFF8F3F4FF463A3AFF3F3333FF3A3030FF433B3BFF413B
+      3CFF333131FF343434FF393B3BFFFCFEFEFFFBFDFDFFF4F7F5FFFDFEFCFFFFFF
+      FEFFFFFFFCFFFFFEFAFFFFFFFCFF433735FFFFFBF8FFFFFEFEFF423739FF4237
+      39FFFFFEFFFFFFF9FCFF3D3738FFFDF8FAFFFFFEFFFFFFFFFFFFFCFAF9FFFFFE
+      FAFFFFFFFCFFF8FAF4FFFFFFFBFFEAE5E4FFFFFFFEFFFCF1F3FF453739FF4B35
+      3AFFFFEFF4FFFFF9FFFFFCE0E6FF4E333CFF442D32FF4D3C3FFFBFB5B5FF4B48
+      44FFFCFFFBFFFAFFFBFFF6FFF9FFFFFEFFFFFFFDFEFFFFFDFFFF45363AFF4B35
+      3AFFFFF9FFFFFFF8FFFFFFF9FFFFFFF9FFFF51373DFF432F34FFBCAFB1FFE2DE
+      DDFFFDFFFCFFF2FCF6FFF6FFFBFFFFFDFFFFFFFBFEFFFFFDFFFF413337FF3F31
+      35FFFFFCFFFFFFFCFFFFFFF7FBFFFFFDFFFF3B3235FF463F42FFF9F4F5FFFAFA
+      FAFFFDFFFEFFFBFFFEFFFBFFFCFFFFF5F9FFFFFCFFFFFFFDFFFF4D4042FF3E33
+      35FFFFFEFFFFFFFEFFFFFFFFFEFFFFFFFFFF333131FF383636FFFFFFFFFFFFFF
+      FFFFFFFFFFFFFBF9F9FFFBF9F9FFFFFBFFFFFFF5F9FFFFFDFEFF3F302EFF4C40
+      3EFFFFF9F4FFFFFDF8FFFFFFF9FFFBFBF5FF4A4A44FF3D3A36FFFFFFFCFFFFFB
+      FCFFFFFCFEFFFFF9FCFFFFFCFFFFFFF1F3FFFFFDFCFF3E2B28FF53403BFF4B3A
+      31FF4C3C30FFFFFFF5FFFFFFF4FF453528FF46382CFF45352EFF463832FFFFFE
+      FCFFFFFBFDFFFFFCFFFFFFF2F8FFFFFFFBFFFFFFF9FFFFFCF3FFB7A195FFB899
+      8AFFCBA495FFC79C89FFC89A88FFD4A694FFCFA495FFD1AB9FFFFFFCF3FFFFF6
+      F1FFFFFDFEFFFFFBFCFFFFFEFFFFF7FDF2FFF2F4E8FFD5D2C3FFDDD2BEFFDCC7
+      B1FFF0D5BAFFEDCBAEFFF2CEB0FFEBC6AAFFE8C7ADFFDDC2ADFFDCC7B8FFFFFF
+      F7FFFFFCF7FFFCFCFCFFFAFFFFFFF6FFF5FFC1D1BFFFB0C0A8FFB5C4A8FFC3D4
+      AFFFB1C198FFB7C69AFFC3D3A4FFC4D3A7FFC3D3AAFFBAC8A6FFC0CDB3FFBAC5
+      B5FFF6FFF7FFF6FFFEFFF2FFFDFFF1FFF200EFFFEEFFF1FFEEFFEFFFEAFFE8FF
+      DFFFECFFE2FFECFFDFFFE8FFDBFFEAFFDFFFE4FFDCFFEBFFE5FFEDFFEDFFEBFF
+      EEFFF1FFF8FFEDFCF8FFF3FFFFFFF3FFFBFFF4FFFBFFF9FFFDFFFFFDFDFFFFFA
+      FEFFFFFAFFFFF1FFFFFFECFFFFFFF8FBFFFFF5F6FFFFF6FCFFFFE5F3FFFFECFE
+      FFFFEFFDFFFFFBFBFFFFFFFAFFFFF6FFFCFFF5FFF9FFFAFFFDFFFFFFFEFFFFFC
+      FFFFFFFBFFFFF7FCFFFFF3FFFFFFFBFEFFFFF7F6FFFFF9FCFFFFFAFEFFFFF3FE
+      FFFFEFF8FCFFF5F5FBFFFFFDFFFFFFFFFEFFFDFEFCFFFFFFFEFFFFFEFEFFFFFB
+      FCFFFFFBFCFFFFFCFAFFFFFFFBFFFBFBF5FFFFFFFBFFFFFEF7FFFFFAF4FFFFFF
+      F9FFFFFFF9FFFFFFF9FFFBFFF8FFFFF8FAFFFFFAFCFFFFFAFBFFFFF4F4FFFFF1
+      F3FFFFF6F7FFFFF9F5FFFFFBF3FFFFFFF5FFFDFFF3FFFFFFF4FFFFFFF7FFFFF5
+      EDFFFEF6EFFFFFFFFBFFF8FCF6FF901E25FF89151AFF8D181BFF9A1D1FFFA81C
+      1DFFA61615FF9B1613FF7D261CFFFFFFEEFFF1FFF4FFFDFFF5FFF7F4EFFFFFFE
+      FFFFFFFCFFFFFFF9FF00FFF3FFFF8C1A1AFFFFE7E9FFFFEDF1FFAB0E12FFAF0D
+      12FFFFEDEEFFFFE7E5FF7E1E18FFFFFEF2FFFFFCF0FFFFFCF8FFFFF7F8FFFFFC
+      FFFFFFF9FF00FEF4FFFFFFFAFFFFFFDECFFFFFFAF0FFFFEAEAFFA41419FF9D15
+      1BFFFFEAEEFFFFF7F7FFFFD7D7FF771A21FF86151FFF9B1724FFFFA4AEFF5E28
+      28FFFFFFF8FFFFFFF8FFF5FDF2FFFFFFF4FFFFFAF1FFFFF1F5FF9E1721FF8E19
+      22FFFFF5F8FFFFF9F6FFFFFAFBFFFFEFFBFFA70D20FFBE1427FFFF94A1FFFFD3
+      D2FFFFFEF2FFFFFFF4FFF9FFF3FFFFFFFEFFFFFAFEFFFFEFFCFF8E0D1CFF831E
+      26FFFFF8F8FFFFFEF6FFFFFEF7FFFFF3F7FF99141EFFA81120FFFFE1ECFFFFFB
+      F9FFFEFEF8FFFFFFFCFFFDFEFAFFF6F8F8FFFFFAFEFFFFECF8FF9E1321FF891A
+      1EFFFFF4EDFFFFFFF0FFFFFFF1FFFFEFEBFFA41B1FFFA20E18FFFFEEF7FFFFFB
+      FBFFFCFDFBFFFFFEFFFFFCFBFDFFFFFFF5FFFFFBF1FFFFF0F2FFBB191EFFAB13
+      12FFFFF6EBFFFFFFE7FFFFFFE7FFFFF3EBFFB31012FFB5171EFFFFF0F5FFFFF1
+      F4FFFFFEFEFFFFFEFFFFFDFEFFFFFAFFF8FFFFFDF7FF7A1A20FF981520FF910E
+      19FF741119FFFFFAF7FFFFFBFBFF7C101DFF9A1022FF99162AFF791725FFFFF8
+      FFFFFFF2F4FFFFFEFFFFF5F5F5FFEDFEFFFFF7F8FFFFFFE9FFFF9D6D91FF965F
+      8CFF895B8FFF796298FF6D548CFF86548EFF9F5E95FF975683FFFFF0FFFFFFF2
+      FFFFFBFFFFFFFFFFFBFFFFFFF8FFE7F1FFFFF1FAFFFF515572FF504F76FF5950
+      82FF645892FF5D4F8FFF5C5092FF605796FF584B83FF665281FF5E5373FFF1FC
+      FFFFEFFEFFFFEFF3EDFFFFFFF8FFFFFAFFFF383544FF383F50FF313B4DFF3034
+      4DFF373854FF272242FF373656FF1E2947FF283751FF323D53FF243343FF2743
+      4AFFE7FEFFFFFAFCFDFFFFFDFFFFFFF9FF00F9F1FCFFF4FDFFFFEFFEFFFFEDF9
+      FFFFF6FCFFFFFBFAFFFFF6FBFFFFE8FEFFFFE1FFFFFFE4FDFFFFE4FFFFFFDDFF
+      FFFFE6FFFFFFFDFDFFFFFFF8FFFFFFFDFFFFFFFDFFFFFFFEFF00F7F9FAFFFBFE
+      FFFFFBFEFFFFFDFEFFFFFCFBFFFFFFFDFFFFFFFCFFFFFFFBFFFFFFFBFFFFFFFB
+      FFFFFFFCFFFFFFFBFFFFFDFCFFFFFFFFFFFFFEFEFEFFF6F8F8FFFBFFFFFFFAFF
+      FFFFF7FCFDFFFBFFFFFFF9FBFCFFFFFEFF00FFFDFFFFFFFDFFFFFFFDFFFFFFFD
+      FFFFFFFDFFFFFFFDFFFFFDFDFFFFFDFFFEFFFBFFFEFFF4FBF8FFF8FFFEFFF2FD
+      FAFFE5F0EDFFF8FFFCFFFBFFFCFFFFFFFCFFFFFFFEFFFFFFFEFFFFFFFEFFFFFF
+      FEFFFFFFFEFFFFFFFEFFFDFFFEFFFAFFFFFFEFF7F6FFF6FFFFFFF2FFFDFFF3FF
+      FFFFF4FFFEFFF6FFFEFFF4FEF8FFFBFFFCFFFFFFFCFFFFFFFBFFFFFFFBFFFFFF
+      FBFFFFFFFBFFFFFFFBFFFDFFFBFF9DA6B0FFF2FDFFFFEDFAFFFFEAFAFFFFE0F0
+      F6FFACBBBEFFE9F6F8FF9CA6A6FFFAFFFFFFFDFFFEFFFFFFFCFFFFFFFCFFFFFF
+      FBFFFFFFFBFFFFFFF9FFFDFFF9FFC4D4DAFFBDD0D5FFECFFFFFFECFFFFFFCEE3
+      E5FFACC0C1FFEFFFFFFFF4FFFFFFF8FFFFFFFBFFFFFFFFFFFFFFFFFFFEFFFFFF
+      FEFFFFFFFEFFFDFFFEFFFDFFFEFFD4F1E2FFAECBBCFFE8FFF9FFD9F7EAFFA4C2
+      B7FFDAF5EBFFEAFFF9FF8FA09CFFF6FFFFFFFAFFFFFFFDFEFFFFFFFDFFFFFFFD
+      FFFFFFFCFFFFFDFCFFFFFDFCFFFFE7FFF8FF94B2A5FFDCFDEFFFE6FFFBFF92B2
+      A7FFE3FFF7FFECFFFEFF8C9F9CFFF6FFFFFFFAFEFFFFFDFCFFFFFFFBFFFFFFFB
+      FFFFFFFBFFFFFDFBFFFFFDFBFFFFE8FFFFFFAFC7CDFFBFD9DFFFBDDADFFFB7D1
+      D7FFE5FEFFFFEBFEFFFF8F9FA6FFF2F9FFFFFAFCFFFFFCFBFFFFFCF8FFFFFFFB
+      FFFFFFFBFFFFFDFCFFFFF9F8FFFFDFF2FFFFD6ECF8FFA8BECAFFA8C0CCFFCFE5
+      F0FFEAFFFFFFEDFEFFFF94A1A9FFF6FDFFFFFAFDFFFFFDFDFFFFFFFDFFFFFEFD
+      FFFFFBFAFEFFFBFCFFFFFDFFFFFFEDFDFFFFE9FBFFFF97AAB2FF99AEB6FFDDF3
+      F9FFECFFFFFFE9FAFDFF94A1A3FFEAF4F4FFF3F8F7FFFAFDFBFFFFFFFEFFFFFF
+      FCFFFEFFFAFFF8FCF6FFFBFFF9FFF0FFF7FFE9FDF0FFEFFFF8FFEDFFF8FFEDFF
+      F8FFEFFFF8FFF1FFF8FFECFDF0FFF8FFF8FFFBFFF9FFFFFFF9FFFDFFF7FFFFFF
+      F9FFFDFFF8FFFBFFF7FFFBFFF8FFF4FFD7FFBBDBA0FFBEDEA7FFB4D49EFFADCE
+      9BFFB2CFA1FFB5CFA7FFBBD1AEFFF1FFE4FFFDFFF1FFFFFFF4FFFEFFF4FFFEFF
+      F8FFFDFFFBFFFDFFFCFFFBFFFCFFBAD498FFB2CE93FFB4CF97FFB2CF98FFBDDA
+      A8FFB4D0A2FFB5CDA5FFB7CAA9FFCBD8BEFFEEF5E0FFFFFFF5FFFFFFF8FFFFFF
+      FBFFFDFFFEFFFAFFFEFFF8FDFCFFF7FFEEFFFBFFF4FFFBFFF5FFF3FEEEFFF8FF
+      F7FFF1FEF0FFF7FFF7FFFAFFF9FFF1F5EFFFFFFFFCFFFFFFFEFFFFFDFCFFFBFB
+      FBFFFBFDFDFFFBFFFFFFFAFFFFFFFFFEFF00F8F9FDFFFDFEFFFFF5FAFDFFFAFF
+      FFFFF8FFFFFFFAFFFFFFFAFDFFFFFDFEFFFFFFFEFF00FFFCFEFFFEFBFDFFFFFE
+      FF00FDFFFFFFF9FDFEFFF7FCFDFFFEFFF6FFFFFFF9FFFFFFF7FFFCFDF4FFFCFF
+      F6FFFFFFF9FFF8FAF4FFFFFFFBFFFFFFFCFFFFFFFCFFFFFFFFFFFFFFFFFFFFFE
+      FFFFFFFEFFFFFDFEFFFFFDFEFFFFFFFFFEFFF1F2EEFFFFFFFCFFFFFFFCFFFFFF
+      FCFFFFFFFCFFFBFCF8FFF7F8F4FFFFFFFCFFFFFFFCFFFFFFFEFFFFFFFEFFFFFF
+      FFFFFFFFFFFFFDFFFFFFFDFFFFFFFFFCFFFFFBFBFFFFFFFDFFFFF9FAFEFFFDFE
+      FFFFF3F5F6FFFDFFFFFFFDFFFFFFFDFFFEFFFDFFFCFFFFFFFCFFFFFFFCFFFFFF
+      FBFFFFFFFBFFFFFFFBFFFFFFFBFFF3F3FFFFFBFCFFFFF0F1FBFFFBFCFFFFF8FA
+      FFFFFDFDFFFFFDFEFFFFFDFEFFFFFDFFFFFFFDFFFFFFFFFFFEFFFFFFFEFFFFFF
+      FCFFFFFFFCFFFFFFFCFFFFFFFCFF82848EFFE2E4EEFFFAFCFFFFFAFCFFFFE7E9
+      F3FF787A82FFF7F9FFFF5B5D65FFFDFCFFFFFDFDFFFFFFFDFFFFFFFDFFFFFFFE
+      FFFFFFFEFFFFFFFDFFFFFFFDFFFFA6AEB5FFBCC4CBFFEBF3FAFFF4FAFFFFC2C8
+      CFFFACAFB7FFFAFDFFFFFBFDFFFFFBFEFFFFFDFDFFFFFFFDFFFFFFFEFFFFFFFE
+      FFFFFFFEFFFFFFFEFFFFFFFEFFFFD2DDE1FF808B8FFFF4FFFFFFF6FFFFFF7B84
+      87FFDEE5E8FFF6FEFEFF5C6162FFFBFFFFFFFBFFFEFFFDFFFEFFFFFFFCFFFFFF
+      FBFFFFFFF9FFFFFFF9FFFFFFF9FFF1FFFDFF73817FFFE4F1EFFFEBF8F6FF757F
+      7FFFF0FBF9FFF8FFFFFF616968FFFBFFFFFFFBFFFEFFFDFFFEFFFDFFFCFFFFFF
+      FBFFFFFFFBFFFFFFF9FFFFFFF9FFF1FFF9FFA1B5A9FFB6C7BEFFB6C6BFFFA5B3
+      AFFFF1FCFAFFF8FFFFFF5C6366FFFAFDFFFFFBFEFFFFFDFDFFFFF7F7FDFFFFFD
+      FFFFFFFDFFFFFAF6FCFFFFFDFFFFEBFFF2FFCEE2D5FF88998EFF8C9D94FFD2E0
+      DCFFF6FFFFFFF8FFFFFF5B6265FFFBFEFFFFF6F8FFFFF8F7FFFFFFFCFFFFFFFC
+      FFFFFEFAFFFFFCF8FEFFFFFDFFFFF3FFFBFFE7F8EFFF6B7973FF717F7BFFEDF8
+      F6FFF4FEFEFFF1F9F9FF626A6AFFFAFEFFFFFBFFFFFFFDFFFFFFFFFFFFFFF9F7
+      F6FFFFFFFCFFFFFFFBFFF8F8F2FFEEF3FFFFF4F9FFFFF4F9FFFFF4F9FFFFF6F9
+      FFFFE9EDFFFFF8FAFFFFF6F6FFFFF6F6FFFFF4F6FEFFFFFEFFFFFFFFFFFFFFFF
+      FCFFFEFFF6FFFFFFF8FFFFFFF7FFF5E6FFFFB5A7EFFFB2A4ECFFAFA2E6FFAA9C
+      DEFFB9ADE9FFB3A6DCFFB5ABD9FFFBF3FFFFFBF6FFFFFAF4FFFFF4F0FBFFFFFE
+      FFFFFFFFFCFFFEFFF5FFFFFFF7FF9082C9FF8274BBFF8D7FC6FF9788CCFF8B7D
+      BDFF968AC6FF8B7EB4FF968CBAFF948CB1FFE9E1FFFFFFF8FFFFFDF9FFFFFAF9
+      FDFFFFFFFEFFFFFFF7FFFFFFF7FFF6F9FFFFF8FBFFFFF6F9FFFFF6F6FFFFFAFA
+      FFFFFAFAFFFFF8F6FFFFFBFAFFFFFBF8FFFFFDFBFFFFFCF9FFFFFCFBFFFFFFFE
+      FFFFFFFFFEFFFFFFFBFFFFFFFBFFF5FFF200F8FFF5FFFAFFF8FFF5FEF4FFFAFF
+      FCFFF7FEFBFFFBFFFFFFFBFFFFFFFDFEFFFFFAFBFFFFFFFEFFFFFFFEFFFFFCFC
+      FCFFFBFCFAFFFFFFFEFFFFFFFCFFFEFDFFFFFFFEFFFFFFFFFFFFFEFEFEFFFFFF
+      FEFFFFFFFEFFFFFFFCFFFFFFFCFFFEFFFAFFFDFFF9FFFBFCF8FFFCFDF9FFFFFF
+      FFFFFEFEFEFFFDFCFEFFFFFEFFFFFDFCFEFFFFFEFFFFFFFFFFFFFBFBFBFFF9FA
+      F8FFFBFCFAFFFCFDF9FFFBFCF8FFFDFFF9FFFEFFFAFFFFFFFCFFFFFFFEFFFFFF
+      FFFFFFFFFFFFFBFAFCFFFBFAFCFFFDFCFEFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF
+      FEFFFFFFFEFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFEFFFDFFFCFDFBFFF9F9
+      F9FFFFFFFFFFFFFEFFFFFFFEFFFFFDFCFEFFFAF9FBFFFEFEFEFFFFFFFFFFFBFB
+      FBFFFDFEFCFFFFFFFEFFFBFCFAFFFAFBF9FFFAFBF9FFFFFFFFFFFFFFFFFFFDFC
+      FEFFFFFEFFFFFFFEFFFFFAF9FDFFFFFEFFFFFFFEFFFFFDFCFEFFFDFDFDFFFDFD
+      FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFEFFFFFFFE
+      FFFFFFFEFFFFFFFDFFFFFEFCFFFFF9F8FCFFFDFCFFFFFCFBFFFFFFFEFFFFFFFE
+      FFFFFFFEFFFFFCFBFDFFFFFEFFFFFDFCFFFFFFFEFFFFFBF9FFFFFAF8FEFFFFFC
+      FFFFFCF9FFFFFAF6FFFFFFFBFF00FFFDFFFFFFFDFFFFFFFCFFFFFBF8FFFFFFFC
+      FFFFFAF7FFFFF4F1FAFFFFFCFFFFFFFBFF00FFFBFF00FEFAFFFFFFFBFF00FFFA
+      FFFFFFFAFFFFF5EFFFFFFFF9FFFFFCF8FFFFFDF9FFFFDBD7E3FFBFBBC7FFC0BC
+      C8FFBBB7C3FFC1BDC9FFE4DFEEFFFCF7FFFFEFEAF9FFC6C0D1FFB1ABBCFFBDB7
+      CAFFBBB5C8FFC5BED3FFEDE6FBFFFCF6FFFFD4CEDFFFBFB9CAFFEAE4F5FFFAF4
+      FFFFEEE8FBFFDDD7EAFFF1EAFFFFFFF8FFFFE8E1F6FFBDB5CCFFCFC7DEFFFAF2
+      FFFFF5EDFFFFBBB3CAFFC0B8CFFFFFF9FFFFC0BACDFFB1ABBEFFECE5FAFFFFF8
+      FFFFFFF7FFFFFDF5FFFFFEF6FFFFFEF6FFFFD1C9E0FFB7AEC8FFE4DBF5FFFFF6
+      FFFFF1E8FFFFB9B0CAFFC3BBD2FFF8F1FFFFCFC8DDFFB6AFC4FFBEB6CDFFBEB6
+      CDFFD1C8E2FFEDE4FEFFFFF6FFFFFDF4FFFFC7BED8FFC2B9D3FFF1E8FFFFF8F0
+      FFFFD8D0E7FFBDB5CCFFD4CDE2FFFDF6FFFFF7F0FFFFD4CDE2FFC0B8CFFFC1B9
+      D0FFBCB4CBFFCEC5DFFFFFF7FFFFF4ECFFFFB8B0C7FFB1A9C0FFC7C0D5FFC0B9
+      CEFFC4BED1FFDDD7EAFFFCF6FFFFFEF8FFFFFEF8FFFFFDF7FFFFFFF8FFFFF2EB
+      FFFFB8B1C6FFB7AFC6FFF8F1FFFFE8E1F6FFBEB8CBFFD5CFE2FFF6F0FFFFF7F2
+      FFFFFAF6FFFFFFFBFF00FFFBFF00EBE6F5FFDED9E8FFF3EDFEFFFCF6FFFFDFD9
+      ECFFBDB7CAFFDBD5E8FFFFF9FFFFD4CEDFFFB9B4C3FFDED9E8FFFFFBFF00FFFC
+      FFFFFDFBFFFFFFFDFFFFFFFDFFFFD6D2DEFFBDB9C5FFBFBAC9FFBCB7C6FFC4BF
+      CEFFD8D3E2FFFBF6FFFFFAF5FFFFC3BFCBFFBFBBC6FFEBE7F2FFFFFDFFFFFFFE
+      FFFFFAF9FBFFFEFDFFFFFFFFFFFFFFFBFF00FFFBFF00FFFBFF00F9F5FFFFFFFB
+      FF00FFFBFF00FFFBFF00FFFBFF00FFFBFF00F8F5FEFFFFFCFFFFFBFAFEFFFFFE
+      FFFFFEFEFEFFFFFFFEFFFEFFFDFFFFFEFFFFFFFEFFFFFFFFFFFFFAFAFAFFFFFF
+      FEFFFCFDF9FFFFFFFCFFFCFEF8FFFCFEF8FFFFFFFBFFF9FAF6FFFFFFFCFFFFFF
+      FEFFFFFFFEFFFEFEFEFFFFFFFFFFFFFEFFFFF7F6F8FFFFFFFFFFFFFFFFFFFCFD
+      FBFFF7F8F4FFFFFFFCFFFFFFFBFFFCFEF8FFF5F7F1FFFAFBF7FFFFFFFCFFFFFF
+      FEFFFAFBF9FFFFFFFFFFFDFDFDFFFFFFFFFFF8F8F8FFFFFFFFFFFFFFFFFFFFFF
+      FEFFFCFDF9FFFDFEFAFFF9FAF6FFFFFFFCFFFFFFFCFFFFFFFEFFFEFFFDFFFEFE
+      FEFFFFFFFFFFFFFEFFFFFDFCFEFFFFFFFFFFFFFFFFFFFCFCFCFFF3F3F3FFFFFF
+      FEFFFFFFFCFFFEFFFDFFFFFFFEFFF5F6F4FFFFFFFEFFFCFCFCFFF6F6F6FFFAF9
+      FBFFFFFEFFFFF4F3F7FFFFFEFFFFF5F4F6FFFFFEFFFFFFFEFFFFFFFFFFFFFFFF
+      FFFFFEFFFDFFF7F7F7FFFAFAFAFFFFFFFFFFFFFFFFFFFFFEFFFFFFFEFFFFFFFE
+      FFFFFFFEFFFFF6F4FAFFFFFDFFFFFFFEFFFFFAF9FDFFFBFAFEFFFFFEFFFFFAF9
+      FBFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFAF8FEFFFFFDFFFFFAF7FFFFF9F6
+      FFFFF8F4FFFFFFFBFFFFFBF7FFFFFFFCFFFFFFFCFFFFFAF7FFFFFFFCFFFFFFFC
+      FFFFFEFBFFFFF1EEF7FFFFFBFFFFF9F5FFFFFFFBFFFFF3EFFBFFFFFAFFFFFFFA
+      FFFFFFF9FFFFFFF9FFFFF8F2FFFFF9F5FFFFFDF9FFFF9C98A4FF56525EFF4B47
+      53FF3C3746FF4D4857FFBCB6C7FFFFF9FFFFE6E0F1FF433D50FF484255FF3F38
+      4DFF484156FF615A6FFFCFC8DDFFFAF4FFFF857F92FF433D50FFBEB8CBFFF7F1
+      FFFFE3DCF1FF90899EFFDCD4EBFFFFF7FFFFB7AFC6FF3F374EFF827A91FFFFF6
+      FFFFC6BDD7FF4B425CFF59506AFFFFF8FFFF4F485DFF443D52FFCBC3DAFFFBF3
+      FFFFFFF6FFFFFDF4FFFFFFF6FFFFFFF6FFFF89809AFF4A415BFFA9A0BAFFFFF6
+      FFFFFFF6FFFF382F4AFF4B425CFFFAF2FFFF675F76FF3A3249FF453C56FF4E45
+      5FFF8F86A1FFE1D8F3FFFFF6FFFFFBF2FFFF5A516CFF453C57FFDED5F0FFFBF2
+      FFFFACA3BDFF4B425CFF8D859CFFFFF7FFFFE5DDF4FF9890A7FF5A516BFF463D
+      57FF3C334DFF706782FFFCF3FFFFE4DBF5FF4A415BFF3E354FFF564D67FF3931
+      48FF4E475CFF948DA2FFFFF8FFFFFFF8FFFFFFF8FFFFFAF3FFFFFDF5FFFFD2CA
+      E1FF453D54FF49405AFFFEF6FFFFBDB5CCFF3D354CFF80798EFFFEF7FFFFFFF9
+      FFFFFFF9FFFFF3EDFEFFFBF6FFFFB9B3C6FF9E98ABFFE8E2F5FFFFF9FFFFB5AE
+      C3FF423B50FF8B8499FFFBF4FFFF898396FF4A4457FFACA6B7FFFBF6FFFFFFFB
+      FFFFFBF7FFFFFFFBFFFFFFFCFFFF9791A2FF443E4FFF433D4EFF484253FF605A
+      6DFF938DA0FFFAF4FFFFFEF8FFFF565160FF474251FFDDD9E5FFF5F1FCFFFFFC
+      FFFFFFFDFFFFF5F4F8FFFDFCFEFFFAF5FF00FFFAFFFFFFFAFFFFF9F4FFFFFCF6
+      FFFFFFF9FFFFFFF9FFFFFFFAFFFFFFFAFFFFFFFBFFFFFBF7FFFFFFFDFFFFF8F6
+      FCFFFEFDFFFFFFFEFFFFFEFEFEFFF6F9FEFFFBFFFFFFF6FBF2FFF4F8F2FFFFFB
+      FFFFF6F2FEFFFEFDFFFFFFFFFEFFFFFFFEFFFCFCFCFFFFFCFFFFFFFCFFFFF8FB
+      F9FFFDFFFFFFFBFAFFFFF9F5FFFFFDFFFFFFF6F9F7FFFDFFF9FFFFFFFCFFFFFC
+      FFFFFFFBFFFFFFFEFFFFFBFCFAFFFDFCF8FFFFFFFEFFFFFCFFFFF3F1F7FFFFFF
+      FEFFFDFFFFFFF8F6FFFFF4F2FFFFFFFFF9FFF1F5EAFFFFFFF9FFFFFFFCFFF8F4
+      FAFFFFFDFFFFFFFBFCFFFDFDF7FFFFFFF9FFFFFFFCFFFFFEFFFFFFFDFFFFF9F7
+      F6FFFFFFFEFFFFFEFFFFFDFCFFFFFCFDF3FFFFFFFBFFFFFFFFFFFFFAFFFFFFF7
+      FFFFFFF9FFFFFFFCFFFFFFFCFFFFFFFEFFFFFFF8FBFFFFFBFFFFFFFAFFFFFFF8
+      FFFFFFFCFFFFFFFDFFFFF5F1F7FFFFFFFCFFF6F0F5FFFFF4FFFFFFF3FFFFFFF3
+      FFFFFFEFFFFFFFF4FFFFFFF6FFFFFFF7FFFFFEEEFFFFFFF4FFFFFFF3FFFFFFF3
+      FFFFFCEDFFFFFFF8FFFFFFFAFFFFFFFFFEFFFFFAFFFF3E2C51FFFFE8FFFFFFE9
+      FFFF583F6BFFFFF1FFFF412C4DFF553E5EFF6C5778FFD8C1E7FFFEE7FFFF482F
+      61FF4F3B66FF34263EFFFFFAFFFFFFFFFBFFFFF6FFFF4C3660FFFFEBFFFFFFEA
+      FFFF462A58FFFFF0FFFF523A5DFFFDE4FFFFCCB4D7FF5F456DFFFFEEFFFF4D30
+      67FFFFEEFFFFFFF6FFFFFFF5FDFFFFFFFCFFFFF9FFFF4B3161FFFFE5FFFFFFEA
+      FFFF4A2D5FFFFFEEFFFF4F345CFFFFF0FFFFFFF0FFFF4B305CFFFFEDFFFF4D2E
+      6BFF4C3065FF413149FFFFFBFFFFFFFDFFFFFFF3FFFF5C3F77FFE3C1FFFFDFBD
+      FEFF583873FFFFECFFFF482B5CFFFFEBFFFFCBAFDDFF614476FFFFEAFFFF4F2D
+      73FFFFEAFFFFFFF3FFFFFFF9FFFFFFFEFEFFFFF9FFFFBEA7D4FF4F336EFF5A3D
+      74FFC2A8D8FFFAE1FFFF553E64FF533B5EFF594268FFE1C9F3FFFFE9FFFF492C
+      64FFFAE2FFFFFFF6FFFFFFFAFFFFFFFFEEFFFFFFF8FFFFF8FFFFFFF2FFFFFFF5
+      FFFFFFF6FFFFFFF8FFFFFDF1FDFFFFFAFFFFFFFBFFFFFFF4FFFFFFF6FFFFFFF5
+      FFFFFFF8FFFFFFFAFBFFFFFFF8FFFCFFEBFFFFFFF5FFFFFEFFFFFFFBFFFFFFFA
+      FFFFFDF5FFFFFFFBFFFFFFFFFEFFFFFBF8FFFFFFFCFFFFFEFFFFFEF8FDFFFFFC
+      FFFFFCF9FBFFFFFFF9FFEEF1E2FFFFFFF7FFFCFFF6FFF8F8F8FFFDFBFFFFFFFA
+      FFFFFFFAFFFFFFFDFFFFFFFEFDFFFFFFFCFFF7F6F2FFFFFDFFFFFAF9FBFFFCFC
+      FCFFFFFFFFFFF8F9F7FFFFFFFCFFFBFFFEFFFBFFFEFFFBFFFEFFFDFFFFFFFAF8
+      FFFFF6F2FEFFFFFEFFFFFEFFFDFFFCFBF7FFFFFFFCFFFFFEFFFFFDFFFFFFFDFF
+      FCFFFBFFFCFFFBFFFFFFF8FBFFFFFAFFFFFFECF1F2FFFAFFFCFFF4F9F7FFFAFB
+      FFFFFDFBFFFFF8FAFBFFFDFFFCFFFFFFFBFFF9FDF8FFFDFFFFFFF7FBFCFFFAFF
+      F8FFFAFFFBFFF5F9FEFFFAFCFFFFF7FDFF00F8FFFFFFFAFFFBFFF7FEF9FFFBFC
+      FFFFF7F7FFFFFBFDFEFFFDFFFCFFFDFFFBFFFDFFFCFFF4F8F9FFFBFFFFFFFAFF
+      F9FFF7FFF6FFF8FEFFFFF1F4FFFFF8FEF9FFFBFFFCFFF5FBF6FFFAFFFBFFFBFF
+      FCFFFBFFFCFFFBFFFEFFF8FDFBFFF5FAF8FFF9FEFCFFFBFFFCFFFBFFFCFFF9FF
+      FAFFFBFFFCFFF7FDF8FFFBFFFCFFFDFFFEFFF8FBF9FFF6F9F7FFFDFFFEFFFAFD
+      FBFFF1F4F2FFFDFFFFFFF9FBFBFFFDFFFFFFFDFFFFFFF7FAF8FFF2F5F3FFFDFF
+      FEFFFDFFFEFFFDFFFEFFF7FAF8FFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFF2F1
+      F3FFFFFEFFFFFFFEFFFFF9F8FCFFFFFEFFFFF6F5F9FFFFFEFFFFFFFEFFFFF8F8
+      F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFDFFFFF7F1F6FFFFF8FFFFFFFC
+      FFFFFFFBFFFFFBF3FDFFFFFBFFFFFFF8FFFFFFFBFFFFFFFBFFFFFBF4FBFFFFFC
+      FFFFFFFDFFFFFDF7FCFFFFFAFFFFFFFAFFFFFFF6FFFFFFFAFFFFFFFAFFFFFFFA
+      FFFFFFF9FFFFFFF9FFFFFFF9FFFFFFF9FFFFFFF7FFFFFFF4FFFFFFF9FFFFFFFA
+      FFFFFFF5FFFFFFF6FFFFFFFAFFFFFFF8FFFFFFF9FFFF1E1121FFFFF4FFFFFFF7
+      FFFF2E1F34FFFBECFFFF25162BFF25162BFF46374CFFCDBED3FFFFF6FFFF2214
+      26FF281B2BFF201323FFFFF9FFFFFFF7FFFFFFF8FFFF25192DFFFFF8FFFFFFF5
+      FFFF1E1028FFFFF5FFFF1C0D28FFFFF3FFFFAFA0BBFF392B43FFFFF7FFFF291C
+      32FFF9EDFFFFFFF8FFFFFFF6FFFFFFF8FFFFFDF2FFFF271B31FFFEF1FFFFFFF6
+      FFFF1D102AFFFFF4FFFF261834FFFFF5FFFFFBEDFFFF281A36FFFFF6FFFF1D10
+      28FF261A30FF1E1327FFFFF7FFFFFFF8FFFFFFF6FFFF352C41FFCCC2D9FFC8BD
+      D7FF3A2E4AFFFEF2FFFF1F1331FFFBEFFFFFBDB1CDFF392D49FFFFF6FFFF1C12
+      29FFFFF8FFFFFFF8FFFFFFF8FFFFFFF9FFFFF7F3FFFFA69FB4FF352F46FF3128
+      42FFA49DB8FFFCF3FFFF1D1631FF201634FF2E2742FFC5BCD7FFF8F2FFFF231B
+      32FFFDF8FFFFF3EDFFFFF7F4FFFFF9F6FFFFFBFBFFFFFDFAFFFFFAF8FFFFF3EE
+      FFFFFBF8FFFFF7F1FFFFFBF7FFFFFDF6FFFFFBF7FFFFFBF5FFFFFBF9FFFFF6F2
+      FFFFF4F3FFFFFDFAFFFFFBFBFFFFFBFCFFFF32333DFF1D1D29FF262634FF2F2E
+      3EFF222034FF2D2A40FF242137FF27243AFF2B283EFF29273BFF272636FF2F2F
+      3DFF292935FF252630FFFAFBFFFFFDFEFFFFF7F7FDFFFDFCFFFFFDFCFFFFF6F4
+      FFFFFBF8FFFFFDF9FFFFF8F3FFFFF8F3FFFFFDF9FFFFFCF9FFFFF9F7FFFFF4F3
+      FDFFFDFCFFFFFDFDFFFFFCFDFFFFFFFFFFFFFAFCFDFFF5F4F8FF36363CFF2925
+      30FF383642FF2F293AFF2A2737FF342E3FFF242130FF2E2A36FF2A2932FF3836
+      3CFFF3F4F8FFFEFDFFFFFDFFFFFFFDFBFAFFFFFFFEFFFFFFFFFFF9F8FAFFFFFD
+      FFFFF6F3FCFFFEF7FFFFFDF8FFFFFDF6FFFFFFFBFFFFFFF9FFFFF6F4FAFFFCF8
+      FDFFFFFFFFFFFFFFFEFFFAFBF9FFFFFFFC00FAF9F5FFFFFFFFFFFCF9FBFFFFFD
+      FFFFFFFCFFFFFFFBFFFFFFF9FFFFFFFAFFFFFDF7FFFFFFFCFFFFFFFDFFFFFAF7
+      F9FFFBF9F8FFFFFFFEFFFFFFFC00FFFFF1FFF6FAEEFFFFFEFFFFFEFBFFFFFFFE
+      FFFFFFFEFFFFF7F5FBFFFFFCFFFFFFFCFFFFF7F5FBFFFFFEFFFFFFFEFFFFFFFC
+      FFFFF9F8FAFFFEFFF6FFFFFFF1FFFAFCF6FFFDFFFFFFFFF9FFFFFDF7FFFFFFF8
+      FFFFEBE7FAFFFFF7FFFFF5EFFFFFFFF6FFFFFDF7FFFFFFF8FFFFF9F4FFFFF9F0
+      FFFFFDF9FFFFFBFAFCFFFBFFF9FFFDF8FFFFFBF5FFFF19093EFF140441FF2211
+      4AFF180A40FF23124BFF180942FF180740FF1A0B44FF1A0942FF22134CFF1D0B
+      48FF0F0236FFFBF3FFFFFBF9FFFFFBF6FFFFFBF1FFFF170548FFD4BEFFFFD0BB
+      FFFFD7C3FFFFD0BCFFFFD2BFFFFFD6C3FFFFD0BCFFFFDAC6FFFFCBB6FFFFD7C1
+      FFFF170548FFFBF1FFFFF7F2FFFFFAFBFFFFF9F5FFFF160744FFCFBBFFFFB5A2
+      EBFFAD9BE0FFB4A4E4FFB0A1DFFFCFC0FEFFB6A6E6FFA694D9FFAF9CE5FFD6C2
+      FFFF120340FFF7F3FFFFFAFCFFFFEFF4F5FFFAF9FFFF24174FFFD1BEFFFFD2BF
+      FFFFD8C6FFFFD1C2FFFFD0C2FCFFD3C5FFFFCFC0FDFFDBC9FFFFD5C2FFFFD6C3
+      FFFF1A0D45FFFAF9FFFFF5FAFBFFFBFFFCFFECECFAFF100238FFDCC8FFFFAF9A
+      E5FFAE9AE2FFBBAAE9FFD2C3FCFFB3A4DDFFB1A1DEFFD8C4FFFFA48FDAFFCBB7
+      FFFF22144AFFE8E8F6FFFBFFFCFFF7FBF5FFFBFBFFFF211147FFCCB6FFFFD8BF
+      FFFFD7C2FFFFD0BCFDFFD5C6FFFFD7C5FFFFCEBDFDFFD4BDFFFFDBC5FFFFD8C0
+      FFFF110339FFFDFAFFFFF5FCF5FFFCFDF9FFFDFAFFFF1F0A48FFD0B6FFFFBDA0
+      F5FFD4BBFFFFB59DE3FFD6C2FFFFBAA4E5FFB19CE1FFB095E5FFB59BEFFFD8BC
+      FFFF190744FFFFF9FFFFF8FCF7FFFDFEFCFFFFF9FFFF1A0641FFDDC2FFFFD9BD
+      FFFFCDB3FFFFDAC2FFFFDAC4FFFFD2BCFDFFCDB5FBFFDCC2FFFFDEC2FFFFD2B7
+      FFFF16023DFFFEF8FFFFFFFFFCFFFFFFFCFFF7F0FDFF220F42FFDCC2FFFFB49A
+      E0FFD6BDFFFFC7AFEFFFAE98D3FFB49ED9FFE5CDFFFFBDA4E8FFB399DFFFD8BE
+      FFFF2A174AFFFFFAFFFFFFFFFBFFF3F3F3FFFFFAFFFF221242FFCDB8F7FFD9C3
+      FFFFDDC8FFFFD8C3FFFFD5C1FCFFDBC7FFFFD5C0FEFFCCB7F6FFD2BCFDFFE0CB
+      FFFF150535FFFBF6FFFFFFFFFEFFFBFCFFFFF7F4FFFF170B3DFFDDCCFFFFB1A0
+      DFFFD6C5FFFFAA99D9FFD8C7FFFFB5A4E4FFAC9BDBFFD8C7FFFFBCABEAFFC6B5
+      F5FF211547FFFBF8FFFFF7F9FFFFF8FBFFFFF8F7FFFF1E1547FFCBBFFBFFCDC1
+      FBFFC8BCF8FFDDD0FFFFCBBDFDFFCDBFFFFFCCBFFDFFCABEFAFFCABEF8FFD2C6
+      FFFF22194BFFF0EFFFFFF8FBFFFFF0F5FFFFF2F4FFFF120D3AFF181045FF1912
+      45FF20194CFF040034FF1E1351FF170C4AFF201750FF0F083BFF1C1548FF1911
+      46FF0A0532FFF0F2FFFFF6FBFFFFF4FBFF00F4F8FFFFF0EEFFFFF4F0FFFFF1EE
+      FFFFEEEAFFFFF4EEFFFFF0E8FFFFF3EBFFFFF1EBFFFFF4F0FFFFF2EFFFFFEEEA
+      FFFFF4F2FFFFF4F8FFFFF3FAFFFFFFFBFFFFFFF4FAFFFAFEFFFFF6FFFFFFFAFF
+      F8FFFBFFF9FFFDFCFFFFF8F7FFFFFBFAFFFFF4F6FEFFFFFFFBFFF4FCF2FFF6FF
+      FFFFFAFEFFFFFAEEF4FFFFFBFFFFFFF5F5FFFFF9FFFFECEAFFFFF1F1FFFFF5F5
+      FFFFFAF6FFFFF8F3FFFFF3EFFFFFF8F1FFFFF8F3FFFFF3EFFFFFF6F6FFFFEBEB
+      FFFFF3F1FFFFFFF9FFFFFFF5F5FFFDFFF9FFEDECFFFF3C2EA4FF3C2AB9FF3E2C
+      9DFF433595FF413294FF3F3294FF3C2C91FF433496FF433595FF3F2D9EFF3D2B
+      BAFF35279DFFEFEEFFFFFBFFF9FFF3FFF6FFF1F3FFFF4332C3FFAF95FFFFC2AB
+      FFFFC2AEFFFFC0ADFFFFC7B5FFFFCAB8FFFFC0ADFFFFC8B4FFFFBCA5FFFFB49A
+      FFFF3E2DBEFFF1F3FFFFF1FFF4FFF8FFFFFFEFF1FFFF2B1D9BFFB9A5FFFFB3A1
+      FFFFA896F3FFAA9AF1FFAE9FF3FFC4B5FFFFB2A2F9FFA694F1FFAF9DFFFFB09C
+      FFFF3B2DAAFFEAECFFFFF8FFFFFFFAFFFFFFF4F4FFFF342696FFC8B6FFFFC1AF
+      FFFFC6B4FFFFD6C3FFFFD5C3FFFFD3C0FFFFD1BEFFFFD4C2FFFFC3B1FFFFC2B0
+      FFFF3B2F9FFFEFEFFFFFFAFFFFFFF3F6EDFFF8F6FFFF43349DFFC6B1FFFFB7A2
+      F7FFB79FE5FFC4A9F3FFD1B3FEFFB89AE6FFB79CE6FFCDB5FBFFB9A4F9FFCAB5
+      FFFF3C2D96FFF8F4FFFFF5F8EFFFFFFFF8FFFAF7FFFF3D2F95FFC1ADFFFFD6C1
+      FFFFDBC4FFFFD6BBFDFFE1C4FFFFDDBFFFFFDCC1FFFFD7C0FEFFD9C4FFFFBCA8
+      FFFF403298FFFAF7FFFFFFFFF8FFF8FFF8FFF6F6FFFF3C2E98FFC3AFFFFFAE9E
+      ECFFDACAFFFFAF9CD3FFDFCBFFFFBFAAE1FFAD9AD1FFBDADE3FFA696E4FFC1AD
+      FFFF3E309AFFF6F6FFFFF9FFF9FFFBFDFDFFF6F4FFFF40319DFFCBB7FFFFCBBB
+      FFFFD1C2FBFFD8C4FFFFD4C1FAFFDBC5FFFFD0BDF6FFCDBEF8FFD3C3FFFFCAB6
+      FFFF392A96FFF6F4FFFFEFF4F3FFFFFBFFFFF0E6FFFF3D2C95FFC4AEFFFFB5A1
+      F4FFD5BEFFFFBDA0EFFFB699E9FFB796EAFFE0C4FFFFBDA5EBFFA793E6FFC0AA
+      FFFF47369FFFFBF1FFFFFFFBFFFFFFF9FFFFFCECFFFF4B34A1FFC7AEFFFFD1BB
+      FFFFD1BAFEFFDEC1FFFFD3B3FFFFE0C0FFFFD3B6FFFFD7C0FFFFD1BBFFFFD2B9
+      FFFF432C99FFF3E3FFFFFFF9FFFFFFF2FFFFFFEDFFFF44289FFFCAACFFFFB09C
+      E9FFD8C7FFFFB39CE0FFDAC1FFFFB299E3FFB7A0E4FFD3C2FBFFBBA7F4FFC1A3
+      FFFF462AA1FFFFEEFFFFFFF4FFFFFCF2FEFFFDF0FFFF4633A2FFBBA7FFFFD7C8
+      FFFFC8BBFFFFD3C3FFFFC5B4FFFFCBBAFFFFD2C2FFFFD0C3FFFFC5B6FFFFC9B5
+      FFFF3D2A99FFFAEDFFFFFFFAFFFFFAFEFFFFE1E4FFFF303187FF3535A1FF312A
+      92FF3C339BFF372D97FF3E36A1FF3C349FFF342A94FF382F97FF352E96FF3636
+      A2FF3C3D93FFF0F3FFFFF8FCFFFFF1FDFF00EDF8FFFFDDEBFFFFD1D9FFFFDFDC
+      FFFFDED8FFFFDDD6FFFFDED9FFFFDFDAFFFFDED9FFFFE3DAFFFFDEDCFFFFD7DE
+      FFFFDDEBFFFFE8F3FFFFF4FFFFFFFFFDFCFFFDFEFCFFFFFEFFFFFDFFFFFFF2F5
+      F9FFFBFEFFFFF9FDFFFFF8FCFFFFF8FCFFFFFAFFFFFFF1F2F6FFFDFFFFFFFFFF
+      FFFFFFFDFCFFFFFCF8FFFFFFFCFFFFFFFE00FFFFFFFFFDFFFFFFF8FAFBFFFBFE
+      FFFFFAFFFFFFFAFEFFFFF9FDFFFFFAFEFFFFF3F7FCFFFBFEFFFFFDFFFFFFFAFA
+      FAFFFFFEFDFFFFFFFCFFFFFEFAFFFDFDFDFFFBFBFBFFFDFFFFFFF8FAFBFFFBFE
+      FFFFF8FCFFFFF5F8FFFFF8FEFFFFF8FEFFFFFAFEFFFFF5F8FCFFF3F5F6FFFFFF
+      FFFFFFFFFE00FDFAF6FFFFFFFCFFFFFFFFFFF3F5F5FFFBFDFEFFFBFEFFFFF8FC
+      FFFFF8FEFFFFF2F8FFFFF8FEFFFFF1F7FEFFF8FEFFFFF3F7FCFFFBFEFFFFFCFE
+      FFFFFFFFFFFFFFFFFE00FEFBF7FFFDFFFFFFFCFEFFFFFDFEFFFFF4F7FBFF8084
+      89FF8F959CFF8C919AFF979EA7FFB2B8BFFFE4EAF1FFF8FCFFFFFAFDFFFFFDFF
+      FFFFFFFFFFFFFDFBFAFFFFFDFCFFFDFFFFFFFBFFFFFFFAFDFFFFFAFEFFFF9096
+      9DFFF4FAFFFFF2F9FFFFE4EBF4FFC4CAD1FF9399A0FFDFE3E8FFFAFFFFFFF3F4
+      F8FFF9FBFCFFFFFFFFFFFFFDFCFFF7FAFEFFFBFEFFFFF9FCFFFFF8FCFFFF858B
+      92FFF8FEFFFFF6FDFFFFF3FAFFFFF6FDFFFFBDC3CAFFB5B9BEFFF8FDFFFFFDFE
+      FFFFF9FBFCFFFAFAFAFFFFFFFFFFF6F9FDFFFBFEFFFFF7FBFFFFFAFEFFFF8B91
+      98FFF6FCFFFFEFF6FFFFF6FDFFFFF5FCFFFFEFF7FEFF93969EFFF6FBFEFFFDFE
+      FFFFFDFFFFFFFFFFFFFFFBFBFBFFF7FAFEFFFBFEFFFFFAFEFFFFF4F8FDFF8A90
+      97FFF6FCFFFFF6FDFFFFF6FDFFFFF6FDFFFFF3FBFFFF888B93FFFAFFFFFFF9FA
+      FEFFFDFFFFFFFBFBFBFFFFFFFFFFFBFEFFFFFAFDFFFFF4F7FCFFFAFEFFFF9096
+      9DFFF8FEFFFFF1F8FFFFF6FDFFFFF4FBFFFFEBF1F8FF93979CFFF8FDFFFFFDFE
+      FFFFF9FBFCFFFFFFFFFFF9F9F9FFF8FAFBFFFBFFFFFFF9FCFFFFFAFEFFFF8187
+      8EFFF5FBFFFFF4FBFFFFF6FDFFFFF8FEFFFFC3C9D0FFBDC1C6FFF1F6F9FFFDFE
+      FFFFFAFCFDFFF8F8F8FFFFFFFE00FDFFFFFFFDFFFFFFF5F6FAFFF8FBFFFF979B
+      A0FFF8FEFFFFF5FAFFFFEAF1FAFFC5CBD2FF8F959CFFE4E8EDFFFBFEFFFFF4F6
+      F7FFFFFFFFFFFFFFFE00FEFCFBFFFDFDFDFFFBFDFDFFFDFFFFFFF6F9FDFF898D
+      92FF8D9398FF888E95FF969CA3FFADB3BAFFE7EDF4FFF2F6FBFFF5F8FCFFFDFF
+      FFFFFFFFFFFFFCFAF9FFFFFEFAFFFFFFFFFFF8F8F8FFFDFFFFFFFDFFFFFFF4F7
+      FBFFFAFEFFFFF8FBFFFFF1F7FEFFF8FEFFFFFAFEFFFFFBFEFFFFFDFFFFFFF6F6
+      F6FFFBF9F8FFFFFFFCFFFFFFFCFFFFFDFCFFFDFDFDFFFDFFFFFFF3F5F6FFF6F9
+      FDFFFAFFFFFFFAFEFFFFFAFEFFFFFAFEFFFFECF0F5FFF6F9FDFFFDFFFFFFFDFD
+      FDFFFFFFFE00FAF7F3FFFFFFFCFFFFFFFE00FFFFFE00FFFEFFFFFCFEFFFFFBFE
+      FFFFF9FCFFFFF3F7FCFFFAFEFFFFF3F7FCFFFAFFFFFFFBFCFFFFFDFFFFFFFFFD
+      FDFFFFFFFE00FFFFFCFFFAF7F3FFF6FFFFFFF5FEFFFFF0F3FBFFF8FEFFFFF8FF
+      FFFFFBFFFEFFFFFDFDFFFFFFFBFFFFFFF8FFFFFFF8FFFFFEF4FFFFFBF5FFFDFF
+      FFFFF6FFFFFFF8FEFFFFF6FBFFFFF8FEFDFFFAFFFFFFFBFEFFFFF5F9FEFFF4FF
+      FFFFF6FFFFFFFFFDFFFFFFFEFFFFFAFDFBFFF6F7F3FFFFFFFBFFFFFFFCFFFAFB
+      F9FFF9FEFFFFF6F9FDFFFBFEFFFFFBFCF3FFFFFFFBFFFFFFFEFFF5F8FCFFEFFE
+      FFFFE6F7FFFFF3F8FFFFF6FCFFFFF1FDFFFFF3FFFFFFFEFCFFFFFFFEFFFFFBFA
+      F6FFFFFFFBFFFEFBF7FFFFFFFCFFFFFFF8FFF9F7EDFFFDF7F0FFFDFFFFFFE8FD
+      FFFFE3FBFFFFEDFAFFFFECF7FFFFDCEEFFFFECFCFFFFF3F8FFFFF5F4FDFFFFFF
+      FCFFFFFFF8FFFFFFF9FFFFFEF9FFFFFFF9FFFFFFF7FFFFFFF8FFFDFFFFFF89A2
+      B6FF8AA8C5FF98A9C4FFA2B0C7FFB2C7DCFFCBE1F3FFEDFAFFFFF6FCFFFFFFFF
+      FCFFFFFFF4FFFFFFFBFFFFFEFBFFFBFFFEFFF7F8F4FFFFFAF3FFFBFFFFFF91AD
+      C5FFD6F7FFFFE8F9FFFFE4F1FFFFC4DAECFF9EB4C6FFD9E8FFFFF3FBFFFFF8F7
+      F3FFFFFFF7FFFFFFFEFFFEFDFFFFF3FEFFFFF8FEFFFFFFFEFBFFFBFEFFFF83A1
+      BCFFD6F9FFFFECFAFFFFEFF7FFFFECFDFFFFBACDDCFFB2C1DBFFF1FAFFFFF7F8
+      F6FFFFFFFBFFFAFDFFFFF4FAFFFFEBFBFFFFF4FDFFFFFEFAF9FFFAFEFFFF8CAA
+      C7FFD6F9FFFFE9F6FFFFF4FCFFFFEAF9FFFFEAFDFFFF97A8C2FFEFFAFFFFFFFF
+      FFFFFEFDF9FFF6FCFFFFEFF9FFFFEEFBFFFFF6FDFFFFFFFEFFFFF7FBFFFF8CAC
+      C9FFCFF4FFFFEAF8FFFFF2FBFFFFE6F7FFFFEAFDFFFF95A6C1FFEFFAFFFFFFFF
+      FFFFFDFCF8FFF4FAFFFFF1FAFFFFF2FBFFFFFAFEFFFFFFFAF9FFF9FDFFFF87A7
+      C4FFD4F9FFFFE8FAFFFFEFFCFFFFEAFDFFFFD9F0FFFFA2B5D0FFEFFAFFFFFFFF
+      FFFFFFFFFBFFF9FBFFFFF4F9FFFFF8FAFAFFFFFFFEFFFFFCF8FFFBFEFFFF7F9E
+      B7FFD2F7FFFFE1F6FFFFE7F9FFFFE0F9FFFFB2CDE1FFB4C7E2FFF1FBFFFFF9FA
+      F8FFFFFFF9FFFFFEFFFFFFFDFFFFFFFFFAFFFFFFF8FFFAF2EBFFFBFEFFFF98B5
+      CAFFD8FAFFFFE2F8FFFFDCF0FFFFB4D1E6FFA4BFD3FFD0E0F7FFF4FBFFFFFDFB
+      FAFFFFFFF8FFFFFFFCFFFFFEFEFFFFFFF9FFFFFFF9FFFFFFFBFFFBFEFFFF89A2
+      B2FF8CABC2FF99AEC4FFA2B5CAFFB7D3E4FFC7E0F0FFEEFBFFFFFAFCFFFFFFFF
+      FEFFFFFCF7FFFFFFFCFFFFFDFAFFFFFFFBFFF9F6F2FFFDF8F9FFFAFEFFFFE3F7
+      FFFFE6FDFFFFEDFCFFFFE9F9FFFFDDF3FEFFECFFFFFFF8FEFFFFF9FAFEFFFFFF
+      FFFFFEFCFBFFFFFEFFFFFFFCFDFFFBFEFFFFFBFEFFFFFBFDFFFFF8FEFFFFF1FF
+      FFFFEEFEFFFFF8FEFFFFF3FAFDFFF3FFFFFFF4FFFFFFFFFFFEFFFCF8F7FFFCFE
+      FFFFFAFEFFFFFDFCFFFFFFFCFFFFF2F8FF00F8FEFFFFFAFCFFFFF7FCFFFFF2FE
+      FFFFF1FDFDFFFDFFFFFFFDFFFEFFF8FFFCFFEEF6EFFFFFFFF9FFFFFFFCFFF8FB
+      FFFFF8FEFFFFF6F8FFFFFBFBFFFFFDFFF3FFFFFFF8FFFCFFFDFFFCFEFFFFFAF6
+      FBFFFEFEFEFFFCFFFBFFFAFFF9FFF8FFFBFFF7FFFBFFFBFEFFFFFCFAFFFFFFFD
+      FFFFFEFEFEFFF5FCF5FFF8FFF8FFFFFFF7FFFFFFFBFFF8F9FDFFFBFDFFFFFBFD
+      FFFFFBFEFFFFFBFFFFFFFBFFFEFFFFFFFFFFFFFDFFFFFFF9FFFFFFF8FFFFFFF7
+      FFFFFFF8FFFFFFFFFEFFFEFEF8FFFFFDFFFFFBF7FCFFFBFBFFFFB3B7C9FFB5BB
+      CEFFB8BFD0FFB8BCC7FFC2BCC7FFFFF8FFFFCBA2B7FFDB9BB9FFE399BBFFE69F
+      C0FFDAA0B9FFFFF7FFFFFFF8FFFFFFFBFFFFF9F5FFFFB9B9CBFFB8BDD2FFB4BB
+      D4FFB3BBD2FFB9BDD0FFC6BDD1FFD7B7D0FFDAA1C0FFEF99C1FFF695C1FFF799
+      C2FFE99CBEFFCFA0B6FFFFF7FFFFFEFCFFFFFCFBFFFFBEBECEFFB7BACFFFB5BA
+      D3FFB2B9D2FFB3BACEFFBBB9CDFFCDB2CCFFD29DBEFFF09AC4FFF896C2FFF595
+      BEFFE99CBEFFD4A6BCFFFFF2FFFFFBFEFFFFFBFDFFFFBABACAFFB9BACFFFB7BB
+      D4FFB7BCD5FFB6BCD3FFC1BDD6FFD5BCD8FFCF9CBEFFEC98C2FFF997C3FFF696
+      BFFFEA9ABDFFCD9EB4FFFFF7FFFFF5FAFDFFF9FCFFFFB8BBCAFFBBBCD0FFBABC
+      D4FFB5B9D2FFB6BAD3FFBCB5D0FFCDB3D1FFD09DBFFFE894BEFFFD9BC7FFF897
+      BFFFEA99BAFFDFA9C0FFFFF2FFFFF2FAFAFFF8FEFFFFBBBFCAFFB9BBCDFFBBBC
+      D1FFB7B7CFFFBCBED6FFBBB7D0FFCAB7D2FFCBA2C2FFE19EC3FFE897BEFFEB9B
+      BEFFDE9BB6FFD0A4B5FFFFF8FFFFF6FDFAFFF8FDFEFFFAFDFFFFB9BBC6FFBDBD
+      CDFFBEBED0FFCACBDFFFCBCCE0FFCFC9E0FFD9C9E1FFE8C7E2FFCEA3BEFFCB9F
+      B6FFCAA6B7FFFFF9FFFFFFFCFFFFF9FFFBFFFAFFFEFFF9FCFFFFFBFDFFFFF8F6
+      FFFFD0D0DEFFCBCBDBFFCBCEDDFFCBCDDFFFD1CFE2FFD1C7D8FFDDCBDCFFFFF8
+      FFFFFFF9FFFFFFFDFFFFFDFDFDFFF4FCF5FFF8FFFAFFFAFFFEFFFDFEFFFFFFFD
+      FFFFD0CCD7FFD1CFDBFFCFD0DEFFC9CFDCFFCDD3E0FFD0D2DDFFCFCCD5FFFFFC
+      FFFFFFFDFFFFFFFBFAFFFFFFFCFFFDFFFCFFF8FEF9FFF9FEFDFFFBFFFFFFFFFD
+      FFFFD2CFD8FFD0CCD8FFCFCFDBFFCCCFDDFFC4CAD5FFC9CED7FFD2D4DCFFFFFC
+      FFFFFFFEFFFFFFFDFCFFFEFDF9FFFDF8FAFFFFFEFFFFFDFEFFFFF8FCFFFFF9FB
+      FFFFCCCCD8FFD1D1DFFFCBCBD9FFCBCBDBFFCFCFDDFFD5D3DFFFD1CBD6FFFFFC
+      FFFFFFFAFFFFFFFEFFFFFBFBFBFFFFFDFFFFFCF7F9FFFDFEFFFFFBFEFFFFFAFD
+      FFFFD2D4DEFFCACAD6FFD2D2E0FFD1D2E0FFD0D0DCFFCECAD5FFD5D0D9FFFFFA
+      FFFFFEF9FBFFFFFEFEFFFFFFFFFFFFFDFCFFFDFBFAFFFEFEFEFFFDFFFFFFFCFB
+      FFFFFAFAFFFFD1D0D9FFCCCED6FFC7CFD6FFC7CFD6FFCCD1D4FFFDFFFFFFFFFD
+      FDFFFFFFFEFFF2F3EFFFFDFFFCFFFFFEFA00FFFFFCFFFFFFFEFFFDFEFCFFFFFE
+      FFFFFFFEFFFFFCFAFFFFFAFEFFFFF4FDFFFFF4FFFFFFF6FFFFFFF7FEFBFFFCFD
+      FBFFFFFFFCFFFDFFF9FFF5F9F3FFFCF8FDFFFFFDFFFFFFFAFFFFFFFDFFFFFAF5
+      F7FFFFFEFFFFFFFFFEFFFFFEFDFFFDFFFFFFF9FEFFFFFCFEFEFFFDFFFFFFFDFF
+      FFFFF9FBFBFFFFFFFBFFFCFFF6FFFFFFFFFFFFFEFDFFFFFEFAFFFFF7F0FFFFFF
+      F5FFFFFFF2FFFFFFF1FFFFFFF1FFFFFFEFFFFFFFEBFFFDFFE6FFF9FFE1FFFBFF
+      E0FFFDFFE6FFFEFFEFFFFFFFF2FFF9FFFAFFFFFFF3FFFFFFEDFF563A18FF5537
+      0EFF59380BFF5E3D0CFF574008FFFFFFCBFF81953CFF6E9823FF6EA01CFF74A6
+      20FF6D9426FFFFFFD8FFFFFFE9FFF9FFF9FFFDF9E7FF543A15FF623A09FF623A
+      00FF683F00FF6B4001FF593C00FF525000FF7F9820FF74A80EFF6DAE00FF6BAC
+      00FF72A914FF74913CFFFFFFDBFFFFFEFFFFFFFFF2FF563307FF6C4003FF673F
+      00FF663F00FF673E00FF624700FF4F4D00FF81991BFF78AA10FF6BAA00FF6FAF
+      02FF6EA611FF6F9634FFF7FFCCFFFFFDFFFFFFFFF5FF60390CFF6B3B00FF6D40
+      00FF6D4200FF653A00FF5E4100FF555100FF829919FF76A709FF73B306FF6DAF
+      04FF6BA510FF709A2FFFFAFFC7FFF5F7FFFFFFFDF5FF603912FF6F3B00FF753F
+      00FF703C00FF6F3C00FF684500FF534D00FF899E1FFF76A705FF6CAE00FF69AE
+      00FF6DA712FF70972AFFFFFFC6FFF3F9FEFFFFFFF9FF583716FF693A07FF6E3C
+      00FF703F00FF6D4500FF624900FF575200FF8A9D12FF80A900FF7AB003FF6BA8
+      0CFF6A9D1DFF76943BFFFFFFD1FFF7FDFCFFFFFFF7FFFFFFEEFF573713FF5C3B
+      03FF614800FFA69A1EFFA3A30FFFA0A60BFF98A705FF96B004FF87A80AFF7199
+      22FF6C903EFFFBFFE0FFFBFFE9FFF7FCFBFFFFFFFCFFFFFFF7FFFFFFE9FFFFFF
+      D5FF989130FFA2AB15FFA0AF00FFA2B102FFA5B504FF99AB00FF94A714FFFFFF
+      C4FFF9FFE2FFF9FFF2FFFCFFFAFFF6F9FFFFFDFEFFFFFFFFFCFFFFFFEBFFFFFF
+      D4FF939A31FF93A50CFF96AC00FF97A900FFA0B000FFA0AE00FF92A117FFFFFF
+      D9FFFBFFF7FFFDFFFCFFFDFDFDFFFAFDFFFFF9FCFFFFF9FBFBFFFFFFF0FFFFFF
+      D4FF889529FF96AB0FFF9EB402FFA3B302FF9DAA00FFA5B301FF98A31DFFFFFF
+      E0FFFBFFFFFFFEFBFDFFFEFCFCFFF6FBFCFFFAFFFFFFFBFFFEFFFFFFEEFFFFFF
+      D2FF929A2FFF9AA50FFF9FAB00FFA4AD02FFA0AD00FF9BAB00FF92A11AFFFFFF
+      E0FFFAFDFBFFFFFDFCFFFFFDFCFFFDFFFFFFF3F8F6FFFAFFFBFFFFFFF1FFFFFF
+      D8FF8D923DFF9DA123FF9EA411FF9AA20FFF9CA814FF96A612FF8E9E2EFFFFFF
+      E1FFF7F7F7FFFFFFFEFFFFFFFCFFFFFBFDFFFFFDFDFFFDFFFCFFFAFFF5FFFFFF
+      F2FFFFFFE0FF8A8A36FF969A31FF8E972FFF8D9935FF879739FFFFFFCDFFFFFF
+      F1FFFDFFFFFFFCF6F7FFFFFAFAFFFFFCFF00FFFEFFFFFBFFFAFFFDFFFBFFFEFF
+      FDFFFFFFF0FFFFFFD2FFFFFFC6FFFFFFC6FFFFFFCBFFFFFFCFFFFFFFE0FFF8FF
+      F5FFFDFEFFFFFFFAFDFFFFF4F6FFFBFBFFFFF8FAFFFFF4F9FFFFF4FFFFFFF4FF
+      FFFFF4FFFEFFF8FFFFFFFBFFFFFFFFFEF9FFFFFEFFFFFFF3FFFFFFF3FFFFFFFE
+      FFFFFFFFFEFFEFF2FAFFF8FCFFFFF5FEFFFFF3FCFFFFF3F7FFFFF3F6FFFFEFF6
+      FFFFE7EEFFFFF6FBFFFFF2F6FBFFFBFDF7FFFDFAF6FFFFFBFFFFFFFBFFFFFFFF
+      FCFFF8FAF4FFF3F6FAFFFAFDFFFFE7FFF6FFE9FCFFFFE5E7FFFFECE5FFFFEDE6
+      FFFFEFEBFFFFEBEAFFFFF6FAFFFFFAFFFCFFFDFFF5FFF9FBF5FFFDFFF9FFFAFF
+      F0FFFFFFF7FFFDFFFBFFF2F5F3FFEAFFFFFFD9E7FFFF3D3789FF2E1D84FF3225
+      7BFF42377BFF514C79FFE9E9FFFFF7FEFFFFF5FCF7FFF7FDFCFFFBFFFFFFF2F8
+      F3FFFDFFFCFFF5F6FAFFFFFCFFFFF3F2FFFFB8B1EAFF745EB6FFFBE4FFFFFFF1
+      FFFFFFF8FFFFFFF9FFFFFDFAFFFFFAF9FFFFF8F8FFFFF4F6FFFFE8EAFFFFF6F9
+      FFFFF6F6FFFFF7F0FFFFFDF2FFFFE8E9FFFF837DCEFFA18BF5FFF8E0FFFFFDEE
+      FFFFFCF4FFFFFEF9FFFFFBFAFFFFECEFFFFF7D7EAAFF8180BEFFEDEBFFFFECEA
+      FFFFC7C2EFFF5C527DFFECE0FFFFCFEAFFFF4353B7FFB3ABFFFFE1CEFFFFEDDC
+      FFFFE8DEFFFFF1F3FFFFEBF5FFFFE4F5FFFFD9E6FFFF313090FFC8BFFFFFD0C8
+      FFFF504986FFE7E0FFFFFDF7FFFFC9E4FFFF1B2D92FF2625A3FF281D9CFF392A
+      93FF3A307CFFD8DAFFFFECFAFFFFE4F9FFFFDFEDFFFF6A67E2FF6458E0FF4A41
+      A9FFC3BFFFFFF7F2FFFFFDFCFFFFB4B8FFFF5153A7FFEBEBFFFFF4F2FFFFF8F2
+      FFFFF9F3FFFFFAFAFFFFF4FBFFFFEAFAFFFFE3EDFFFF7066EFFF2012A6FFA4A1
+      FFFFE6E7FFFFEFF1FFFFF7F8FFFF9187FFFF8782E5FFEBEFFFFFF3F8FFFFFBFA
+      FFFFFAF7FFFFFAFBFFFFEBEFFFFFE3E9FFFF6469B4FF6D6BDCFF6561D8FF5E5C
+      BCFFEAEBFFFFF1F4FFFFF4FAFFFF5D53FFFF8783FFFFDDE3FFFFDEE7FFFFE5E7
+      FFFFE3E7FFFFEDF6FFFFE4E9FFFF6A68C2FF6F70CAFFE1F4FFFFD1E1FFFF4039
+      9AFFCEC3FFFFEEEDFFFFF4FBFFFF3028C3FF2A25A8FF2A3383FF323D76FF3236
+      71FF8183B9FFDBE1FFFF626598FF817BD2FFE5E4FFFFE6FCFFFFE7FDFFFF857F
+      C6FF887ECBFFF5F6FFFFF6FFFFFFF3EDFFFFEDECFFFFF1FBFFFFF6FFFFFFF8F9
+      FFFFF7F2FFFFF5F0FFFFF8F5FFFFF4F0FFFFF5F8FFFFF6FFFEFFF4FFFBFFF6FB
+      FFFFEAF0FFFFF6FEFFFFF1FDFDFFF9F6FFFFFFFFFEFFFDFFF0FFFDFFF1FFFDFE
+      FFFFF7F4FFFFFFF8FFFFF9F3FFFFFFFEFFFFFFFFFCFFFFFFF9FFFAFEF3FFFAFF
+      F8FFFAFFFBFFF8FFFFFFEEF8F8FFFFFEFFFFFAFCFCFFFBFFFBFFF1F8F3FFF9FD
+      FFFFFAFCFFFFF6F5FEFFFFFEFFFFFFFFFCFFFFFFFBFFFFFFFBFFFFFFFCFFFFFD
+      FCFFFAF9FBFFF3F6FBFFFAFDFFFFFDFCFE00FDFFFFFFFBFFFFFFF8FFFFFFF8FE
+      FFFFF5FBFFFFFBFFFFFFFDFEFCFFFFFFF8FFFFFFF9FFFFF7F3FFFFFAFAFFFFFD
+      FFFFFFFCFFFFFDFCFFFFF4F5FFFFFFF8FDFFFFFDFFFFE4FAF8FFE8FFFFFFFCFD
+      FFFFFFFEFFFFFFF7F4FFFFFDF7FFFFFEF9FFFFF6F1FFFFFDFBFFFFFFFBFFFFFF
+      F6FFFFFEFEFFFFF6FFFFFDEFFFFFFFF4FFFFFFF2FFFFFFF7FFFFFFF6FFFFFFEC
+      FFFFFFF4FFFFFFF5FFFFFFF9FFFFFFF8FBFFFFFEFEFFFFFFFFFFF7F8F4FFFFFF
+      F8FFFFFFFCFFFFF8FFFFFFF7FFFFFFD9FFFFFFE4FFFFFFE0FFFFFFDAFFFFFFE3
+      FFFFFFE6FFFFFFE3FFFFFFEEFFFFFDF7FFFFF4FEFFFFEEFAFFFFF4FFFFFFFDFF
+      FBFFF5F9EEFFFAFEF9FFFBFFFEFFFFDCFFFFA3449FFF9D2C9AFFA5399CFF9647
+      8AFF8C4E82FF834E87FFFFEDFFFFFFF6FFFFEDEDFDFFF8F9FFFFF9F7FFFFFFFC
+      FFFFFFFCFFFFFFF5FFFFFFF8FFFFFFD4FFFF982C9CFFB73BB6FFFFD7FFFFFFE4
+      FFFFFFFBFFFFFFF6FFFFFFEFFFFFFFF4FFFFFFF3FFFFFFEBFFFFFFE4FFFFFFEF
+      FFFFFFEDFFFFFFE3FFFFFFE1FFFFFFCAFFFFAC2BB2FFB123B2FFFFD0FFFFFFEA
+      FFFFFFF7FFFFFFF0FFFFFFF2FFFFFFEEFFFF934F84FF963595FFFFD1FFFFFFCD
+      FFFF993FA3FF9F3D9DFF9D3894FFFFB8FFFFC725CAFFC218C5FFFFBDFFFFFFC9
+      FFFFFFCFFFFFFFE2FFFFFFDFFFFFFFE8FFFF9D3C93FFC31CC9FFC903D7FFCD0F
+      E2FFC322D2FF9C2B99FFFFDEFFFFD517D4FFCB1BCCFFB61FBCFFAC2BB6FFA136
+      B4FF8D38A0FF874892FFFFE3FFFFFFDFFFFFFFC4FFFFE111E7FFEA01FDFFCE00
+      EBFFBF1BD4FFFFD6FFFFFFE4FFFFE507E3FFCF1FD0FFFFD2FFFFFFECFFFFFFEE
+      FFFFFFF0FFFFFFF4FFFFFFEAFFFFFFD3FFFFD423C0FFE70CE9FFD100E7FFB41D
+      D8FFFFCDFFFFFFE3FFFFFFF1FFFFE800E5FFD51ED4FFFFDDFFFFFFF1FFFFFFF3
+      FFFFFADDFFFFFFEBFFFFFFDBFFFFC225ABFFD718C7FFDC16E0FFC815DCFFA720
+      C8FFFFD2FFFFFFE6FFFFFFFAFCFFF107EFFFDA11D6FFFFCBFFFFFFDBFFFFFFD9
+      FFFFFFD6FFFFFFC7FFFFC01CBEFFD518CDFFCF1CCBFFAC1FB6FFB12BC3FFB715
+      CBFFA61EB2FFFFE9FFFFFFF1F3FFC81ACCFFB71EB7FFAD37A0FF983C8FFF9442
+      9BFF91349DFFA526ABFFBB29BDFFC52DC2FFAC26A8FFFFD7FFFFFFCDFFFFB82D
+      C4FFAA30B4FFFFEAFFFFFFFDFFFFFFE3FFFFFFE8FFFFFFEDFFFFFFF5FFFFFFE7
+      FFFFFFEDFFFFFFF2FFFFFFEFFFFFFFE8FFFFFFECFFFFFFECFFFFFFE8FFFFFFDB
+      FFFFFFE5FFFFFFF5FFFFF4F7FFFFF7FBFFFFF8FCFFFFFEFFFAFFFFFFFEFFFFF3
+      FFFFF9F4FFFFF4FFF9FFF4FFF4FFFFFFF7FFFFF7F5FFFFF4FEFFFFEFFFFFFFF5
+      FFFFF6F1FFFFFAFCFFFFF4FDFFFFFAFFFEFFFCFFFDFFFFFEFEFFFFFBFFFFFFF8
+      FFFFFBF8FFFFF8FBFFFFF5FAF8FFF6FDFAFFFDFEFCFFFFFCFFFFFFFCFFFFF0F6
+      FBFFF4FFFFFFFBFFF9FFFBFFF3FFFAFFF800FFFFFBFFFFFDFFFFFFF4FFFFFFF9
+      FFFFFBF9FFFFFEFAFFFFFDFEFFFFF8FFFFFFF8FFFFFFFAF7F9FFFDFFFFFFF1FF
+      FEFFEBFFF5FFFCFFF3FFFFFFF1FFFAFFFF00FAFFFF00F2F7F6FFFBFFFEFFF3F6
+      F4FFFDFFFBFFFDFFFBFFF6FBF2FFFDFFF9FFF4F9F0FFFDFFFCFFFDFFFCFFFBFF
+      FFFFFBFFFFFFF5FAFBFFFAFFFF00F1F3FDFFFAFDFFFFFBFDFFFFEEF1F6FFFDFE
+      FFFFF5F7F8FFFDFFFFFFFDFFFFFFF8FAFAFFFDFFFFFFECEEEFFFFCFDFFFFF8FB
+      FFFFF6F8FFFFFAFCFFFFF9FBFFFFFAF7FFFFFAF7FFFFF9F5FFFFFBF8FFFFFBF6
+      FFFFFDF9FFFFFCF9FFFFF8F5FFFFFBF8FFFFF9F6FFFFFDF9FFFFF9F4FFFFFBF8
+      FFFFFBF8FFFFFAF7FFFFF9F6FFFF918DAAFF8A87A1FF8D88A3FF9692ABFF8C86
+      9DFF938EA3FF8D889DFF9893A8FF9590A5FF938EA3FF9690A7FF9690A7FF8C88
+      A1FF8B86A1FF8985A2FF8C88A5FF8D8D9FFFFAFAFFFFF9F7FFFFF5F4FFFFFAF7
+      FFFFFDFBFFFFFDFBFFFFF8F7FFFFF8F7FFFFFCFBFFFFFCFAFFFFF8F5FFFFFBFA
+      FFFFFBFAFFFF9393A5FF8B8B9DFF8D8E9CFFFAFBFFFFFBFBFFFFFBFCFFFFFCFB
+      FFFFFDFCFFFFFDFDFFFFF9F9FFFFFDFDFFFFFDFDFFFFF9F8FFFFFDFCFFFFFBFB
+      FFFFF2F2FEFFFAFBFFFF898A98FF90919FFFFAFBFFFF5C5C68FFF6F7FFFF7776
+      80FF62616AFF707076FF76767CFF6C6C72FF6D6D73FF6E6D76FF6C6B74FFF8F8
+      FFFFFBFBFFFFFAFBFFFF8B8C9AFF8B8C9AFFFAFBFFFFFBFBFFFFF9FAFFFFFDFC
+      FFFFFDFCFFFFF6F6FCFFFDFDFFFFFDFDFFFFFAFAFFFFFDFCFFFFFBFAFFFFFBFB
+      FFFFF9F9FFFFF8F9FFFF9192A0FF9697A5FFF2F3FFFF6E6E7AFFFBFCFFFF706F
+      79FF6A6972FF717177FF6E6E74FF707076FF65656BFF73727BFF717079FFFAFA
+      FFFFF7F7FFFFFAFBFFFF8A8B99FF838492FFFAFBFFFFFBFBFFFFF4F5FFFFFDFC
+      FFFFFDFCFFFFFBFBFFFFFDFDFFFFFCFCFFFFFDFDFFFFFDFCFFFFEFEEF7FFFBFB
+      FFFFFBFBFFFFF8F9FFFF9495A3FF8D8E9CFFFAFBFFFFFBFBFFFF6A6B75FF6C6B
+      75FFFDFCFFFF65656BFF6C6C72FFF8F8FEFFFDFDFFFFFDFCFFFFFDFCFFFFF7F7
+      FFFFFBFBFFFFF5F6FFFF8F909EFF9393A5FFF3F3FFFFFBF9FFFFF4F3FFFFFDFA
+      FFFFFDFBFFFFFBF9FFFFFDFCFFFFFDFCFFFFF8F7FFFFFBF9FFFFF9F6FFFFFBFA
+      FFFFFAF9FFFFF1F1FFFF9696A8FF8985A2FF9A97B1FF8C87A2FF9A96AFFF8D87
+      9EFF8D889DFF9A95AAFF8D889DFF8F8A9FFF938EA3FF9B95ACFF8F89A0FF9692
+      ABFF8B86A1FF9E9AB7FF837F9CFFFAF7FFFFF2EFFFFFFBF7FFFFF8F5FFFFFDF8
+      FFFFF9F5FFFFFBF8FFFFF9F6FFFFF8F5FFFFFDFAFFFFFAF6FFFFFAF5FFFFFBF8
+      FFFFF5F2FFFFFAF7FFFFFAF7FFFFFAFCFFFFF8FBFFFFFBFDFFFFF8FBFFFFFDFE
+      FFFFFDFFFFFFFBFDFDFFFDFFFFFFFDFFFFFFFDFFFFFFF6F8F9FFFDFEFFFFFBFE
+      FFFFFBFDFFFFF8FAFFFFF4F6FFFFFAFFFF00F6FBFCFFFBFFFFFFFAFFFDFFFDFF
+      FEFFFAFEF8FFF7FBF5FFFDFFF9FFFAFFF6FFFDFFF9FFFDFFFCFFFDFFFCFFF8FD
+      FCFFF4F9F8FFFAFFFF00FAFFFF00FFFFFCFFFDFEFAFFFFFFFCFFFEFFFBFFFFFF
+      FCFFFCFDF900FFFFFCFFFCFDF900FFFFFCFFF7F8F4FFFFFFFCFFFDFEFAFFFEFF
+      FBFFFFFFFCFFFFFFFCFFFBFCF8FFF8F9F5FFFFFFFCFFFFFFFCFFF9FAF6FFFFFF
+      FCFFFFFFFCFFF7F8F4FFFFFFFCFFFAFBF7FFFFFFFCFFFFFFFCFFFEFFFBFFFAFB
+      F7FFFFFFFCFFF9FAF6FFFFFFFCFFFFFFFBFFF6F8F2FFFFFFFBFFFEFFFAFFFDFF
+      F9FFFFFFFBFFFFFFFBFFF9FBF5FFFFFFFBFFF7F9F3FFFDFFF9FFFCFEF8FFFFFF
+      FBFFFFFFFBFFFDFFF9FFFFFFFBFF7C7E78FF6E706AFF7B7D77FF80827CFF7173
+      6DFF777973FF767872FF7A7C76FF80827CFF7D7F79FF6A6C66FF80827CFF7678
+      72FF71736DFF757771FF757771FF7D8077FFFBFEF5FFFCFFF6FFF7FAF1FFFFFF
+      F9FFFFFFF9FFFFFFF9FFFFFFF9FFFCFFF6FFFFFFF9FFFFFFF9FFFFFFF9FFF9FC
+      F3FFFFFFF9FF7E8178FF7A7D74FF777A71FFFFFFF9FFFFFFF9FFFFFFF9FFFFFF
+      F9FFFCFFF6FFFAFDF4FFFBFEF5FFFFFFF9FFFFFFF9FFF9FCF3FFFEFFF8FFFFFF
+      F9FFF9FCF3FFFCFFF6FF74776EFF75786FFFFFFFF9FF45483FFFF6F9F0FF5053
+      4AFF4A4D44FF464940FF51544BFF474A41FF55584FFF40433AFF52554CFFF7FA
+      F1FFFDFFF7FFFFFFF9FF767970FF80837AFFF9FCF3FFFFFFF9FFFFFFF9FFFFFF
+      F9FFFCFFF6FFFFFFF9FFFBFEF5FFFEFFF8FFF7FAF1FFFFFFF9FFF8FBF2FFFFFF
+      F9FFFEFFF8FFF6F9F0FF7B7E75FF7B7E75FFF9FCF3FF4D5047FFFEFFF8FF4649
+      40FF4A4D44FF4E5148FF464940FF4B4E45FF51544BFF4B4E45FF44473EFFFFFF
+      F9FFFFFFF9FFFFFFF9FF74776EFF767970FFFFFFF9FFF7FAF1FFFFFFF9FFFFFF
+      F9FFFFFFF9FFF8FBF2FFFFFFF9FFF8FBF2FFFEFFF8FFFCFFF6FFFFFFF9FFFFFF
+      F9FFFFFFF9FFF9FCF3FF80837AFF777A71FFFEFFF8FFFFFFF9FF54574EFF4D50
+      47FFFAFDF4FF4F5249FF42453CFFFFFFF9FFFCFFF6FFFFFFF9FFFFFFF9FFEFF2
+      E9FFFFFFF9FFFFFFF9FF70736AFF7E8178FFFAFDF4FFF6F9F0FFF5F8EFFFFFFF
+      F9FFF5F8EFFFFFFFF9FFFCFFF6FFF8FBF2FFF7FAF1FFFFFFF9FFF5F8EFFFFFFF
+      F9FFFFFFF9FFF6F9F0FF7E8178FF787A74FF777973FF878983FF7E807AFF6B6D
+      67FF83857FFF6F716BFF787A74FF7B7D77FF82847EFF757771FF70726CFF7B7D
+      77FF767872FF7A7C76FF767872FFFBFDF7FFFFFFFBFFFDFFF9FFFEFFFAFFFCFE
+      F8FFFFFFFBFFFFFFFBFFF9FBF5FFFDFFF9FFFFFFFBFFFEFFFAFFFFFFFBFFFFFF
+      FBFFFFFFFBFFFDFFF9FFFFFFFBFFFFFFFCFFFFFFFCFFF2F3EFFFFFFFFCFFFFFF
+      FCFFFAFBF7FFFAFBF7FFFFFFFCFFFFFFFCFFFAFBF7FFFFFFFCFFF9FAF6FFF7F8
+      F4FFFAFBF7FFFFFFFCFFFDFEFAFFFCFDF900FFFFFCFFFFFFFCFFFCFDF900FFFF
+      FCFFFCFDF900FFFFFCFFFBFCF8FFFFFFFCFFF7F8F4FFFFFFFCFFFFFFFCFFFEFF
+      FBFFFFFFFCFFFDFEFAFFFFFFFCFFFFFEFF00FBFAFCFF000000FF060606FF0200
+      00FF020000FF060501FF020100FF040300FF020100FF000100FFFEFFFDFFF9FB
+      FBFFFDFFFFFFF9FDFEFFFBFFFFFFF9F8FAFF0C0B0DFF000000FF919191FF8F8D
+      8CFF92908FFF959490FF94938FFF91908CFF93928EFF9A9897FF060705FFFFFF
+      FFFFF6F8F8FFFDFFFFFFF2F6F7FFFFFCFEFF020001FF9B9999FF020000FF0F0B
+      0AFF090504FF040100FF040100FF080501FF020100FF020000FF000100FF0303
+      03FFFDFFFFFFF6F8F9FFFDFFFFFF020001FF999698FF8D8B8BFF020000FFC6C2
+      C1FFC8C4C3FFC2BFBBFFD3D0CCFFCBC8C4FFCBC8C4FFC7C3C2FFD1CFCEFF0200
+      00FFFCFCFCFFFCFBFDFFFCFEFFFF080507FF020001FF959091FF0A0506FFD1CC
+      CBFF3D3837FF3C3734FF3C3734FF35302DFF403D39FF413D3CFFBBB9B8FF0806
+      06FF020202FFFFFEFF00FFFEFF00020001FF959294FF090405FFC6C1C2FFC7C2
+      C1FFC7C2C1FFD1CCC9FFC9C4C1FFD1CCC9FFC3BEBBFFD1CDCCFFCDC9C8FFC5C3
+      C3FF020000FFF7F6F8FFFBFAFCFF120D0FFF918C8EFF060001FFC1BBBCFF423D
+      3CFF403B3AFF342D2AFF403936FF3E3936FF342F2CFF393534FF3B3736FFC2C0
+      C0FF050303FFFFFEFF00FDFCFEFF040001FF999496FF050000FFCFC9CAFFC9C4
+      C3FFC7C2C1FFD7D0CDFFCBC4C1FFC2BDBAFFD9D4D1FFC5C1C0FFC8C4C3FFCDCB
+      CBFF020000FFFEFDFFFFFFFEFF00040001FF928D8FFF0B0506FFC5BFC0FF3A35
+      34FF3C3736FF433C39FF3C3532FF3C3734FF393431FF3C3837FF363231FFC3C1
+      C1FF020000FFFFFEFF00FFFEFF00080305FF8F8A8CFF070102FFCBC5C6FFD5D0
+      CFFFCCC7C6FFBDB6B3FFD0C9C6FFCAC5C2FFD5D0CDFFC7C3C2FFCCC8C7FFCCCA
+      CAFF060404FFFFFEFF00F7F6F8FF070406FF989597FF040000FFC9C4C5FF3732
+      31FF443F3EFF3C3734FF3B3633FF3C3734FF342F2CFF383433FF423E3DFFC7C5
+      C5FF020000FFFDFCFEFFFFFEFF00020001FF939092FF050001FFD5D0D1FFC5C0
+      BFFFC0BBBAFFD4CFCCFFC7C2BFFFCCC7C4FFCDCAC6FFD0CCCBFFC7C5C4FFC3C1
+      C1FF090909FFFFFEFF00FEFDFFFF030002FF9E9B9DFF020000FFC9C7C7FF3A36
+      35FF393534FF44413DFF3A3733FF35322EFF3E3B37FF312D2CFF3C3A39FFCCCA
+      CAFF000000FFF9F8FAFFFCFEFFFFFFFEFF00020001FF070505FFC7C5C5FFC7C3
+      C2FFD4D0CFFFC1BEBAFFCCC9C5FFC9C6C2FFD4D3CFFFC5C3C2FFC1C2C0FFCBCB
+      CBFF000000FFFDFFFFFFFDFFFFFFF9F8FAFFFFFEFF00000000FF000000FF1210
+      0FFF020000FF040300FF030200FF020100FF020100FF030100FF000100FF0000
+      00FF070909FFFBFDFEFFF3F7F8FFFFFEFF00FDFCFEFFFFFFFFFFFFFFFFFFFAF8
+      F7FFFFFDFCFFFFFFFCFFFEFDF9FFFFFFFCFFFDFCF8FFFFFFFEFFF9FAF8FFFDFF
+      FFFFF9FBFBFFFAFEFFFFFBFFFFFFF7FFF0FFEBF5E4FF090F00FF000600FF0A0D
+      00FF0B0E00FF110F04FF070500FF100E04FF040300FF0C0A02FFFEFFF6FFFBFC
+      F8FFFDFFFCFFF7FBF6FFF9FFFAFFF4FEEEFF0B1203FF000500FF4F5445FF5D62
+      53FF4D5243FF5A5D4EFF525448FF54564AFF5A5B51FF54574EFF0C0E08FFF9FA
+      F6FFF6FAF5FFFDFFFEFFF5FAF8FFF2F9ECFF030A00FF50574AFF000900FF000A
+      00FF061200FF000700FF000800FF000600FF000500FF000500FF000300FF0002
+      00FFFAFDFBFFFDFFFFFFFCFEFEFF070A01FF545A4FFF454E41FF020F00FFDAEA
+      D8FFDCF1DBFFE6FBE5FFDCF3DDFFE0F6E3FFDCF2E0FFE7F8EAFFDFEDE2FF0008
+      02FFFBFFFFFFF4F6F7FFF2F4F5FF040400FF020700FF5C665AFF000700FFDBF5
+      DEFF75937AFF7C9F84FF799F81FF70967AFF74977DFF7B9784FFCDE4D6FF000D
+      07FF000100FFF9FAFEFFFFFEFFFF070602FF545650FF000500FFDFF5E3FFDEFC
+      E3FFD4FDDEFFBDEDC9FFC5F8D3FFD1FFDFFFC5F4D4FFD6FDE3FFD6F4E1FFDEEF
+      E6FF060F0CFFFFFEFFFFECE8EEFF080501FF4F514BFF010E00FFD7F0DCFF6D93
+      77FF76A682FF67A178FF68A77BFF66A579FF639C75FF669575FF82A68EFFD5EC
+      DEFF000300FFF7F6F8FFFFFDFFFF040100FF5A5D54FF000600FFDAF7DEFFD3FC
+      DCFFC8FDD5FFB4F4C6FFBFFFD1FFBBFFCEFFBFFFD1FFD1FFE0FFC4ECD0FFDEF8
+      E6FF000600FFFFFFFFFFFCF7F9FF040100FF565A4FFF000700FFD6F3D9FF6C98
+      74FF60996CFF66A976FF5DA570FF5FA772FF62A572FF679F76FF709B7AFFD3EE
+      DAFF000E02FFF8F9F5FFFFFEFFFF0E0C04FF515549FF000700FFDCFADDFFD3FE
+      D9FFD1FFDBFFBAFCC9FFBAFFC9FFBAFEC9FFC1FFD0FFC8FED3FFD5FFDCFFD4F0
+      D9FF000D00FFFFFFFBFFFAF7F3FF020300FF575E51FF000E00FFD0EBD1FF7199
+      76FF699B71FF67A171FF66A672FF66A371FF5E9868FF75A77DFF6E9575FFE1FB
+      E3FF000600FFFBFFF7FFFFFFFBFF090A01FF43493EFF000900FFE3F9E1FFE1FF
+      E2FFD0FBD6FFD4FFDAFFC5FACEFFD1FFD8FFCBFBD1FFD5FFDBFFDCFBDEFFD1E6
+      D0FF091608FFFCFFF8FFF6F8F2FF090B05FF464E44FF0B1509FFD9EBDAFF7890
+      78FF749376FF739876FF729B76FF6F9571FF759A78FF739275FF809781FFEAFB
+      EDFF000400FFF0F4EFFFFDFFFCFFF5F8F6FF0A100BFF000300FFEBF7EBFFE3F6
+      E3FFE3F8E2FFDBF6DCFFDBF7DAFFE2FDE3FFDCF7DDFFDCF1DBFFDAECDBFFE7F2
+      E8FF000300FFFBFFFEFFFDFFFEFFF8FAFAFFF6F9F7FF0A100BFF000600FF020E
+      02FF000700FF000E00FF000900FF000800FF000800FF071608FF040F05FF0005
+      00FF000200FFF9FBFBFFF6F8F8FFFCFEFF00F9FBFBFFFBFFFEFFF2F9F2FFF8FF
+      F7FFF8FFF5FFF4FFF3FFF8FFF5FFF8FFF5FFF4FFF3FFF5FFF3FFF6FEF7FFF5FB
+      F6FFFBFFFEFFFAFCFDFFFDFFFFFF4948480046484800504E4E76787070E78982
+      82F7797272EC4D4B4B983B3C3C1C3E4040003F4141003F4141003F4141003F41
+      41003F4141003F4141003F41410048474700434141005651519CC5B7B7FFEFDD
+      DDFFDECBCBFFC4B7B7FF646060D43A3C3C1D3F4141003F4141003F4141003F41
+      41003F4141003F4141003F414100504E4E745552529C3B3C3C2D585656B2C0B0
+      B0FFDECCCCFFE8DADAFFCEC1C1FF504E4EAA3E4141003F4242003F4242003F42
+      42003F4242003F4242003F424200777070ECC8BABAFF585555B02E2F2F1E534F
+      4FB2C0B4B4FFE8DCDCFFF0E7E7FF857D7DEB333535273A3B3B003A3B3B003A3B
+      3B003A3B3B003A3C3C003A3B3B00857C7CF7EFDCDCFFC0B2B2FF4C4A4AB52628
+      286FA29999FFF4EBEBFFF8F1F1FF968E8EF22D2F2F4135363600333535003234
+      3400323333003031310030313100706A6AEEDCC9C9FFDDCDCDFFBDAFAFFF9F95
+      95FFDFD4D4FFF3EFEFFFFBF6F6FF928989F41C1E1E541C1D1D00171919001012
+      12000F0F0F0000000000020404003F3E3E9ABCAFAFFFE9DADAFFE9DDDDFFF4EA
+      EAFFF3EEEEFFF6F4F4FFEEE7E7FFE6DFDFFF6F6B6BE01919193B181A1A001315
+      15001212120003040400060808002629291D524D4DD3C7B8B8FFF1E5E5FFF9F1
+      F1FFFBF4F4FFECE5E5FFECE5E5FFFFFFFFFFF2EDEDFF6A6565EB151616371113
+      13001212120003040400060808002D2F2F002425251F363434AB726A6AE78A81
+      81F0877E7EF9E0D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFEFEBEBFF676363EC0F0F
+      0F331011110003040400060808002D2F2F002A2A2A001E1F1F00191B1B251315
+      15410B0E0E5C615B5BE5EEE8E8FFFFFFFFFFFFFFFFFFFFFFFFFFF1EEEEFF6660
+      60E90909093901020200060808002D2F2F002A2A2A0020212100202121001E1F
+      1F0013151500090A0A365A5454E8EBE6E6FFFFFFFFFFF8F6F6FFFAF6F6FFF2EF
+      EFFF666262E70000003B040707002D2F2F002A2A2A0020212100202121001E1F
+      1F00151717000E101000080909355B5555ECEBE4E4FFF5EDEDFFEAE2E2FFFBF8
+      F8FFF6F4F4FF5F5A5AEC040606382D2F2F002A2A2A0020212100202121001E1F
+      1F0015171700101111000C0F0F0000010136544E4EECE9DCDCFFF5EDEDFFE1D8
+      D8FFE4D9D9FFFCF7F7FF595757EE2D2F2F002A2A2A0020212100202121001E1F
+      1F0015171700101111000E101000030404000000003B585252E7EADFDFFFECE2
+      E2FFE6D9D9FFDCD5D5FF413E3EC42D2F2F002A2A2A0020212100202121001E1F
+      1F0015171700101111000E101000040606000000000000000039524D4DE9F2E7
+      E7FFDAD0D0FF2F2D2DC2000000192D2F2F002A2A2A0020212100202121001E1F
+      1F0015171700101111000E101000040606000000000000000000000000334C47
+      47EC3B3737BE0000001901010100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000300502A10115D732F4785C14A75
+      A6ED31528CC819266B900100501300005D000000600000006000000060000000
+      60000000600000006000FFFFFF00FFFFFF002D589FDF73DDF3FF8BFAFFFF99FF
+      FFFF92FDFFFF4BC4EAFF03005F6C0100572501005A2501005A25010059230100
+      59220000591300005F00FFFFFF00FFFFFF002677BEF23EB2DEFA51DDF3FE55FF
+      FFFF5BFFFFFF38ECFDFF27A7D4FF29A0CDFB289ECEFB299ACDFB2996CBFA2A96
+      CBF91D5FAAE306096349FFFFFF00FFFFFF001767B3FB01066AA52782BDE20CFF
+      FFFF0BFCFEFF0BD9F5FF0CDEFDFF0CE8FFFF0BE4FFFF0BE7FFFF0BE1FFFF0BE7
+      FFFF0AD1FFFF0A3E98E8FFFFFF00FFFFFF001581C4F60DABDEFA0FC7F2FD00E8
+      FFFF00E4FFFF00E8FFFF00E6FFFF00B5ECFF007DCBFC0087D4FF0063BCEC005D
+      B8E40057B7EC00026041FFFFFF00FFFFFF000F7AC0FF09DDFFFF00D6FFFF00D1
+      FFFF00D6FFFF00ACECFF004A9FD000076A730000572C00005E3B00005B220000
+      581000005B2200005900FFFFFF00FFFFFF00020E6B6805358AA90368B2E20073
+      BCEF0051A2CF001F7DA10000540C00005D0000005C0000005F00000060000000
+      60000000600000005A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00
+    }
+  end
+  object SQLQuery1: TSQLQuery
+    AutoCalcFields = False
+    ReadOnly = False
+    Params = <>
+    left = 178
+    top = 172
+  end
+  object pmDatabase: TPopupMenu
+    OnPopup = pmDatabasePopup
+    left = 192
+    top = 264
+    object lmCreateDB: TMenuItem
+      Tag = -2
+      Caption = 'Create New Database'
+      OnClick = lmCreateDBClick
+    end
+    object lmRegdb: TMenuItem
+      Tag = -2
+      Caption = 'Register Database'
+      OnClick = lmRegdbClick
+    end
+    object lmRestore: TMenuItem
+      Tag = -2
+      Caption = 'Restore Database'
+      OnClick = lmRestoreClick
+    end
+    object lmRefresh: TMenuItem
+      Tag = 100
+      Caption = 'Refresh'
+      OnClick = lmRefreshClick
+    end
+    object lmConnectAs: TMenuItem
+      Caption = 'Connect As'
+      OnClick = lmConnectAsClick
+    end
+    object lmDisconnect: TMenuItem
+      Caption = 'Disconnect'
+      OnClick = lmDisconnectClick
+    end
+    object lmOpenQuery: TMenuItem
+      Caption = 'Open Query Window'
+      OnClick = lmOpenQueryClick
+    end
+    object lmScriptDatabase: TMenuItem
+      Caption = 'Script Database '
+      OnClick = lmScriptDatabaseClick
+    end
+    object lmBackup: TMenuItem
+      Caption = 'Backup/Restore Database'
+      OnClick = lmBackupClick
+    end
+    object lmSweep: TMenuItem
+      Caption = 'Sweep DB'
+      OnClick = lmSweepClick
+    end
+    object lmDBIndo: TMenuItem
+      Caption = 'Database Info'
+      OnClick = lmDBIndoClick
+    end
+    object MenuItem8: TMenuItem
+      Caption = '-'
+    end
+    object lmEditReg: TMenuItem
+      Caption = 'Edit Registration'
+      OnClick = lmEditRegClick
+    end
+    object lmUnregisterDatabase: TMenuItem
+      Caption = 'Unregister Database'
+      OnClick = lmUnregisterDatabaseClick
+    end
+    object lmOpenQuery2: TMenuItem
+      Tag = 30
+      Caption = 'Open Query Window'
+      OnClick = lmOpenQuery2Click
+    end
+    object lmViewFirst1000: TMenuItem
+      Tag = 1
+      Caption = 'View First 1000 records'
+      OnClick = lmViewFirst1000Click
+    end
+    object lmNewTable: TMenuItem
+      Tag = 11
+      Caption = 'New Table'
+      OnClick = lmNewTableClick
+    end
+    object lmEditTable: TMenuItem
+      Tag = 1
+      Caption = 'Edit Data (Grid)'
+      OnClick = lmEditTableClick
+    end
+    object lmEditDataForm: TMenuItem
+      Tag = 1
+      Caption = 'Edit Data (Form)'
+      OnClick = lmEditDataFormClick
+    end
+    object lmViewFields: TMenuItem
+      Tag = 1
+      Caption = 'Expand Fields'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        20000000000000040000640000006400000000000000000000002D2F2F002A2A
+        2A0020212100202121001E1F1F0015171700101111000E101000040606000000
+        000000000000000000334C4747EC3B3737BE00000019010101002D2F2F002A2A
+        2A0020212100202121001E1F1F0015171700101111000E101000040606000000
+        000000000039524D4DE9F2E7E7FFDAD0D0FF2F2D2DC2000000192D2F2F002A2A
+        2A0020212100202121001E1F1F0015171700101111000E101000030404000000
+        003B585252E7EADFDFFFECE2E2FFE6D9D9FFDCD5D5FF413E3EC42D2F2F002A2A
+        2A0020212100202121001E1F1F0015171700101111000C0F0F0000010136544E
+        4EECE9DCDCFFF5EDEDFFE1D8D8FFE4D9D9FFFCF7F7FF595757EE2D2F2F002A2A
+        2A0020212100202121001E1F1F00151717000E101000080909355B5555ECEBE4
+        E4FFF5EDEDFFEAE2E2FFFBF8F8FFF6F4F4FF5F5A5AEC040606382D2F2F002A2A
+        2A0020212100202121001E1F1F0013151500090A0A365A5454E8EBE6E6FFFFFF
+        FFFFF8F6F6FFFAF6F6FFF2EFEFFF666262E70000003B040707002D2F2F002A2A
+        2A001E1F1F00191B1B25131515410B0E0E5C615B5BE5EEE8E8FFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1EEEEFF666060E90909093901020200060808002D2F2F002425
+        251F363434AB726A6AE78A8181F0877E7EF9E0D6D6FFFFFFFFFFFFFFFFFFFFFF
+        FFFFEFEBEBFF676363EC0F0F0F331011110003040400060808002629291D524D
+        4DD3C7B8B8FFF1E5E5FFF9F1F1FFFBF4F4FFECE5E5FFECE5E5FFFFFFFFFFF2ED
+        EDFF6A6565EB15161637111313001212120003040400060808003F3E3E9ABCAF
+        AFFFE9DADAFFE9DDDDFFF4EAEAFFF3EEEEFFF6F4F4FFEEE7E7FFE6DFDFFF6F6B
+        6BE01919193B181A1A0013151500121212000304040006080800706A6AEEDCC9
+        C9FFDDCDCDFFBDAFAFFF9F9595FFDFD4D4FFF3EFEFFFFBF6F6FF928989F41C1E
+        1E541C1D1D0017191900101212000F0F0F000000000002040400857C7CF7EFDC
+        DCFFC0B2B2FF4C4A4AB52628286FA29999FFF4EBEBFFF8F1F1FF968E8EF22D2F
+        2F41353636003335350032343400323333003031310030313100777070ECC8BA
+        BAFF585555B02E2F2F1E534F4FB2C0B4B4FFE8DCDCFFF0E7E7FF857D7DEB3335
+        35273A3B3B003A3B3B003A3B3B003A3B3B003A3C3C003A3B3B00504E4E745552
+        529C3B3C3C2D585656B2C0B0B0FFDECCCCFFE8DADAFFCEC1C1FF504E4EAA3E41
+        41003F4242003F4242003F4242003F4242003F4242003F424200484747004341
+        41005651519CC5B7B7FFEFDDDDFFDECBCBFFC4B7B7FF646060D43A3C3C1D3F41
+        41003F4141003F4141003F4141003F4141003F4141003F414100494848004648
+        4800504E4E76787070E7898282F7797272EC4D4B4B983B3C3C1C3E4040003F41
+        41003F4141003F4141003F4141003F4141003F4141003F414100
+      }
+      OnClick = lmViewFieldsClick
+    end
+    object MenuItem7: TMenuItem
+      Tag = 1
+      Caption = '-'
+    end
+    object lmTableManage: TMenuItem
+      Tag = 1
+      Caption = 'Table Management'
+      Bitmap.Data = {
+        36030000424D3603000000000000360000002800000010000000100000000100
+        1800000000000003000064000000640000000000000000000000F7F7F7FDFFFF
+        F8FFFFEAF5F3FAFFFFF2F4F4FFFAFBFCF4F5FCF4F5FEF9FAF9FBFBEEF6F5F3FB
+        FAF8FFFFFDFFFFFCFCFCFEFEFEECEEEE383D3C343A39393E3D4B4B4B36313247
+        41423B35364641423D3D3D3136353D4342292E2DF5F7F7FEFEFEFEFFFDFFFFFE
+        434140F5F3F2FAF8F7FDFBFAFFFFFEF7F8F6FDFEFCF1EFEEFDFBFAFFFFFEF4F2
+        F1454342FFFFFEFFFFFEFEFCFBFDF9F83B3333FFFEFE463E3EFEFAF9333634F0
+        F5F3343937454846F3EFEE403838FFFAFA3F3737FFFBFAF8F6F5FFFCF8FFFCF9
+        453937FFFEFCFEF2F0FFFCF9F8FEF9F8FFFCEEF8F2F7FDF8FFFEFBFFFCFAFFF6
+        F4594D4BFFFFFCFEFBF7FFFFFEF6F4F34D4847EFEAE9474544F7FCFA2E3D3924
+        38332F433EE7F6F2383D3B403E3DF7F2F13D3837FEFCFBFBFCFAF3FBFAF6FFFF
+        2D3A38ECFAF8EFFFFFE1FAF6E4FFFFDEFFFCD9FDF7DEFEF9E5FEFAECFFFCEDFB
+        F9303D3BF6FFFFEEF9F7F6FFFFEDFAFC778C8DE3FFFF6C8E8DD8FDFB6C9391D4
+        FBF9668D8B6E9593678C8A6E908FD9F5F57F9495EBF8FAF6FFFFFFFDFFECF2F7
+        7F9698D7FBFBD2FCFBDBFFFFE0FFFFDDFBFCDDFBFCDCFEFED8FFFFD7FFFFD6FA
+        FA758C8EF8FEFFF2F0F6FFF9FFF9FBFF6C8589D8FFFF5E8C8D6B94966B868AE8
+        FCFF798D92748F93D3FCFE649293CFF6F8768F93F4F6FEFFFBFFFFF9FFF2F1FB
+        789298C4EFF2D2FFFFD6FFFFE0F6FCF2FDFFF0FBFFE1F7FDDAFFFFCEFEFFD6FF
+        FF6E888EF9F8FFFBEAF7FFF8FFF3F9FF6C8A8FD4FFFF5D909256848583999F79
+        878DEAF5FD7790945F8A8D588C8CCDFDFF6F9093F9FBFFFFFBFFF6FEFFECFFFF
+        5E8789C9FFFFC2FEFDCAFFFCE1FFFFE0F9FBEAFFFFE0FFFFC3F7F7CAFFFFCDFF
+        FF5A8685EDFFFFE7F0F4E5EEF1EFFFFF6F94925D8C89689A9675A09D5F7B7B7D
+        9192768A8B6783836B9693699B97578683658A88EFFFFFF6FFFFFFFDFFF2F1F3
+        EEFAFAE7FCFAE6FCFAEDFDFCFAFFFFF0F2F3FBFDFEF8FDFEEFFFFEE6FCFAE9FE
+        FCF4FFFFEFEEF0FFFBFEFFF6F8FFFAFBFEFEFEF7FDFCF6FEFDF1F6F5FFFEFFFF
+        FCFDFFFEFFFFFEFFFBFFFFF0F8F7F4FAF9FAFCFCFFF7F9FFFDFF
+      }
+      OnClick = lmTableManageClick
+    end
+    object lmScriptTable: TMenuItem
+      Tag = 1
+      Caption = 'Script Table As'
+      object lmScriptTableCreate: TMenuItem
+        Caption = 'Create'
+        OnClick = lmScriptTableCreateClick
+      end
+      object lmScriptInsert: TMenuItem
+        Caption = 'Insert'
+        OnClick = lmScriptInsertClick
+      end
+      object lmScriptUpdate: TMenuItem
+        Caption = 'Update'
+        OnClick = lmScriptUpdateClick
+      end
+    end
+    object lmCopyTable: TMenuItem
+      Tag = 1
+      Caption = 'Copy Table'
+      OnClick = lmCopyTableClick
+    end
+    object lmViewGen: TMenuItem
+      Tag = 2
+      Caption = 'View Generator'
+      OnClick = lmViewGenClick
+    end
+    object lmSetGen: TMenuItem
+      Tag = 2
+      Caption = 'Set Generator Value'
+      OnClick = lmSetGenClick
+    end
+    object lmNewGen: TMenuItem
+      Tag = 12
+      Caption = 'Create New Generator'
+      OnClick = lmNewGenClick
+    end
+    object lmCreateAutoInc: TMenuItem
+      Tag = 2
+      Caption = 'Create Auto increment Trigger'
+      OnClick = lmCreateAutoIncClick
+    end
+    object lmDisplay1000V: TMenuItem
+      Tag = 4
+      Caption = 'View First 1000 records'
+      OnClick = lmDisplay1000VClick
+    end
+    object lmDisplayView: TMenuItem
+      Tag = 4
+      Caption = 'Display View DDL'
+      OnClick = lmDisplayViewClick
+    end
+    object lmCreateView: TMenuItem
+      Tag = 14
+      Caption = 'Create New View'
+      OnClick = lmCreateViewClick
+    end
+    object lmEditView: TMenuItem
+      Tag = 4
+      Caption = 'Edit View'
+      OnClick = lmEditViewClick
+    end
+    object lmCreateStoredProc: TMenuItem
+      Tag = 15
+      Caption = 'Create New Stored Procedure'
+      OnClick = lmCreateStoredProcClick
+    end
+    object lmCallStoreProc: TMenuItem
+      Tag = 5
+      Caption = 'Call procedure'
+      OnClick = lmCallStoreProcClick
+    end
+    object lmViewStoredProcedure: TMenuItem
+      Tag = 5
+      Caption = 'View Stored Procedure'
+      OnClick = lmViewStoredProcedureClick
+    end
+    object lmEditProc: TMenuItem
+      Tag = 5
+      Caption = 'Edit Stored Procedure'
+      OnClick = lmEditProcClick
+    end
+    object lmViewTrigger: TMenuItem
+      Tag = 3
+      Caption = 'View Trigger'
+      OnClick = lmViewTriggerClick
+    end
+    object lmCreateTrigger: TMenuItem
+      Tag = 13
+      Caption = 'Create New Trigger'
+      OnClick = lmCreateTriggerClick
+    end
+    object lmEditTrigger: TMenuItem
+      Tag = 3
+      Caption = 'Edit Trigger'
+      OnClick = lmEditTriggerClick
+    end
+    object lmActivateTrig: TMenuItem
+      Tag = 3
+      Caption = 'Activate Trigger'
+      OnClick = lmActivateTrigClick
+    end
+    object lmDeactiveTrig: TMenuItem
+      Tag = 3
+      Caption = 'DeActivate Trigger'
+      OnClick = lmDeactiveTrigClick
+    end
+    object lmNewUDF: TMenuItem
+      Tag = 16
+      Caption = 'Create new function'
+      OnClick = lmNewUDFClick
+    end
+    object lmViewUDF: TMenuItem
+      Tag = 6
+      Caption = 'View Function'
+      OnClick = lmViewUDFClick
+    end
+    object lmOpenSystemTable: TMenuItem
+      Tag = 7
+      Caption = 'Open Table'
+      OnClick = lmOpenSystemTableClick
+    end
+    object lmNewDomain: TMenuItem
+      Tag = 18
+      Caption = 'New Domain'
+      OnClick = lmNewDomainClick
+    end
+    object lmViewDomain: TMenuItem
+      Tag = 8
+      Caption = 'Domain Info'
+      OnClick = lmViewDomainClick
+    end
+    object lmNewRole: TMenuItem
+      Tag = 19
+      Caption = 'Add New Role'
+      OnClick = lmNewRoleClick
+    end
+    object lmRolePermissions: TMenuItem
+      Tag = 9
+      Caption = 'Show permissions'
+      OnClick = lmRolePermissionsClick
+    end
+    object lmRolePerManagement: TMenuItem
+      Tag = 9
+      Caption = 'Permission Management'
+      Bitmap.Data = {
+        36030000424D3603000000000000360000002800000010000000100000000100
+        1800000000000003000064000000640000000000000000000000FCFDF9FFFFFC
+        FFFFFCFCFDF9FFFFFCFCFDF9FFFFFCFBFCF8FFFFFCF7F8F4FFFFFCFFFFFCFEFF
+        FBFFFFFCFDFEFAFFFFFCFFFFFCFFFFFCF2F3EFFFFFFCFFFFFCFAFBF7FAFBF7FF
+        FFFCFFFFFCFAFBF7FFFFFCF9FAF6F7F8F4FAFBF7FFFFFCFDFEFAFBFDF7FFFFFB
+        FDFFF9FEFFFAFCFEF8FFFFFBFFFFFBF9FBF5FDFFF9FFFFFBFEFFFAFFFFFBFFFF
+        FBFFFFFBFDFFF9FFFFFB787A747779738789837E807A6B6D6783857F6F716B78
+        7A747B7D7782847E75777170726C7B7D777678727A7C767678727E8178FAFDF4
+        F6F9F0F5F8EFFFFFF9F5F8EFFFFFF9FCFFF6F8FBF2F7FAF1FFFFF9F5F8EFFFFF
+        F9FFFFF9F6F9F07E8178777A71FEFFF8FFFFF954574E4D5047FAFDF44F524942
+        453CFFFFF9FCFFF6FFFFF9FFFFF9EFF2E9FFFFF9FFFFF970736A767970FFFFF9
+        F7FAF1FFFFF9FFFFF9FFFFF9F8FBF2FFFFF9F8FBF2FEFFF8FCFFF6FFFFF9FFFF
+        F9FFFFF9F9FCF380837A7B7E75F9FCF34D5047FEFFF84649404A4D444E514846
+        49404B4E4551544B4B4E4544473EFFFFF9FFFFF9FFFFF974776E80837AF9FCF3
+        FFFFF9FFFFF9FFFFF9FCFFF6FFFFF9FBFEF5FEFFF8F7FAF1FFFFF9F8FBF2FFFF
+        F9FEFFF8F6F9F07B7E7575786FFFFFF945483FF6F9F050534A4A4D4446494051
+        544B474A4155584F40433A52554CF7FAF1FDFFF7FFFFF9767970777A71FFFFF9
+        FFFFF9FFFFF9FFFFF9FCFFF6FAFDF4FBFEF5FFFFF9FFFFF9F9FCF3FEFFF8FFFF
+        F9F9FCF3FCFFF674776E7D8077FBFEF5FCFFF6F7FAF1FFFFF9FFFFF9FFFFF9FF
+        FFF9FCFFF6FFFFF9FFFFF9FFFFF9F9FCF3FFFFF97E81787A7D747C7E786E706A
+        7B7D7780827C71736D7779737678727A7C7680827C7D7F796A6C6680827C7678
+        7271736D757771757771FFFFFBF6F8F2FFFFFBFEFFFAFDFFF9FFFFFBFFFFFBF9
+        FBF5FFFFFBF7F9F3FDFFF9FCFEF8FFFFFBFFFFFBFDFFF9FFFFFBF8F9F5FFFFFC
+        FFFFFCF9FAF6FFFFFCFFFFFCF7F8F4FFFFFCFAFBF7FFFFFCFFFFFCFEFFFBFAFB
+        F7FFFFFCF9FAF6FFFFFCFFFFFCFDFEFAFFFFFCFEFFFBFFFFFCFCFDF9FFFFFCFC
+        FDF9FFFFFCF7F8F4FFFFFCFDFEFAFEFFFBFFFFFCFFFFFCFBFCF8
+      }
+      OnClick = lmRolePerManagementClick
+    end
+    object lmNewException: TMenuItem
+      Tag = 20
+      Caption = 'Add New Exception'
+      OnClick = lmNewExceptionClick
+    end
+    object lmScriptException: TMenuItem
+      Tag = 10
+      Caption = 'Script'
+      OnClick = lmScriptExceptionClick
+    end
+    object lmDropException: TMenuItem
+      Tag = 10
+      Caption = 'Drop'
+      OnClick = lmDropExceptionClick
+    end
+    object lmAddUser: TMenuItem
+      Tag = 21
+      Caption = 'Create New User'
+      OnClick = lmAddUserClick
+    end
+    object lmChangePassword: TMenuItem
+      Tag = 111
+      Caption = 'Change password'
+      OnClick = lmChangePasswordClick
+    end
+    object lmPermissions: TMenuItem
+      Tag = 111
+      Caption = 'Show Permissions'
+      OnClick = lmPermissionsClick
+    end
+    object lmUserPermManagement: TMenuItem
+      Tag = 111
+      Caption = 'Permission Management'
+      Bitmap.Data = {
+        36030000424D3603000000000000360000002800000010000000100000000100
+        1800000000000003000064000000640000000000000000000000FCFDF9FFFFFC
+        FFFFFCFCFDF9FFFFFCFCFDF9FFFFFCFBFCF8FFFFFCF7F8F4FFFFFCFFFFFCFEFF
+        FBFFFFFCFDFEFAFFFFFCFFFFFCFFFFFCF2F3EFFFFFFCFFFFFCFAFBF7FAFBF7FF
+        FFFCFFFFFCFAFBF7FFFFFCF9FAF6F7F8F4FAFBF7FFFFFCFDFEFAFBFDF7FFFFFB
+        FDFFF9FEFFFAFCFEF8FFFFFBFFFFFBF9FBF5FDFFF9FFFFFBFEFFFAFFFFFBFFFF
+        FBFFFFFBFDFFF9FFFFFB787A747779738789837E807A6B6D6783857F6F716B78
+        7A747B7D7782847E75777170726C7B7D777678727A7C767678727E8178FAFDF4
+        F6F9F0F5F8EFFFFFF9F5F8EFFFFFF9FCFFF6F8FBF2F7FAF1FFFFF9F5F8EFFFFF
+        F9FFFFF9F6F9F07E8178777A71FEFFF8FFFFF954574E4D5047FAFDF44F524942
+        453CFFFFF9FCFFF6FFFFF9FFFFF9EFF2E9FFFFF9FFFFF970736A767970FFFFF9
+        F7FAF1FFFFF9FFFFF9FFFFF9F8FBF2FFFFF9F8FBF2FEFFF8FCFFF6FFFFF9FFFF
+        F9FFFFF9F9FCF380837A7B7E75F9FCF34D5047FEFFF84649404A4D444E514846
+        49404B4E4551544B4B4E4544473EFFFFF9FFFFF9FFFFF974776E80837AF9FCF3
+        FFFFF9FFFFF9FFFFF9FCFFF6FFFFF9FBFEF5FEFFF8F7FAF1FFFFF9F8FBF2FFFF
+        F9FEFFF8F6F9F07B7E7575786FFFFFF945483FF6F9F050534A4A4D4446494051
+        544B474A4155584F40433A52554CF7FAF1FDFFF7FFFFF9767970777A71FFFFF9
+        FFFFF9FFFFF9FFFFF9FCFFF6FAFDF4FBFEF5FFFFF9FFFFF9F9FCF3FEFFF8FFFF
+        F9F9FCF3FCFFF674776E7D8077FBFEF5FCFFF6F7FAF1FFFFF9FFFFF9FFFFF9FF
+        FFF9FCFFF6FFFFF9FFFFF9FFFFF9F9FCF3FFFFF97E81787A7D747C7E786E706A
+        7B7D7780827C71736D7779737678727A7C7680827C7D7F796A6C6680827C7678
+        7271736D757771757771FFFFFBF6F8F2FFFFFBFEFFFAFDFFF9FFFFFBFFFFFBF9
+        FBF5FFFFFBF7F9F3FDFFF9FCFEF8FFFFFBFFFFFBFDFFF9FFFFFBF8F9F5FFFFFC
+        FFFFFCF9FAF6FFFFFCFFFFFCF7F8F4FFFFFCFAFBF7FFFFFCFFFFFCFEFFFBFAFB
+        F7FFFFFCF9FAF6FFFFFCFFFFFCFDFEFAFFFFFCFEFFFBFFFFFCFCFDF9FFFFFCFC
+        FDF9FFFFFCF7F8F4FFFFFCFDFEFAFEFFFBFFFFFCFFFFFCFBFCF8
+      }
+      OnClick = lmUserPermManagementClick
+    end
+    object lmCopyPermission: TMenuItem
+      Tag = 111
+      Caption = 'Copy Permission To'
+      OnClick = lmCopyPermissionClick
+    end
+    object lmEditField: TMenuItem
+      Tag = 112
+      Caption = 'Edit Field'
+      OnClick = lmEditFieldClick
+    end
+  end
+  object mdsHistory: TMemDataset
+    FieldDefs = <    
+      item
+        Name = 'Time'
+        DataType = ftDateTime
+        Precision = 0
+        Size = 0
+      end    
+      item
+        Name = 'SQLType'
+        DataType = ftString
+        Precision = 0
+        Size = 6
+      end    
+      item
+        Name = 'SQLStatement'
+        DataType = ftString
+        Precision = 0
+        Size = 4096
+      end    
+      item
+        Name = 'Reserved'
+        DataType = ftInteger
+        Precision = 0
+        Size = 0
+      end>
+    left = 183
+    top = 362
+  end
+end

+ 2331 - 0
main.lrs

@@ -0,0 +1,2331 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmMain','FORMDATA',[
+  'TPF0'#7'TfmMain'#6'fmMain'#4'Left'#3'N'#1#6'Height'#3#128#2#3'Top'#3#206#0#5
+  +'Width'#3#0#4#13'ActiveControl'#7#6'tvMain'#7'Caption'#6#28'TurboBird Admin '
+  +'for FireBird'#12'ClientHeight'#3'g'#2#11'ClientWidth'#3#0#4#5'Color'#7#6'cl'
+  +'Form'#4'Menu'#7#9'MainMenu1'#10'OnActivate'#7#12'FormActivate'#7'OnClose'#7
+  +#9'FormClose'#8'OnCreate'#7#10'FormCreate'#8'Position'#7#14'poScreenCenter'
+  +#10'LCLVersion'#6#6'0.9.31'#0#9'TTreeView'#6'tvMain'#4'Left'#2#0#6'Height'#3
+  +'g'#2#3'Top'#2#0#5'Width'#3'h'#1#5'Align'#7#6'alLeft'#15'BackgroundColor'#7#7
+  +'clWhite'#5'Color'#7#7'clWhite'#17'DefaultItemHeight'#2#19#13'HideSelection'
+  +#8#6'Images'#7#10'ImageList1'#6'Indent'#2#25#8'ReadOnly'#9#16'RightClickSele'
+  +'ct'#9#9'ShowLines'#8#8'TabOrder'#2#0#10'OnDblClick'#7#14'tvMainDblClick'#10
+  +'OnExpanded'#7#14'tvMainExpanded'#7'Options'#11#17'tvoAutoItemHeight'#21'tvo'
+  +'KeepCollapsedNodes'#11'tvoReadOnly'#19'tvoRightClickSelect'#14'tvoShowButto'
+  +'ns'#11'tvoShowRoot'#11'tvoToolTips'#0#15'ExpandSignColor'#7#8'clMaroon'#0#0
+  +#9'TSplitter'#9'Splitter1'#4'Left'#3'h'#1#6'Height'#3'g'#2#3'Top'#2#0#5'Widt'
+  +'h'#2#14#0#0#12'TPageControl'#12'PageControl1'#4'Left'#3'v'#1#6'Height'#3'g'
+  +#2#3'Top'#2#0#5'Width'#3#138#2#10'ActivePage'#7#9'TabSheet1'#5'Align'#7#8'al'
+  +'Client'#8'TabIndex'#2#0#8'TabOrder'#2#2#17'OnCloseTabClicked'#7#27'PageCont'
+  +'rol1CloseTabClicked'#7'Options'#11#20'nboHidePageListPopup'#0#0#9'TTabSheet'
+  +#9'TabSheet1'#7'Caption'#6#4'Main'#12'ClientHeight'#3'H'#2#11'ClientWidth'#3
+  +#134#2#0#7'TBitBtn'#13'bbCreateNewDB'#4'Left'#2#24#6'Height'#2']'#3'Top'#2#22
+  +#5'Width'#3#208#0#7'Caption'#6#19'Create new Database'#10'Glyph.Data'#10':'
+  +#16#0#0'6'#16#0#0'BM6'#16#0#0#0#0#0#0'6'#0#0#0'('#0#0#0' '#0#0#0' '#0#0#0#1#0
+  +' '#0#0#0#0#0#0#16#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#0#0#0#0#0#0#0#0#0#0#0#1#0#0#0#1#128
+  +#128#128#2#128#128#128#2#128#128#128#2'UUU'#3'@@@'#4'fff'#5'fff'#5'UUU'#6'UU'
+  +'U'#6'UUU'#6'fff'#5#128#128#128#4'UUU'#3#128#128#128#2#128#128#128#2#128#128
+  +#128#2#0#0#0#1#0#0#0#1#0#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#0#0#0
+  +#1#128#128#128#2'fff'#5'MMM'#10'[[['#14'ZZZ'#17'UUU'#18'YYY'#20'UUU'#24'RRR'
+  +#28'XXX'#29'UUU'#30'UUU'#30'UUU'#30'XXX'#29'XXX'#26'UUU'#21'QQQ'#19'ZZZ'#17
+  +'UUU'#15'UUU'#12'III'#7'UUU'#3#0#0#0#1#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#128
+  +#128#128#2'~~'#127#153'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'
+  +#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127
+  +#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'}}~'#255'}}'
+  +'~'#255'}}~'#255'__`'#255#135#135#135#236'@@@'#4#0#0#0#1#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0'UUU'#3#127#127#128#255#217#217#217#255#223#223#223#255#223#223#223#255
+  +#223#223#223#255#223#223#223#255#223#223#223#255#223#223#223#255#223#223#223
+  +#255#223#223#223#255#223#223#223#255#223#223#223#255#223#223#223#255#223#223
+  +#223#255#223#223#223#255#223#223#223#255#223#223#223#255#174#174#174#255#174
+  +#174#174#255'~'#127#128#255'EEE'#255#130#130#130#255'U[\'#163#0#0#0#1#255#255
+  +#255#0#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#128#128#2#129#129#130#255#206#206#206#255#203#203#203#255
+  +#203#203#203#255#203#203#203#255#203#203#203#255#203#203#203#255#203#203#203
+  +#255#203#203#203#255#203#203#203#255#203#203#203#255#203#203#203#255#203#203
+  +#203#255#203#203#203#255#203#203#203#255#203#203#203#255#203#203#203#255#164
+  +#164#164#255#164#164#164#255'c'#161#188#255#193#230#239#255#131#222#244#255
+  +'W'#168#196#189#0#0#0#1#255#255#255#0#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#0#1#130#130#131#255#207#207
+  +#207#255#204#204#204#255#204#204#204#255#204#204#204#255#204#204#204#255#204
+  +#204#204#255#204#204#204#255#204#204#204#255#204#204#204#255#204#204#204#255
+  +#204#204#204#255#204#204#204#255#204#204#204#255#204#204#204#255#204#204#204
+  +#255#204#204#204#255#164#164#165#255#164#165#166#255'i'#212#245#255#204#244
+  +#255#255#139#231#254#255'l'#212#245#255'{'#228#254#24#255#255#255#0#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#0#0#132#132#133#255#207#207#207#255#205#205#205#255#205#205#205#255#205
+  +#205#205#255#205#205#205#255#205#205#205#255#205#205#205#255#205#205#205#255
+  +#205#205#205#255#205#205#205#255#205#205#205#255#205#205#205#255#205#205#205
+  +#255#205#205#205#255#205#205#205#255#205#205#205#255#165#165#165#255's'#168
+  +#193#255'd'#203#243#255#205#245#255#255#139#231#254#255'r'#211#245#255'<'#174
+  +#227#152#255#255#255#0#255#255#255#0#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#135#255#208#208#208#255
+  +#206#206#206#255#206#206#206#255#206#206#206#255#206#206#206#255#206#206#206
+  ,#255#206#206#206#255#206#206#206#255#206#206#206#255#206#206#206#255#206#206
+  +#206#255#206#206#206#255#206#206#206#255#206#206#206#255#206#206#206#255#206
+  +#206#206#255#165#165#166#255'7'#157#211#255'^'#190#232#255#143#209#238#255'o'
+  +#202#237#255'h'#197#235#255'0'#160#217#255'2'#162#219#3#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#136#136#137#255#210#210#210#255#208#208#208#255#208#208#208#255#208#208#208
+  +#255#208#208#208#255#208#208#208#255#208#208#208#255#208#208#208#255#208#208
+  +#208#255#208#208#208#255#208#208#208#255#208#208#208#255#208#208#208#255#208
+  +#208#208#255#208#208#208#255#208#208#208#255#166#166#167#255' '#144#209#255
+  +'('#152#213#255'O'#168#218#255'"'#146#208#255'+'#150#210#255' '#144#209#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#138#138#139#255#211#211#211#255#209
+  +#209#209#255#209#209#209#255#209#209#209#255#209#209#209#255#209#209#209#255
+  +#209#209#209#255#209#209#209#255#209#209#209#255#209#209#209#255#209#209#209
+  +#255#209#209#209#255#209#209#209#255#209#209#209#255#209#209#209#255#209#209
+  +#209#255#167#167#167#255#30#141#209#255'{'#203#241#255#138#197#234#255'O'#172
+  +#221#255#179#219#241#255#30#141#209#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
+  +#140#140#141#255#213#213#213#255#211#211#211#255#210#210#210#255#210#210#210
+  +#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210
+  +#210#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210#210#255#210
+  +#210#210#255#210#210#210#255#210#210#210#255#167#167#168#255#27#139#210#255
+  +'S'#188#238#255#138#198#235#255'4'#162#219#255#190#225#243#255#27#139#210#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#142#142#143#255#214#214#214#255#212
+  +#212#212#255#211#211#211#255#210#210#210#255#210#210#210#255#210#210#210#255
+  +#210#210#210#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210#210
+  +#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210
+  +#210#255#167#167#168#255#25#136#210#255'Q'#189#240#255#137#200#237#255'A'#171
+  +#224#255#197#230#246#255#25#136#210#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
+  +#145#145#145#255#216#216#216#255#214#214#214#255#214#214#214#255#213#213#213
+  +#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210
+  +#210#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210#210#255#210
+  +#210#210#255#210#210#210#255#210#210#210#255#167#167#168#255#23#133#211#255
+  +'Q'#189#241#255#136#202#239#255'K'#179#229#255#202#232#248#255#23#133#211#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#147#147#147#255#218#218#218#255#216
+  +#216#216#255#216#216#216#255#216#216#216#255#215#215#215#255#212#212#212#255
+  +#211#211#211#255#211#211#211#255#211#211#211#255#211#211#211#255#211#211#211
+  +#255#211#211#211#255#211#211#211#255#211#211#211#255#211#211#211#255#211#211
+  +#211#255#168#168#168#255#20#131#211#255'P'#190#242#255#135#203#240#255'M'#183
+  +#232#255#203#234#248#255#20#131#211#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
+  +#149#149#150#255#226#226#226#255#225#225#226#255#225#226#225#255#225#226#225
+  +#255#225#225#225#255#225#225#225#255#224#224#224#255#223#223#223#255#222#222
+  +#222#255#222#222#222#255#222#222#222#255#222#222#222#255#222#222#222#255#222
+  +#222#222#255#222#222#222#255#222#222#222#255#173#173#174#255#18#128#212#255
+  +'P'#191#244#255#134#205#242#255'K'#185#235#255#203#235#249#255#18#128#212#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#151#151#152#255#228#228#228#255#227
+  +#227#227#255#227#227#227#255#227#227#227#255#227#227#227#255#227#227#227#255
+  +#227#227#227#255#227#227#227#255#226#226#226#255#226#226#226#255#225#225#225
+  +#255#223#223#223#255#223#223#223#255#222#223#222#255#223#223#223#255#223#223
+  +#223#255#174#173#174#255#15'}'#213#255'O'#192#245#255#133#206#244#255'H'#187
+  +#238#255#202#235#250#255#15'}'#213#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
+  +#154#154#154#255#230#230#230#255#229#229#229#255#229#229#229#255#229#229#229
+  +#255#229#229#229#255#229#229#229#255#229#229#229#255#229#229#229#255#229#229
+  +#229#255#229#229#229#255#229#229#229#255#229#229#229#255#229#229#229#255#227
+  +#227#227#255#226#226#226#255#225#225#225#255#174#174#175#255#13'z'#213#255'O'
+  +#193#247#255#132#207#246#255'F'#189#241#255#201#236#251#255#13'z'#213#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#156#156#156#255#232#232#232#255#230#231
+  ,#231#255#231#231#231#255#231#231#230#255#231#231#231#255#231#231#231#255#231
+  +#231#230#255#230#230#230#255#230#231#231#255#231#231#231#255#231#230#231#255
+  +#231#231#230#255#231#231#231#255#231#231#231#255#231#231#231#255#230#231#231
+  +#255#178#177#178#255#10'w'#214#255'O'#194#249#255#131#209#248#255'G'#192#244
+  +#255#201#236#252#255#10'w'#214#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#158
+  +#158#158#255#234#234#234#255#233#233#233#255#233#233#233#255#233#233#233#255
+  +#233#233#233#255#233#233#233#255#233#233#233#255#233#233#233#255#233#233#233
+  +#255#233#233#233#255#233#233#233#255#233#233#233#255#233#233#233#255#233#233
+  +#233#255#233#233#233#255#233#233#233#255#179#179#179#255#8'u'#214#255'T'#197
+  +#249#255#130#211#249#255'E'#194#246#255#200#237#252#255#8'u'#214#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#160#160#160#255#235#235#235#255#235#235#235#255
+  +#235#234#234#255#234#235#234#255#234#234#234#255#235#235#235#255#235#235#235
+  +#255#235#235#234#255#235#234#234#255#235#234#234#255#235#234#234#255#235#235
+  +#234#255#235#235#234#255#234#234#235#255#233#234#233#255#234#233#234#255#179
+  +#179#179#255#6'r'#215#255'['#201#251#255#129#211#250#255'>'#192#245#255#195
+  +#235#252#255#6'r'#215#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#162#162#162
+  +#255#237#237#237#255#236#237#237#255#237#237#237#255#237#237#236#255#237#236
+  +#237#255#237#237#237#255#236#237#236#255#237#236#237#255#237#237#237#255#236
+  +#237#237#255#237#237#237#255#237#237#237#255#237#237#237#255#237#237#237#255
+  +#234#234#234#255#220#220#220#255#169#169#169#255#4'i'#201#255#148#210#238#255
+  +#145#210#239#255'm'#191#224#255#199#236#250#255#4'p'#215#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#164#164#164#255#239#239#239#255#238#238#238#255#238
+  +#238#238#255#239#238#238#255#238#238#238#255#238#238#238#255#238#239#238#255
+  +#238#238#238#255#238#238#239#255#238#238#238#255#238#238#238#255#239#238#238
+  +#255#238#238#238#255#238#238#238#255#234#233#234#255#199#199#200#255#169#169
+  +#169#255#149#159#169#255#171#171#171#255#179#179#179#255#217#217#217#255#214
+  +#214#214#255'q'#157#201#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#166#166#166
+  +#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240
+  +#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240
+  +#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255
+  +#235#235#235#255#205#205#205#255#165#165#165#255#153#153#153#255#218#218#218
+  +#255#242#242#242#255#248#248#248#255#226#226#226#255#190#190#190#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#167#167#167#255#242#242#242#255#242#241#241#255
+  +#241#241#241#255#241#241#241#255#241#241#241#255#241#242#241#255#241#241#241
+  +#255#242#241#242#255#242#241#242#255#242#241#241#255#241#242#241#255#241#241
+  +#241#255#241#241#241#255#242#242#241#255#237#237#237#255#210#210#210#255#167
+  +#167#167#255#162#162#162#255#232#232#232#255#253#253#253#255#253#253#253#255
+  +#226#226#226#255#190#190#190#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#169
+  +#169#169#255#241#240#241#255#240#240#240#255#240#240#240#255#240#240#240#255
+  +#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240
+  +#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240
+  +#240#255#235#235#235#255#208#208#208#255#167#167#167#255#146#136#176#255#193
+  +#193#193#255#221#221#221#255#232#232#232#255#216#216#216#255#163#149#201#212
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#170#170#170#255#239#239#239#255#243
+  +#243#243#255#243#243#243#255#243#243#243#255#243#243#243#255#243#243#243#255
+  +#243#243#243#255#243#243#243#255#243#243#243#255#243#243#243#255#243#243#243
+  +#255#243#243#243#255#243#243#243#255#243#243#243#255#239#239#239#255#213#213
+  +#213#255#170#170#170#255'oC'#228#255#173#143#253#255#190#166#254#255#153's'
+  +#253#255#153's'#253#255'sE'#236#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#171
+  +#171#171#150#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255
+  +#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171
+  +#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171
+  +#171#255#170#170#170#255#167#167#167#255#167#167#167#255#131'W'#244#255#201
+  +#181#252#255#216#202#253#255#177#148#251#255#171#140#250#255#132'X'#247#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#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#144'f'#255
+  +#150#144'f'#255#255#144'f'#255#255#144'f'#255#255#144'f'#255#255#144'f'#255
+  +#150#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#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#15'mnCreateDBC'
+  +'lick'#8'TabOrder'#2#0#0#0#7'TBitBtn'#12'bbRegisterDB'#4'Left'#2#24#6'Height'
+  +#2']'#3'Top'#3#139#0#5'Width'#3#208#0#7'Caption'#6#17'Register Database'#10
+  +'Glyph.Data'#10':'#16#0#0'6'#16#0#0'BM6'#16#0#0#0#0#0#0'6'#0#0#0'('#0#0#0' '
+  +#0#0#0' '#0#0#0#1#0' '#0#0#0#0#0#0#16#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#0#0#0#0#0#0#0#0#0#0
+  +#0#1#0#0#0#1#128#128#128#2#128#128#128#2#128#128#128#2'UUU'#3'@@@'#4'fff'#5
+  +'fff'#5'UUU'#6'UUU'#6'UUU'#6'fff'#5#128#128#128#4'UUU'#3#128#128#128#2#128
+  +#128#128#2#128#128#128#2#0#0#0#1#0#0#0#1#0#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#0#0#0#1#128#128#128#2'fff'#5'MMM'#10'[[['#14'ZZZ'#17'UUU'#18'YYY'
+  +#20'UUU'#24'RRR'#28'XXX'#29'UUU'#30'UUU'#30'UUU'#30'XXX'#29'XXX'#26'UUU'#21
+  +'QQQ'#19'ZZZ'#17'UUU'#15'UUU'#12'III'#7'UUU'#3#0#0#0#1#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#128#128#128#2'~~'#127#153'~~'#127#255'~~'#127#255'~~'#127#255'~~'
+  +#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127
+  +#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255
+  +'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'}}~'#155'@@@'#4#0#0#0#1#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0'UUU'#3#127#127#128#255#217#217#217#255#223#223#223#255
+  +#223#223#223#255#223#223#223#255#223#223#223#255#223#223#223#255#223#223#223
+  +#255#223#223#223#255#223#223#223#255#223#223#223#255#223#223#223#255#223#223
+  +#223#255#223#223#223#255#223#223#223#255#223#223#223#255#223#223#223#255#223
+  +#223#223#255#223#223#223#255#223#223#223#255#217#217#217#255#127#127#128#255
+  +'UUU'#6#0#0#0#1#255#255#255#0#255#255#255#0#255#255#255#0#178#6#173#0#178#6
+  +#173#0#178#6#173#0#178#6#173#0#128#128#128#2#129#129#130#255#206#206#206#255
+  +#203#203#203#255#203#203#203#255#203#203#203#255#203#203#203#255#203#203#203
+  +#255#203#203#203#255#203#203#203#255#203#203#203#255#203#203#203#255#203#203
+  +#203#255#203#203#203#255#203#203#203#255#203#203#203#255#203#203#203#255#203
+  +#203#203#255#203#203#203#255#203#203#203#255#203#203#203#255#206#206#206#255
+  +#129#129#130#255'@@@'#4#0#0#0#1#255#255#255#0#255#255#255#0#255#255#255#0#178
+  +#6#173#0#178#6#173#0#178#6#173#0#178#6#173#0#0#0#0#1#130#130#131#255#207#207
+  +#207#255#204#204#204#255#204#204#204#255#204#204#204#255#204#204#204#255#204
+  +#204#204#255#204#204#204#255#204#204#204#255#204#204#204#255#204#204#204#255
+  +#204#204#204#255#204#204#204#255#204#204#204#255#204#204#204#255#204#204#204
+  ,#255#204#204#204#255#204#204#204#255#204#204#204#255#204#204#204#255#207#207
+  +#207#255#130#130#131#255#0#0#0#1#0#0#0#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#178#6#173#0#178#6#173#0#178#6#173#0#178#6#173#0#178#6#173#0#132#132
+  +#133#255#207#207#207#255#205#205#205#255#205#205#205#255#205#205#205#255#205
+  +#205#205#255#200#200#200#255#195#195#195#255#200#200#200#255#205#205#205#255
+  +#205#205#205#255#205#205#205#255#205#205#205#255#205#205#205#255#205#205#205
+  +#255#205#205#205#255#205#205#205#255#205#205#205#255#205#205#205#255#205#205
+  +#205#255#207#207#207#255#132#132#133#255#0#0#0#0#0#0#0#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#178#6#173#0#178#6#173#0#178#6#173#0#178#6#173#0#178
+  +#6#173#0#134#134#135#255#208#208#208#255#206#206#206#255#160#160#160#255#127
+  +#127#128#255#142'['#142#255#156'9'#154#255#138'H'#136#255'ppq'#255'||}'#255
+  +#127#127#128#255#127#127#128#255#127#127#128#255#127#127#128#255#127#127#128
+  +#255#127#127#128#255#127#127#128#255#127#127#128#255#160#160#160#255#206#206
+  +#206#255#208#208#208#255#134#134#135#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#253#255#0#136#136#137#255#210#210#210#255#208#208#208#255
+  +#130#130#131#255#228#228#228#255#197'o'#195#255#236'm'#233#255#191'O'#189#255
+  +#177'g'#175#255#191#191#192#255#212#212#213#255#217#217#218#255#217#217#218
+  +#255#217#217#218#255#217#217#218#255#217#217#218#255#217#217#218#255#228#228
+  +#228#255#130#130#131#255#208#208#208#255#210#210#210#255#136#136#137#255#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'}}~'#1'}}'
+  +'~'#4'}}~'#10'}}~'#16'}}~'#24#129#129#130#255#195#195#195#255#191#191#191#255
+  +'yyz'#255#210#210#210#255#192'j'#190#255#222'T'#218#255#223'Y'#219#255#183'9'
+  +#179#255#167'V'#164#255#172#172#173#255#191#191#191#255#196#196#196#255#196
+  +#196#196#255#196#196#196#255#196#196#196#255#207#207#207#255#232#232#232#255
+  +#133#133#134#255#209#209#209#255#211#211#211#255#138#138#139#255#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'}}~'#3'}}~'#10'}}'
+  +'~'#20#134'i'#134#30#144'R'#143''''#139'x'#140#255#203#171#202#255#202#156
+  +#201#255#151'\'#150#255#212#139#210#255#189'g'#187#255#211'C'#207#255#204'8'
+  +#199#255#226'c'#222#255#143#16#169#255'\'#25#146#255#6'0'#135#255#8'8'#149
+  +#255#11'<'#156#255#18'C'#160#255'#U'#171#255#201#201#201#255#237#237#237#255
+  +#137#137#138#255#210#210#210#255#212#212#212#255#140#140#141#255#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#231'W'#227#21#231
+  +'V'#226'4'#229'U'#226'X'#227'S'#223#132#228'S'#224#174#206'T'#203#255#213'I'
+  +#209#255#211'<'#207#255#212'?'#208#255#214'D'#210#255#211'@'#208#255#196'.'
+  +#192#255#194','#188#255#206'B'#201#255#227'h'#223#255#157#19#178#255'l'''#168
+  +#255#30'['#187#255'#f'#207#255'+m'#213#255'=z'#217#255#201#201#201#255#237
+  +#237#237#255#141#141#142#255#210#210#210#255#212#212#212#255#142#142#143#255
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#230'U'
+  +#226#21#229'U'#225'4'#229'T'#225'X'#227'R'#223#132#213'<'#209#174#191'='#187
+  +#255#195'+'#190#255#191#26#187#255#193#29#188#255#195'#'#191#255#197''''#193
+  +#255#197'*'#193#255#199'3'#193#255#205'?'#199#255#214'O'#209#255#230'q'#227
+  +#255#169#18#178#255'~6'#175#255'J'#142#214#255'X'#158#231#255'>'#138#225#255
+  +#215#215#215#255#242#242#242#255#146#146#146#255#210#210#210#255#212#212#212
+  +#255#145#145#145#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#230'U'#226#21#229'U'#225'4'#229'T'#225'X'#227'R'#223#132#213
+  +'<'#209#174#192'='#188#255#195'+'#190#255#191#26#187#255#193#29#188#255#195
+  +'#'#191#255#197''''#193#255#199','#195#255#206';'#202#255#208'D'#202#255#213
+  +'M'#207#255#219'Y'#214#255#236'}'#231#255#176#12#175#255'p'#173#224#255'n'
+  +#180#239#255'\'#167#235#255#215#215#215#255#242#242#242#255#150#150#151#255
+  +#211#211#211#255#213#213#213#255#147#147#147#255#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#230'U'#226#21#229'U'#225'4'#229'T'
+  +#225'X'#228'T'#224#135#215'A'#211#179#197'E'#193#255#203'7'#198#255#201','
+  +#198#255#206'3'#201#255#210'='#206#255#214'E'#210#255#218'N'#214#255#224']'
+  +#221#255#227'h'#223#255#231'r'#227#255#235'}'#232#255#245#153#241#255#176#13
+  +#176#255'f'#183#239#255'\'#182#243#255'P'#172#240#255#215#215#215#255#242#242
+  +#242#255#155#155#155#255#222#222#222#255#221#221#221#255#149#149#150#255#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#230'U'#226
+  +#21#229'U'#225'4'#229'T'#225'X'#228'T'#224#135#215'A'#211#179#197'F'#193#255
+  +#203'8'#198#255#201','#198#255#206'3'#201#255#210'='#206#255#214'E'#210#255
+  +#216'L'#213#255#220'W'#215#255#226'd'#221#255#232's'#228#255#242#144#239#255
+  +#174#22#179#255#152'Z'#204#255't'#203#250#255'i'#199#249#255'P'#188#248#255
+  +#215#215#215#255#242#242#242#255#159#159#159#255#223#223#223#255#221#221#221
+  +#255#151#151#152#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  ,#255#255#255#0#231'W'#227#21#231'V'#226'4'#229'U'#226'X'#228'U'#224#135#229
+  +'W'#224#179#212']'#209#255#219'T'#215#255#218'K'#214#255#221'R'#217#255#224
+  +'Z'#221#255#224'Z'#221#255#216'O'#212#255#217'Q'#212#255#226'f'#222#255#239
+  +#135#236#255#174'$'#184#255#164'd'#206#255#149#215#251#255#149#215#251#255
+  +#143#213#251#255'z'#205#250#255#215#215#215#255#242#242#242#255#163#163#163
+  +#255#224#223#224#255#222#221#222#255#154#154#154#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#178#6#173#5#178#6#173#14#158#139#158#255#222#190#221#255#216
+  +#170#215#255#170'o'#168#255#217#144#215#255#202't'#200#255#226'a'#222#255#223
+  +'['#219#255#238#129#235#255#186'1'#182#255#196'm'#193#255#218#218#218#255#218
+  +#218#218#255#218#218#218#255#218#218#218#255#218#218#218#255#218#218#218#255
+  +#243#243#243#255#166#166#166#255#228#228#228#255#224#224#224#255#155#155#155
+  +#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#213'd'#203#0#213'd'#203#0#158#158
+  +#158#255#234#234#234#255#233#233#233#255#169#169#169#255#253#253#253#255#214
+  +#128#212#255#233'o'#230#255#235'v'#232#255#198'H'#194#255#214#134#212#255#251
+  +#251#251#255#251#251#251#255#251#251#251#255#251#251#251#255#251#251#251#255
+  +#251#251#251#255#250#250#250#255#252#252#252#255#169#169#169#255#233#233#233
+  +#255#232#232#232#255#158#158#158#255#171#171#171#0#171#171#171#0#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#253#255#0#160#160#160#255#235#235#235#255#235#235#235#255#197
+  +#197#197#255#171#171#171#255#175'X'#172#255#236'm'#233#255#176'?'#172#255#172
+  +'c'#170#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255
+  +#171#171#171#255#171#171#171#255#171#171#171#255#170#170#170#255#170#170#170
+  +#255#197#197#197#255#235#235#235#255#232#232#232#255#158#158#158#255#171#171
+  +#171#4#171#171#171#0#255#255#255#0#255#255#255#0#255#255#255#0#178#6#173#0
+  +#178#6#173#0#178#6#173#0#178#6#173#0#178#6#173#0#162#162#162#255#237#237#237
+  +#255#236#237#237#255#237#237#237#255#237#237#236#255#219#168#218#255#203'h'
+  +#200#255#214#148#212#255#237#236#237#255#237#237#237#255#236#237#237#255#237
+  +#237#237#255#237#237#237#255#237#237#237#255#237#237#237#255#234#234#234#255
+  +#220#220#220#255#218#218#218#255#221#221#221#255#223#223#223#255#222#222#222
+  +#255#160#160#160#255#171#171#171#9#171#171#171#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#178#6#173#0#178#6#173#0#178#6#173#0#178#6#173#0#178#6#173#0
+  +#164#164#164#255#239#239#239#255#238#238#238#255#238#238#238#255#239#238#238
+  +#255#238#238#238#255#238#238#238#255#238#239#238#255#238#238#238#255#238#238
+  +#239#255#238#238#238#255#238#238#238#255#239#238#238#255#238#238#238#255#238
+  +#238#238#255#234#233#234#255#199#199#200#255#174#174#174#255#180#180#180#255
+  +#183#183#183#255#183#183#183#255#157#157#157#255#171#171#171#7#171#171#171#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#178#6#173#0#178#6#173#0#178#6#173
+  +#0#178#6#173#0#178#6#173#0#166#166#166#255#240#240#240#255#240#240#240#255
+  +#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240
+  +#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240
+  +#240#255#240#240#240#255#240#240#240#255#235#235#235#255#205#205#205#255#182
+  +#182#182#255#215#216#216#255#225#225#225#255#196#196#196#255#163#163#163#156
+  +#171#171#171#1#171#171#171#0#255#255#255#0#255#255#255#0#255#255#255#0#178#6
+  +#173#0#178#6#173#0#178#6#173#0#178#6#173#0#178#6#173#0#167#167#167#255#242
+  +#242#242#255#242#241#241#255#241#241#241#255#241#241#241#255#241#241#241#255
+  +#241#242#241#255#241#241#241#255#242#241#242#255#242#241#242#255#242#241#241
+  +#255#241#242#241#255#241#241#241#255#241#241#241#255#242#242#241#255#237#237
+  +#237#255#210#210#210#255#184#184#184#255#226#226#226#255#222#222#222#255#169
+  +#169#169#255#167#167#167'-'#171#171#171#0#171#171#171#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#169#169#169#255#241#240#241#255#240#240#240#255#240#240#240
+  +#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240
+  +#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240
+  +#240#240#255#240#240#240#255#235#235#235#255#208#208#208#255#185#185#185#255
+  +#220#220#220#255#178#178#178#255#169#169#169'c'#171#171#171#0#171#171#171#0
+  +#171#171#171#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#170#170#170#255#239#239
+  +#239#255#243#243#243#255#243#243#243#255#243#243#243#255#243#243#243#255#243
+  +#243#243#255#243#243#243#255#243#243#243#255#243#243#243#255#243#243#243#255
+  +#243#243#243#255#243#243#243#255#243#243#243#255#243#243#243#255#239#239#239
+  +#255#213#213#213#255#197#197#197#255#183#183#183#255#170#170#170#132#171#171
+  +#171#0#171#171#171#0#171#171#171#0#171#171#171#0#255#255#255#0#255#255#255#0
+  ,#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#171#171#150#171#171#171#255#171#171#171#255#171#171#171#255
+  +#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171
+  +#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171
+  +#171#255#171#171#171#255#170#170#170#255#167#167#167#255#167#167#167#255#169
+  +#169#169#153#171#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0#171#171
+  +#171#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#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#12'mnRegDBClic'
+  +'k'#8'TabOrder'#2#1#0#0#7'TBitBtn'#11'bbRestoreDB'#4'Left'#2#24#6'Height'#2
+  +']'#3'Top'#3#3#1#5'Width'#3#208#0#7'Caption'#6#16'Restore Database'#10'Glyph'
+  +'.Data'#10':'#16#0#0'6'#16#0#0'BM6'#16#0#0#0#0#0#0'6'#0#0#0'('#0#0#0' '#0#0#0
+  +' '#0#0#0#1#0' '#0#0#0#0#0#0#16#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'}}~'#0'}}~'#0'}}~'#0#0#0#0#1#0#0#0#1#128
+  +#128#128#2#128#128#128#2#128#128#128#2'UUU'#3'@@@'#4'fff'#5'VVV'#7'EEE'#11'>'
+  +'>>'#16'==='#17'BBB'#15'TTT'#9'FFF'#5#128#128#128#2#128#128#128#2'XXX'#4'***'
+  +#6'---'#11'222'#11'222'#10'222'#5'222'#2#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0'}}~'#0#0#0#0#1#128#128#128#2'fff'#5'MMM'
+  +#10'[[['#14'ZZZ'#17'UUU'#18'YYY'#20'UUU'#24'RRR'#28'SSS!HHH*AAA8???;BBB7III'
+  +'''MMM'#26'QQQ'#19'ZZZ'#17'KKK'#20'AAA'#25'555#444$000'#30'222'#14'222'#5#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'~~'#127#0
+  +#128#128#128#2'mmm'#7'UUU'#18'UUU!WWW/WWW8YYY<cccRsss'#144'zz{'#202'wwx'#221
+  +'NNN'#251'555'#255'555'#255'555'#255'BBB'#217'VVWbOOOHOOODKKKE777'#179'555'
+  +#255'555'#255'555'#255'555'#162'222'#10#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#127#127#128#0'UUU'#3']]]'#11'XXX'#29'WWW5'
+  +'XXXKgghvwwx'#189#135#135#136#255#164#162#164#255#193#187#191#255#194#188#193
+  +#255'999'#255'NNO'#255'IIJ'#255'IIJ'#255'999'#255'sqs'#255'dde'#201'SST'#144
+  +'CCCt999'#255'IIJ'#255'IIJ'#255'NNO'#255'999'#255'222'#13#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#129#129#129#0#128#128
+  +#128#2'mmm'#7'UUU'#18'UUU!{{{'#157#135#135#135#255#180#179#180#255#212#209
+  +#211#255#209#205#208#255#202#196#200#255#188#180#184#255'==>'#255'eee'#255'L'
+  +'LL'#255'UUU'#255'==>'#255'==>'#255'==>'#255'==>'#255'==>'#255'==>'#255'UUU'
+  +#255'LLL'#255'eee'#255'==>'#255'222'#14#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#130#130#131#0#0#0#0#1#128#128#128#2'fff'#5
+  +#129#129#130#151#153#153#154#255#207#206#207#255#205#202#204#255#196#194#196
+  +#255#192#190#193#255#190#186#191#255#181#175#179#255'CCC'#255'rrr'#255'\\\'
+  ,#255'eef'#255'QQR'#255'LLM'#255'LLM'#255'LLM'#255'LLM'#255'QQR'#255'eef'#255
+  +'\\\'#255'rrr'#255'CCC'#255'222'#14#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#132#132#133#0#132#132#133#0#132#132#133#0#132
+  +#132#133#147#163#162#163#255#208#206#208#255#199#199#200#255#192#192#194#255
+  +#192#191#194#255#191#191#194#255#189#190#194#255#181#178#182#255'HHI'#255'ss'
+  +'t'#255#151#151#151#255']]]'#255#171#171#171#255#171#171#171#255#171#171#171
+  +#255#171#171#171#255#171#171#171#255#171#171#171#255']]]'#255#151#151#151#255
+  +'sst'#255'HHI'#255'222'#14#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#133#133#134#0#133#133#134#0#133#133#134#135#155#154#155
+  +#255#209#207#208#255#201#199#201#255#195#194#196#255#193#193#196#255#192#193
+  +#196#255#190#193#196#255#190#191#196#255#181#181#185#255'NNO'#255'vvw'#255
+  +#211#211#211#255'eef'#255#171#171#171#255'`'#26'h'#255'`'#26'h'#255'`'#26'h'
+  +#255'`'#26'h'#255#171#171#171#255'eef'#255#211#211#211#255'vvw'#255'NNO'#255
+  +'222'#14#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+  +#0#135#135#136#0#135#135#136'-'#142#142#143#255#206#204#205#255#205#202#204
+  +#255#197#196#198#255#195#195#198#255#193#195#198#255#191#194#198#255#189#194
+  +#198#255#189#194#199#255#179#183#188#255'TTU'#255'yyy'#255'vvv'#255'iii'#255
+  +#201#201#201#255#178#6#173#255#178#6#173#255#178#6#173#255#178#6#173#255#201
+  +#201#201#255'iii'#255'vvv'#255'yyy'#255'TTU'#255'222'#14#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#137#137#138#0#137#137
+  +#138#150#181#179#180#255#209#206#208#255#201#198#201#255#199#197#201#255#196
+  +#197#200#255#193#196#200#255#191#196#200#255#190#196#200#255#188#195#201#255
+  +#180#185#193#255'[[['#255#138#138#138#255#162#162#162#255#127#127#128#255#192
+  +#192#192#255#176'8'#172#255#176'8'#172#255#176'8'#172#255#176'8'#172#255#192
+  +#192#192#255#127#127#128#255#162#162#162#255'|||'#255'[[['#255'222'#14#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#139#139
+  +#140#27#147#146#147#255#211#207#209#255#208#203#206#255#203#200#203#255#200
+  +#199#203#255#197#199#203#255#194#198#202#255#192#198#202#255#191#200#206#255
+  +#197#206#214#255#196#205#213#255'aaa'#255#143#142#142#255#203#203#203#255#132
+  +#132#132#255#208#208#207#255#202'|'#195#255#203'|'#195#255#203'|'#195#255#202
+  +'|'#195#255#207#207#208#255#132#132#132#255#203#203#203#255#127#127#127#255
+  +'aaa'#255'222'#14#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#141#141#142'x'#174#173#174#255#212#207#210#255#206#202#205#255#204
+  +#201#205#255#201#201#205#255#197#200#205#255#194#200#204#255#194#202#208#255
+  +#199#210#216#255#188#199#205#255#163#166#170#255'ggg'#255#146#146#147#255#145
+  +#145#146#255#137#137#138#255#211#211#211#255#206#127#199#255#206#127#199#255
+  +#206#127#199#255#206#127#199#255#211#211#211#255#137#137#138#255#145#145#146
+  +#255#128#128#129#255'ggg'#255'222'#14#255#255#255#0#255#255#255#0#255#255#255
+  +#0#255#255#255#0#255#255#255#0#144#144#144#186#194#191#193#255#212#207#210
+  +#255#208#204#207#255#205#203#207#255#202#203#207#255#198#202#207#255#195#201
+  +#206#255#197#207#213#255#186#195#200#255#155#156#158#255#131#131#131'nllm'
+  +#255#152#152#153#255#175#175#176#255#145#145#146#255#215#214#214#255#215#214
+  +#214#255#214#214#215#255#215#215#215#255#214#214#214#255#214#215#215#255#145
+  +#145#146#255#175#175#176#255#131#131#132#255'llm'#255'222'#14#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#146#146#146#228#207
+  +#204#206#255#213#209#211#255#209#207#210#255#207#206#210#255#204#206#210#255
+  +#200#205#209#255#196#204#209#255#199#208#215#255#168#171#174#255#146#146#146
+  +'f222'#13'rrr'#255#157#157#158#255#216#216#216#255#169#169#170#255#172#172
+  +#173#255#174#174#175#255#175#175#176#255#175#175#176#255#174#174#175#255#172
+  +#172#173#255#169#169#170#255#216#216#216#255#133#133#134#255'rrr'#255'222'#13
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#148
+  +#148#149#249#213#211#212#255#213#210#212#255#211#210#212#255#209#209#212#255
+  +#205#208#212#255#202#208#212#255#199#207#212#255#196#206#213#255#154#155#156
+  +#255#148#148#149#28'222'#10'vvw'#255#170#171#171#255#166#166#166#255#174#174
+  +#175#255'vvw'#255'vvw'#255'vvw'#255'vvw'#255'vvw'#255#150#150#151#255#175#175
+  +#175#255#165#165#166#255#147#147#148#255'vvw'#255'222'#10#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#150#150#151#249#214#212
+  +#213#255#229#228#228#255#228#227#228#255#226#226#228#255#224#226#228#255#222
+  +#226#228#255#220#225#228#255#220#226#231#255#191#191#192#255#237#237#237'k'
+  +#243#245#245']zz{'#255#179#179#180#255#182#182#182#255#180#180#181#255'zz{'
+  +#255#215#222#227#255#218#224#228#255#219#225#228#255#219#222#224#255#155#155
+  +#156#255#180#180#181#255#182#182#182#255#156#156#157#255'zz{'#255'222'#5#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#152#152
+  +#153#228#210#208#209#255#230#229#229#255#229#228#229#255#227#228#229#255#225
+  ,#228#229#255#223#227#229#255#221#226#230#255#223#228#233#255#203#205#207#255
+  +#211#211#211#155#249#251#251'['#149#149#150#188'}}~'#255'}}~'#255'}}~'#255
+  +#155#156#158#255#219#227#231#255#219#226#230#255#221#226#230#255#223#226#229
+  +#255#165#166#167#255'}}~'#255'}}~'#255'}}~'#255#135#135#136#244'222'#2#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#155#155
+  +#155#189#201#200#201#255#229#229#229#255#230#230#230#255#229#229#230#255#227
+  +#229#230#255#225#228#230#255#224#228#231#255#225#230#234#255#217#222#226#255
+  +#196#196#198#255#211#212#212#157#236#237#237'm'#238#238#238'k'#212#212#212
+  +#155#196#196#198#255#214#221#224#255#221#229#233#255#221#228#230#255#224#228
+  +#231#255#226#228#231#255#228#229#231#255#230#229#231#255#233#232#233#255#207
+  +#205#206#255#155#155#155#189'222'#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#157#157#157'x'#187#187#187#255#230#229#230#255
+  +#232#232#232#255#231#232#232#255#230#231#232#255#228#230#232#255#226#230#233
+  +#255#226#230#234#255#229#234#237#255#220#224#229#255#207#208#210#255#195#196
+  +#196#255#196#196#197#255#207#209#211#255#217#224#228#255#224#233#236#255#223
+  +#230#233#255#224#230#232#255#226#230#232#255#228#230#233#255#230#231#233#255
+  +#232#232#233#255#235#234#235#255#189#188#188#255#157#157#157'x222'#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#159#159#159'!'
+  +#168#168#168#255#227#226#227#255#235#235#235#255#234#233#234#255#232#232#234
+  +#255#230#232#234#255#229#232#234#255#229#232#234#255#230#232#236#255#232#233
+  +#238#255#232#232#238#255#231#235#240#255#230#237#242#255#229#235#239#255#225
+  +#233#237#255#225#232#234#255#225#231#234#255#227#232#234#255#228#232#234#255
+  +#231#232#234#255#232#232#234#255#236#235#235#255#233#231#232#255#168#168#168
+  +#255#159#159#159'!'#159#159#159#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#161#161#161#0#161#161#161#159#203#202#203#255
+  +#237#236#237#255#235#234#235#255#234#234#235#255#233#234#235#255#232#234#235
+  +#255#232#233#235#255#233#233#237#255#234#230#235#255#231#228#233#255#229#229
+  +#234#255#228#232#236#255#227#232#235#255#227#232#235#255#227#232#235#255#228
+  +#233#235#255#230#233#235#255#232#234#235#255#233#234#235#255#234#234#235#255
+  +#239#238#239#255#207#207#207#255#161#161#161#159#161#161#161#0#161#161#161#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#163
+  +#163#163#0#163#163#163'6'#170#170#170#255#232#230#231#255#239#238#239#255#236
+  +#235#236#255#236#235#236#255#235#235#236#255#235#235#237#255#236#234#237#255
+  +#235#230#235#255#233#228#233#255#232#231#234#255#231#234#237#255#230#234#236
+  +#255#230#234#236#255#230#234#236#255#231#234#235#255#232#235#235#255#234#235
+  +#236#255#235#235#236#255#239#238#239#255#236#235#235#255#170#170#170#255#163
+  +#163#163'6'#163#163#163#0#163#163#163#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#164#164#164#0#164#164#164#0#164#164#164
+  +#138#186#185#186#255#241#239#239#255#241#239#239#255#239#237#237#255#239#237
+  +#238#255#239#236#238#255#239#235#238#255#238#230#234#255#234#230#232#255#233
+  +#230#233#255#234#235#237#255#234#235#237#255#234#235#237#255#234#236#237#255
+  +#234#236#237#255#235#236#237#255#236#237#237#255#239#239#239#255#241#241#241
+  +#255#189#188#188#255#164#164#164#138#255#255#255#0#164#164#164#0#164#164#164
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#166
+  +#166#166#0#166#166#166#0#255#255#255#0#166#166#166#150#199#197#197#255#244
+  +#241#241#255#243#240#241#255#242#237#239#255#242#237#239#255#241#235#237#255
+  +#239#230#232#255#237#230#232#255#235#231#234#255#236#235#237#255#235#237#238
+  +#255#236#237#237#255#236#237#237#255#237#237#237#255#237#237#237#255#241#240
+  +#240#255#243#243#243#255#202#202#202#255#166#166#166#150#255#255#255#0#255
+  +#255#255#0#166#166#166#0#166#166#166#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#167#167#168#0#167#167#168#0#255#255#255#0
+  +#167#167#168#6#167#167#168#150#191#189#190#255#242#240#242#255#246#243#244
+  +#255#245#239#241#255#243#234#235#255#241#231#233#255#239#231#233#255#237#231
+  +#232#255#239#237#238#255#239#239#239#255#239#239#239#255#239#239#239#255#241
+  +#240#240#255#243#243#243#255#242#241#241#255#193#192#193#255#167#167#168#150
+  +#167#167#168#6#255#255#255#0#255#255#255#0#167#167#168#0#167#167#168#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#169#169
+  +#169#0#169#169#169#0#255#255#255#0#255#255#255#0#255#255#255#0#169#169#169
+  +#138#177#177#177#255#218#215#216#255#248#243#243#255#249#242#243#255#245#237
+  +#239#255#243#234#235#255#241#234#235#255#241#237#238#255#243#241#242#255#244
+  +#243#243#255#246#244#244#255#245#244#244#255#218#218#218#255#177#177#177#255
+  +#169#169#169#138#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#169
+  +#169#169#0#169#169#169#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#170#170#170#0#170#170#170#0#255#255#255#0#255#255#255#0
+  ,#255#255#255#0#255#255#255#0#170#170#170'3'#170#170#170#156#178#178#178#255
+  +#203#201#202#255#228#224#225#255#234#230#231#255#247#242#243#255#247#244#245
+  +#255#234#233#234#255#227#226#226#255#202#201#201#255#178#178#178#255#170#170
+  +#170#156#170#170#170'3'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+  +#0#255#255#255#0#170#170#170#0#170#170#170#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#171#171#171#0#171#171#171#0#171#171
+  +#171#0#171#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0
+  +#171#171#171#27#171#171#171'l'#171#171#171#183#171#171#171#204#171#171#171
+  +#252#171#171#171#252#171#171#171#204#171#171#171#183#171#171#171'l'#171#171
+  +#171#27#171#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0
+  +#171#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#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#14'mnRestoreClick'#8'TabOrder'#2#2#0#0#0#0#9'TMainMe'
+  +'nu'#9'MainMenu1'#4'left'#2'?'#3'top'#2'q'#0#9'TMenuItem'#9'MenuItem1'#7'Cap'
+  +'tion'#6#5'&File'#0#9'TMenuItem'#10'mnCreateDB'#7'Caption'#6#19'Create new D'
+  +'atabase'#7'OnClick'#7#15'mnCreateDBClick'#0#0#9'TMenuItem'#7'mnRegDB'#7'Cap'
+  +'tion'#6#17'Register Database'#7'OnClick'#7#12'mnRegDBClick'#0#0#9'TMenuItem'
+  +#9'mnRestore'#7'Caption'#6#16'Restore Database'#7'OnClick'#7#14'mnRestoreCli'
+  +'ck'#0#0#9'TMenuItem'#6'mnExit'#7'Caption'#6#4'Exit'#7'OnClick'#7#11'mnExitC'
+  +'lick'#0#0#0#9'TMenuItem'#9'MenuItem5'#7'Caption'#6#4'Help'#0#9'TMenuItem'#9
+  +'MenuItem6'#7'Caption'#6#5'About'#7'OnClick'#7#14'MenuItem6Click'#0#0#0#0#10
+  +'TImageList'#10'ImageList1'#4'left'#3#180#0#3'top'#2'R'#6'Bitmap'#10#14't'#0
+  +#0'Li'#29#0#0#0#16#0#0#0#16#0#0#0#255#255#254#0#255#253#252#255#255#254#255
+  +#255#252#251#255#255#251#251#255#255#253#252#255#255#243#241#253#255#253#251
+  +#255#255#253#251#255#255#243#242#252#255#253#252#255#255#251#251#255#255#252
+  +#251#255#255#255#255#255#255#255#253#253#255#255#255#254#0#244#242#241#255
+  +#255#255#255#255#249#248#250#255#255#254#255#255#253#252#255#255#253#252#255
+  +#255#250#248#255#255#250#248#255#255#250#248#255#255#250#248#255#255#253#252
+  +#255#255#253#253#255#255#255#254#255#255#249#248#250#255#255#255#255#255#244
+  +#242#241#255#255#255#255#255#252#252#252#255#255#254#255#255#251#250#254#255
+  +#246#245#254#255'JIS'#255'@@L'#255'GGU'#255'GGU'#255'@@L'#255'JIS'#255#246
+  +#245#254#255#251#249#255#255#255#254#255#255#252#252#252#255#255#255#255#255
+  +#255#254#255#255#255#254#255#255#250#249#253#255#249#249#255#255'CBL'#255'??'
+  +'K'#255#161#161#175#255#144#144#158#255#144#143#159#255#161#161#175#255'A?K'
+  +#255'CBL'#255#251#249#255#255#250#249#253#255#255#254#255#255#255#255#255#255
+  +#250#251#255#255#253#254#255#255#246#246#252#255'GFO'#255'IGS'#255#159#159
+  +#173#255#156#155#171#255#157#157#173#255#157#157#175#255#155#155#171#255#159
+  +#159#173#255'GGS'#255'GFO'#255#246#246#252#255#253#254#255#255#250#252#253
+  +#255#252#253#255#255#253#253#255#255#253#252#255#255'DEO'#255'EES'#255'..>'
+  +#255#151#151#169#255#154#154#172#255#154#154#172#255#151#151#169#255'/.>'#255
+  +'EEQ'#255'FEO'#255#253#252#255#255#253#253#255#255#252#253#255#255#248#248
+  ,#254#255#253#253#255#255#244#246#254#255'EFP'#255#165#165#179#255'MM]'#255'K'
+  +'K]'#255'78L'#255'78L'#255'IK]'#255'MM]'#255#164#165#179#255'EEQ'#255#244#246
+  +#254#255#253#253#255#255#248#248#254#255#253#253#255#255#252#252#255#255#251
+  +#252#255#255'??K'#255#183#184#198#255#177#177#193#255#171#172#192#255#181#182
+  +#202#255#181#182#202#255#171#173#191#255#177#177#195#255#183#184#198#255'??K'
+  +#255#251#253#255#255#252#251#255#255#253#253#255#255#253#253#255#255#248#248
+  +#254#255#251#252#255#255'FFR'#255#176#177#191#255#184#184#200#255#167#168#188
+  +#255#179#180#200#255#179#180#200#255#167#169#187#255#184#184#202#255#176#177
+  +#191#255'FFR'#255#251#253#255#255#248#247#255#255#253#253#255#255#246#246#252
+  +#255#253#253#255#255#243#245#253#255'EFP'#255#177#177#191#255#170#170#186#255
+  +#193#193#211#255#180#181#201#255#180#181#201#255#191#193#211#255#170#170#186
+  +#255#176#177#191#255'EEQ'#255#243#245#253#255#253#253#255#255#246#246#252#255
+  +#253#254#255#255#244#244#250#255#253#252#255#255'LMW'#255#181#181#195#255#185
+  +#185#201#255#175#175#193#255#172#172#190#255#172#172#190#255#175#175#193#255
+  +#186#185#201#255#181#181#193#255'NMW'#255#253#252#255#255#244#244#250#255#253
+  +#254#255#255#243#244#248#255#253#254#255#255#253#253#255#255'54='#255#190#188
+  +#200#255#172#172#186#255#171#170#186#255#185#185#201#255#185#185#203#255#170
+  +#170#186#255#172#172#186#255#188#188#200#255'54='#255#253#253#255#255#253#254
+  +#255#255#243#245#246#255#254#253#255#255#255#254#255#255#255#254#255#255'KKQ'
+  +#255'76@'#255#168#168#180#255#155#155#169#255#151#151#165#255#151#150#166#255
+  +#155#155#169#255#170#168#180#255'76@'#255'MKQ'#255#255#254#255#255#255#254
+  +#255#255#254#254#254#255#255#255#255#255#253#253#253#255#246#245#247#255#254
+  +#253#255#255'@?H'#255'?>H'#255'BBN'#255'CCQ'#255'CCQ'#255'BBN'#255'?>H'#255
+  +'@?H'#255#254#252#255#255#246#245#247#255#253#253#253#255#255#255#255#255#253
+  +#251#250#255#254#252#252#255#255#254#255#255#254#253#255#255#253#252#255#255
+  +#253#252#255#255#251#249#255#255#250#248#255#255#250#248#255#255#251#249#255
+  +#255#253#252#255#255#253#253#255#255#254#253#255#255#255#254#255#255#254#252
+  +#252#255#253#251#250#255#255#255#254#0#253#251#250#255#255#254#255#255#255
+  +#254#255#255#250#250#255#255#253#252#255#255#251#249#255#255#253#251#255#255
+  +#253#251#255#255#251#250#255#255#253#252#255#255#250#250#255#255#255#254#255
+  +#255#255#255#255#255#253#251#251#255#255#255#254#0#249#252#243#255#255#255
+  +#252#0#247#249#250#255#252#253#255#255#251#254#255#255#247#252#250#255#251
+  +#255#248#255#251#255#245#255#247#255#241#255#251#255#248#255#249#254#252#255
+  +#243#247#248#255#253#253#255#255#253#255#255#255#248#249#245#255#255#255#249
+  +#255#255#255#249#255#255#255#252#0#252#254#255#255#251#252#255#255#251#254
+  +#255#255#247#252#250#255#251#255#248#255#247#255#241#255#251#255#245#255#251
+  +#255#248#255#251#255#254#255#251#255#255#255#253#253#255#255#253#255#255#255
+  +#255#255#252#0#253#255#247#255#255#255#249#255#254#255#251#255#252#254#255
+  +#255#249#250#254#255#251#254#255#255#244#249#247#255#251#255#248#255#251#255
+  +#245#255#247#255#241#255#251#255#248#255#238#243#241#255#247#251#252#255#253
+  +#253#255#255#245#247#248#255#255#255#252#0#255#255#249#255#253#255#247#255
+  +#249#250#246#255#253#255#255#255#248#249#253#255#246#249#253#255#251#255#254
+  +#255#250#255#247#255'isc'#255'oyi'#255'[cX'#255#251#255#254#255#251#255#255
+  +#255#240#240#246#255#252#254#255#255#251#252#248#255#255#255#249#255#252#254
+  +#248#255#255#255#252#0#253#255#255#255#251#252#255#255#251#254#255#255#246
+  +#251#249#255#244#253#240#255'r|k'#255'kud'#255'`i\'#255#248#253#251#255#251
+  +#255#255#255#253#253#255#255#253#255#255#255#253#254#250#255#248#250#244#255
+  +#254#255#250#255#252#253#249#255#253#254#255#255#253#254#255#255#242#246#247
+  +#255#251#255#252#255#251#255#247#255'kud'#255'r|k'#255'W`S'#255#250#255#253
+  +#255#251#255#255#255#246#247#251#255#248#250#251#255#255#255#254#255#253#255
+  +#249#255#254#255#250#255#255#255#252#0#250#251#255#255#253#254#255#255#251
+  +#255#255#255#250#255#251#255#251#255#247#255#243#254#234#255#251#255#242#255
+  +#248#255#242#255#251#255#252#255#249#253#254#255#253#254#255#255#247#249#250
+  +#255#255#255#254#255#249#251#245#255#255#255#251#255#255#255#252#0#253#254
+  +#255#255#247#248#252#255#251#255#255#255#251#255#251#255#241#251#235#255#251
+  +#255#242#255#248#255#239#255#251#255#245#255#251#255#252#255#246#250#251#255
+  +#253#254#255#255#253#255#255#255#247#248#246#255#255#255#251#255#253#255#249
+  +#255#255#255#252#0#253#254#255#255#249#250#254#255#251#255#255#255#244#251
+  +#244#255#250#255#244#255#251#255#241#255#245#255#235#255#251#255#244#255#250
+  +#255#250#255#247#252#251#255#253#254#255#255#250#252#253#255#251#252#250#255
+  +#255#255#251#255#255#255#251#255#247#248#246#255#253#254#255#255#252#253#255
+  +#255#251#255#255#255#248#255#248#255#251#255#244#255'kwa'#255'myc'#255'_iX'
+  +#255#245#252#245#255#248#253#252#255#253#254#255#255#253#254#255#255#255#255
+  +#254#255#250#252#246#255#254#255#251#255#255#255#254#255#253#254#255#255#253
+  ,#254#255#255#247#252#251#255#251#255#251#255#251#255#244#255'o|d'#255'r'#127
+  +'g'#255'R\K'#255#248#255#248#255#251#255#255#255#236#237#241#255#253#254#255
+  +#255#250#251#249#255#255#255#252#0#255#255#252#0#238#239#237#255#253#254#255
+  +#255#245#246#250#255#251#255#255#255#251#255#249#255#242#253#233#255'w'#132
+  +'l'#255'o|d'#255'alX'#255#251#255#249#255#251#255#255#255#253#254#255#255#251
+  +#252#255#255#252#253#251#255#252#253#249#255#250#251#247#255#255#255#254#255
+  +#253#254#255#255#249#250#254#255#251#255#254#255#249#255#247#255#248#255#239
+  +#255#251#255#238#255'jw]'#255'ZeQ'#255#236#244#234#255#251#255#254#255#252
+  +#253#255#255#253#254#255#255#250#251#249#255#255#255#252#0#255#255#252#0#255
+  +#255#254#255#242#243#247#255#253#254#255#255#251#255#254#255#251#255#248#255
+  +#236#247#227#255's'#128'f'#255'XeK'#255#251#255#241#255#251#255#249#255#251
+  +#255#254#255#253#254#255#255#249#250#254#255#255#255#254#255#252#253#249#255
+  +#252#253#249#255#242#243#241#255#253#254#255#255#253#254#255#255#248#253#251
+  +#255'jrg'#255'|'#135's'#255'VcI'#255#251#255#238#255#232#244#222#255#251#255
+  +#249#255#238#243#241#255#250#251#255#255#253#254#255#255#255#255#254#255#255
+  +#255#252#0#255#255#252#0#255#255#254#255#245#246#250#255#253#254#255#255#243
+  +#248#246#255#251#255#248#255#251#255#242#255#251#255#238#255#242#255#229#255
+  +#251#255#241#255#251#255#249#255#251#255#254#255#253#254#255#255#253#254#255
+  +#255#254#255#253#255#251#252#248#255#240#247#255#255#253#255#255#0#255#255
+  +#242#255#255#255#242#255#255#255#249#255#251#244#241#255#255#255#252#255#255
+  +#255#252#255#255#255#252#255#255#255#252#255#255#255#252#255#255#251#244#255
+  +#255#255#242#255#255#255#245#255#251#253#254#255#246#253#255#255#248#254#255
+  +#255#250#250#250#255#255#248#234#255#255#255#241#255#255#255#248#255#255#255
+  +#251#255#255#255#251#255#255#245#241#255#255#251#247#255#255#252#248#255#255
+  +#255#251#255#255#251#243#255#255#255#241#255#255#255#244#255#245#245#245#255
+  +#248#254#255#255#245#249#254#255#255#255#254#255'~o_'#255'veR'#255'ui]'#255
+  +'}rj'#255'gZR'#255#132'wo'#255'}ph'#255'sf^'#255'~sk'#255'~rf'#255'xgT'#255
+  +'vgW'#255#255#255#254#255#250#254#255#255#244#246#247#255#255#253#248#255#128
+  +'o\'#255#255#255#237#255#255#255#242#255#255#255#245#255#255#255#245#255#255
+  +#250#238#255#255#255#244#255#255#255#245#255#255#249#237#255#255#255#242#255
+  +#255#255#237#255'|mZ'#255#255#255#251#255#241#243#244#255#255#255#255#255#255
+  +#255#249#255#133'r]'#255#255#255#235#255#164#146#129#255#150#134'y'#255#178
+  +#162#146#255#160#144#128#255#255#255#240#255#173#157#141#255#168#152#139#255
+  +#165#147#130#255#255#255#235#255#136'u`'#255#255#253#246#255#255#255#255#255
+  +#254#252#251#255#255#249#240#255#134'q['#255#255#247#221#255#255#255#240#255
+  +#255#255#241#255#255#254#237#255#255#255#241#255#255#255#241#255#255#255#238
+  +#255#255#255#242#255#255#250#232#255#255#255#234#255'~iS'#255#255#255#248#255
+  +#254#252#251#255#255#255#254#255#255#255#248#255'{fP'#255#255#255#234#255#168
+  +#149#128#255#173#155#138#255#164#144#127#255#255#255#240#255#167#147#129#255
+  +#169#152#133#255#255#255#241#255#171#152#131#255#255#255#233#255#131'nX'#255
+  +#255#248#239#255#255#255#254#255#255#255#255#255#255#249#242#255#130'oZ'#255
+  +#255#255#234#255#255#254#236#255#255#255#241#255#255#255#241#255#255#255#237
+  +#255#255#255#240#255#255#255#241#255#255#255#240#255#255#255#238#255#255#255
+  +#234#255#129'nY'#255#255#255#249#255#249#249#249#255#253#255#255#0#252#248
+  +#243#255#132's`'#255#255#255#235#255#162#144#127#255#255#255#242#255#164#146
+  +#129#255#255#255#241#255#171#153#136#255#170#152#135#255#168#152#136#255#167
+  +#149#132#255#255#255#235#255'}n['#255#255#255#251#255#253#255#255#0#250#253
+  +#255#255#255#255#252#255'seS'#255#255#255#237#255#255#255#242#255#255#250#237
+  +#255#255#255#241#255#255#255#241#255#255#249#232#255#255#255#242#255#255#255
+  +#244#255#255#254#238#255#255#255#237#255'vhV'#255#255#254#250#255#250#255#255
+  +#255#249#252#255#255#253#251#250#255'zk['#255#255#255#238#255#153#137'y'#255
+  +#255#255#244#255#165#149#133#255#166#147#132#255#173#154#139#255#255#255#242
+  +#255#158#142#129#255#172#157#141#255#255#255#235#255'sdT'#255#255#255#254#255
+  +#241#247#252#255#248#254#255#255#252#250#249#255#128'qa'#255#255#255#238#255
+  +#255#255#242#255#255#255#244#255#255#251#236#255#255#255#240#255#255#249#234
+  +#255#255#255#242#255#255#255#244#255#255#255#240#255#255#255#238#255#130'sc'
+  +#255#255#253#252#255#248#254#255#255#242#246#251#255#255#255#254#255'{m['#255
+  +#255#255#237#255#165#147#130#255#255#255#242#255#167#147#130#255#255#255#240
+  +#255#184#161#145#255#164#144#127#255#255#255#241#255#169#151#134#255#255#253
+  +#231#255'zlZ'#255#251#249#248#255#250#254#255#255#251#254#255#255#255#253#249
+  +#255#130's`'#255#255#255#230#255#255#255#240#255#255#255#238#255#255#255#240
+  +#255#255#252#231#255#255#250#230#255#255#253#235#255#255#255#241#255#255#255
+  +#239#255#255#255#235#255'|mZ'#255#255#255#252#255#250#255#255#255#245#246#250
+  +#255#255#255#251#255'xgR'#255#134'qV'#255'}hS'#255#136'tb'#255#141'v`'#255
+  ,#129'jT'#255#138'r\'#255#141'v`'#255'yeS'#255'~kV'#255#141'v\'#255#128'oZ'
+  +#255#253#249#244#255#249#253#254#255#253#255#255#0#255#252#244#255#255#255
+  +#238#255#255#255#233#255#255#255#238#255#255#254#233#255#255#255#237#255#255
+  +#255#235#255#255#255#232#255#255#255#237#255#255#255#238#255#255#255#233#255
+  +#255#255#234#255#255#255#237#255#255#255#251#255#253#255#255#0#247#251#246
+  +#255#253#255#254#255#250#250#250#255#255#255#255#255#255#254#255#255#249#243
+  +#244#255#255#253#255#255#249#239#245#255#249#239#245#255#255#253#255#255#249
+  +#243#244#255#255#255#254#255#255#254#255#255#250#250#250#255#253#255#254#255
+  +#247#251#246#255#250#252#252#255#251#253#253#255#252#254#254#255#251#253#253
+  +#255#252#253#251#255#255#255#254#255#249#250#248#255#255#255#254#255#255#255
+  +#254#255#249#250#248#255#255#255#254#255#252#253#251#255#251#253#253#255#252
+  +#254#254#255#251#253#253#255#250#252#252#255#251#254#255#255#251#254#255#255
+  +#247#254#251#255#248#255#252#255#246#255#254#255#13#28#20#255#8#26#13#255#0
+  +#18#1#255#0#18#1#255#8#27#12#255#13#27#21#255#246#255#254#255#248#255#252#255
+  +#247#254#251#255#251#254#255#255#251#254#255#255#252#246#255#255#253#253#255
+  +#255#250#255#254#255#243#255#248#255#0#22#7#255#164#196#172#255#152#191#159
+  +#255#171#214#177#255#171#214#177#255#152#191#159#255#166#195#172#255#0#22#7
+  +#255#243#255#248#255#250#255#254#255#255#253#255#255#252#246#255#255#255#249
+  +#255#255#255#244#254#255#255#254#255#255#11#28#15#255#171#207#171#255#153#204
+  +#154#255#164#225#169#255#134#202#143#255#134#202#143#255#162#225#169#255#153
+  +#204#154#255#171#207#171#255#11#28#15#255#253#254#255#255#255#244#254#255#255
+  +#249#255#255#255#250#255#255#255#250#255#255#21#23#23#255#7#24#11#255#168#203
+  +#169#255#153#202#156#255#154#212#158#255#145#210#154#255#147#210#154#255#152
+  +#212#158#255#155#202#156#255#168#203#169#255#7#24#11#255#21#23#23#255#255#250
+  +#255#255#255#250#255#255#240#247#250#255#248#255#255#255#18' '#21#255'x'#138
+  +'}'#255#0#19#7#255#175#200#186#255#168#197#174#255#166#199#172#255#168#199
+  +#172#255#168#197#174#255#175#200#186#255#0#19#7#255'x'#138'}'#255#18' '#21
+  +#255#248#255#255#255#240#247#250#255#246#255#254#255#239#254#246#255#8#25#11
+  +#255'|'#143'~'#255#131#154#140#255#0#21#5#255#8'%'#12#255#0#29#0#255#0#29#0
+  +#255#8'%'#12#255#0#21#5#255#131#154#140#255'|'#143'~'#255#8#25#11#255#239#254
+  +#246#255#246#255#254#255#254#255#247#255#253#255#248#255#5#18#4#255'q'#138'p'
+  +#255#127#166'y'#255'l'#159'f'#255'e'#159'd'#255'd'#160'd'#255'd'#160'd'#255
+  +'e'#159'd'#255'l'#159'f'#255#127#166'y'#255'q'#138'p'#255#5#18#4#255#253#255
+  +#248#255#254#255#247#255#252#254#242#255#247#254#239#255#25')'#23#255'~'#157
+  +'|'#255'`'#147'Z'#255'p'#175'i'#255'['#164'['#255'Z'#168'['#255'Z'#168'['#255
+  +'['#164'['#255'p'#175'i'#255'`'#147'Z'#255'~'#157'|'#255#25'*'#21#255#247#254
+  +#239#255#250#254#242#255#248#255#248#255#239#255#239#255#0#28#0#255' J!'#255
+  +'d'#155'j'#255']'#159'd'#255'Y'#165'^'#255'U'#167'Z'#255'U'#167'Z'#255'Y'#165
+  +'^'#255']'#159'd'#255'd'#155'j'#255' J!'#255#0#28#0#255#239#255#240#255#246
+  +#255#248#255#248#255#251#255#244#255#247#255#1' '#1#255#31'K"'#255'!X)'#255
+  +'W'#155'b'#255'X'#169'`'#255'U'#172'\'#255'U'#172'\'#255'X'#169'`'#255'W'#155
+  +'b'#255'!X)'#255#31'K"'#255#1' '#1#255#244#255#247#255#248#255#251#255#255
+  +#251#250#255#244#248#242#255#246#255#245#255#0'!'#0#255#24'N'#25#255#14'V'#16
+  +#255#8']'#13#255#9'd'#15#255#9'd'#15#255#8']'#13#255#14'V'#16#255#24'N'#25
+  +#255#0'!'#0#255#244#255#245#255#246#248#242#255#255#251#250#255#255#252#255
+  +#255#255#254#255#255#237#244#237#255#243#255#242#255#0' '#0#255' W '#255#28
+  +'_!'#255#7'P'#12#255#7'O'#13#255#28'_!'#255' W '#255#0' '#0#255#243#255#242
+  +#255#237#244#237#255#255#254#255#255#255#252#255#255#255#251#255#0#251#247
+  +#253#255#253#255#255#255#250#255#252#255#246#255#248#255#4#26#8#255#3#29#6
+  +#255#3' '#6#255#3' '#7#255#3#29#6#255#4#26#8#255#246#255#248#255#250#255#252
+  +#255#253#255#255#255#251#247#253#255#255#251#255#0#255#251#255#0#255#252#255
+  +#255#253#252#255#255#252#254#255#255#246#247#251#255#251#255#255#255#248#255
+  +#252#255#250#255#252#255#250#255#252#255#248#255#252#255#251#255#255#255#244
+  +#247#251#255#254#253#255#255#253#252#255#255#255#252#255#255#255#251#255#0
+  +#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#254#255#255#255#254#255#255#255#255#255#255#255#255#255#255#255
+  +#255#255#255#255#255#255#255#255#255#255#255#255#254#254#255#255#251#252#255
+  +#255#251#251#255#255#251#252#255#255#252#252#255#255#252#252#255#255#252#252
+  +#255#255#252#252#255#255#252#252#255#255#251#254#255#255#251#252#255#255#251
+  +#251#255#255#251#252#255#255#254#254#255#255#255#255#255#255#255#255#255#255
+  +#251#252#255'~$$'#255#142'  '#255'~$$'#255'u%$'#255'u%&'#255'u%&'#255'u%$'
+  +#255'u%$'#255'u%&'#255'}##'#255#143'!!'#255'~$$'#255#255#251#252#255#255#255
+  +#255#255#255#255#255#255#255#251#251#255#142'  '#255#255#239#240#255#255#242
+  ,#242#255#255#244#244#255#255#244#244#255#255#244#244#255#255#244#244#255#255
+  +#244#244#255#255#244#244#255#255#242#242#255#255#239#240#255#143'!!'#255#255
+  +#251#251#255#255#255#255#255#255#255#255#255#255#252#251#255'~$$'#255#255#242
+  +#242#255#245#149#149#255#236#150#150#255#236#150#150#255#236#150#150#255#236
+  +#150#150#255#236#150#150#255#235#149#149#255#243#150#149#255#255#242#242#255
+  +'~$#'#255#255#251#252#255#255#255#255#255#255#255#255#255#255#252#252#255'w%'
+  +'$'#255#255#244#244#255#231#151#150#255#220#153#152#255#218#153#152#255#218
+  +#153#152#255#220#153#152#255#219#152#151#255#218#153#152#255#226#152#150#255
+  +#255#244#244#255'u%$'#255#255#252#252#255#255#255#255#255#255#255#255#255#255
+  +#252#252#255'w$&'#255#255#244#245#255#217#153#152#255#201#155#154#255#195#157
+  +#155#255#255#251#249#255#202#156#155#255#201#155#154#255#255#251#249#255#206
+  +#155#153#255#255#246#244#255'u&#'#255#255#253#251#255#255#255#254#255#255#255
+  +#255#255#255#252#252#255'v#%'#255#255#244#245#255#255#248#248#255#255#251#249
+  +#255#255#251#251#255#255#251#251#255#255#250#249#255#255#250#249#255#255#251
+  +#249#255#255#250#248#255#255#246#244#255'u&#'#255#255#253#251#255#255#255#254
+  +#255#255#255#255#255#255#252#252#255'w$&'#255#255#244#245#255#220#153#152#255
+  +#255#249#248#255#206#154#154#255#255#249#248#255#218#153#152#255#220#153#152
+  +#255#218#153#152#255#227#152#150#255#255#244#244#255'u%$'#255#255#253#251#255
+  +#255#255#254#255#255#255#255#255#255#252#252#255'w$&'#255#255#244#245#255#217
+  +#153#152#255#204#156#152#255#206#156#150#255#209#154#149#255#213#155#150#255
+  +#217#154#150#255#218#154#149#255#229#153#147#255#255#245#242#255'u%$'#255#255
+  +#253#251#255#255#255#254#255#255#255#255#255#255#252#252#255'w$&'#255#255#246
+  +#244#255#190#144#137#255#255#255#244#255#178#149#134#255#179#148#133#255#175
+  +#147#136#255#255#255#244#255#182#147#133#255#198#145#132#255#255#247#241#255
+  +'t$#'#255#255#253#251#255#255#255#255#255#255#255#255#255#255#252#252#255'w$'
+  +'&'#255#255#246#244#255#255#253#245#255#255#255#244#255#255#255#241#255#255
+  +#255#240#255#255#255#242#255#255#255#242#255#255#255#240#255#255#255#240#255
+  +#255#247#241#255'u%$'#255#255#252#252#255#255#255#255#255#255#254#255#255#255
+  +#251#254#255'w$&'#255#255#246#244#255#181#145#137#255#255#255#245#255#163#150
+  +#136#255#255#255#242#255#168#151#132#255#168#151#132#255#255#255#242#255#185
+  +#146#137#255#255#247#242#255'u%$'#255#255#252#252#255#255#255#255#255#255#254
+  +#255#255#255#251#254#255'u%&'#255#255#245#244#255#255#251#244#255#255#253#245
+  +#255#255#253#245#255#255#253#244#255#255#255#240#255#255#255#240#255#255#253
+  +#244#255#255#250#245#255#255#245#244#255'u%$'#255#255#252#252#255#255#255#255
+  +#255#253#255#255#0#255#252#252#255'u%&'#255#136'"#'#255'~$#'#255'x%#'#255'x%'
+  +'#'#255'z&!'#255'z& '#255'z&!'#255'z%#'#255'~$#'#255#135'#!'#255'u%$'#255#255
+  +#253#251#255#255#255#254#255#253#255#255#0#255#252#252#255#255#246#247#255
+  +#255#242#244#255#255#243#242#255#255#243#242#255#255#243#242#255#255#243#242
+  +#255#255#243#242#255#255#242#241#255#255#242#244#255#255#242#244#255#255#243
+  +#242#255#255#246#245#255#255#253#251#255#255#255#254#255#255#254#255#255#255
+  +#255#254#255#253#255#246#255#251#254#245#255#252#247#255#255#255#251#255#255
+  +#255#254#255#255#253#255#254#255#249#252#250#255#255#254#255#255#248#242#253
+  +#255#255#253#255#255#252#254#248#255#251#255#244#255#255#255#254#255#255#254
+  +#255#255#253#252#254#255#251#252#250#255#255#255#249#255#255#255#251#255#255
+  +#253#255#255#242#239#248#255#255#255#255#255#244#245#241#255#255#255#254#255
+  +#255#255#255#255#255#252#255#255#244#242#248#255#255#255#251#255#245#251#240
+  +#255#255#255#254#255#242#241#243#255#250#255#255#255#250#255#254#255#248#252
+  +#246#255#253#255#251#255#242#244#245#255#253#255#255#255#255#254#253#255#255
+  +#255#251#255#255#255#252#255#237#238#236#255#251#253#254#255#253#255#255#255
+  +#250#254#248#255#253#255#249#255#238#243#241#255#250#255#255#255#250#255#255
+  +#255#243#248#246#255#255#255#252#255#244#245#241#255#248#255#252#255#246#255
+  +#252#255#237#245#238#255#248#255#246#255#253#255#249#255#250#255#251#255#246
+  +#255#252#255#246#255#250#255#252#253#249#255#247#246#242#255#251#255#254#255
+  +#247#253#252#255#250#248#247#255#255#255#254#255#255#254#255#255#255#255#252
+  +#255#238#255#248#255#205#234#218#255#131#156#142#255'^ug'#255'RfY'#255'r'#139
+  +'}'#255#175#204#188#255#238#255#248#255#255#255#252#255#255#254#255#255#251
+  +#247#246#255#255#253#252#255#255#255#254#255#248#246#246#255#255#253#255#255
+  +#255#255#254#255#208#236#217#255'V~e'#255#166#196#177#255#228#254#236#255#236
+  +#255#244#255#200#230#211#255'|'#164#139#255#233#255#244#255#255#255#254#255
+  +#255#253#255#255#255#253#253#255#253#255#254#255#236#251#247#255#248#255#255
+  +#255#255#252#255#255#247#250#248#255#132#164#140#255#164#204#176#255#239#255
+  +#242#255#246#255#244#255#246#255#244#255#233#255#236#255#225#255#237#255#232
+  +#255#242#255#255#255#254#255#255#252#255#255#244#252#251#255#238#255#251#255
+  +#243#255#254#255#242#250#249#255#255#252#255#255#255#255#254#255'Ty_'#255#209
+  ,#254#221#255#237#255#241#255#237#255#236#255#240#255#239#255#237#255#240#255
+  +#222#255#234#255#230#255#241#255#244#245#243#255#255#252#255#255#248#255#255
+  +#255#241#255#254#255#250#251#249#255#255#254#255#255#255#251#255#255#253#251
+  +#250#255'MtZ'#255#214#255#231#255#225#255#240#255#229#255#240#255'KpV'#255'B'
+  +'nQ'#255'F|Y'#255#223#255#236#255#255#254#253#255#255#247#255#255#255#254#255
+  +#255#250#253#251#255#255#255#254#255#255#253#254#255#255#249#255#255#255#255
+  +#254#255'Pw^'#255#204#255#221#255#227#255#240#255#223#255#236#255#228#255#239
+  +#255#227#255#240#255'>qO'#255#228#255#241#255#255#255#254#255#255#247#253#255
+  +#255#254#255#255#254#255#253#255#248#255#255#255#251#255#255#255#253#248#250
+  +#255#253#255#252#255'}'#156#135#255#180#218#190#255#234#255#238#255#241#255
+  +#242#255#243#255#242#255#237#255#241#255'CiM'#255#232#255#242#255#253#255#254
+  +#255#255#254#255#255#242#247#246#255#245#255#254#255#248#255#255#255#250#255
+  +#255#255#255#254#254#255#251#255#252#255#219#242#227#255'Xt`'#255#186#206#187
+  +#255#222#241#220#255#244#255#244#255#195#217#198#255'Ws_'#255#237#255#245#255
+  +#253#255#252#255#245#243#243#255#249#255#254#255#248#255#255#255#255#252#255
+  +#255#255#252#253#255#255#255#252#255#252#255#250#255#229#246#235#255#210#235
+  +#221#255'u'#141'{'#255'f'#127'k'#255'Zr`'#255'r'#140'z'#255#199#224#210#255
+  +#243#255#249#255#244#246#240#255#255#255#252#255#255#251#252#255#250#247#249
+  +#255#255#253#255#255#255#250#251#255#252#249#244#255#255#255#249#255#246#255
+  +#252#255#240#255#249#255#241#255#248#255#234#255#240#255#239#255#245#255#239
+  +#255#246#255#236#252#245#255#246#255#252#255#255#255#249#255#253#250#245#255
+  +#255#253#255#255#255#253#255#255#255#250#255#255#255#255#255#255#253#255#247
+  +#255#253#255#249#255#241#246#245#255#246#252#251#255#248#255#249#255#239#254
+  +#240#255#246#255#247#255#248#255#249#255#250#255#255#255#246#251#250#255#253
+  +#255#249#255#255#255#249#255#251#248#250#255#255#252#255#255#254#250#255#0
+  +#255#255#255#255#253#255#249#255#251#255#249#255#255#254#255#255#250#252#253
+  +#255#248#255#248#255#250#255#247#255#246#255#243#255#249#255#247#255#253#254
+  +#255#255#250#252#253#255#253#255#249#255#248#254#243#255#255#254#255#255#255
+  +#253#255#255#251#255#255#255#253#255#254#255#252#255#245#255#255#255#249#255
+  +#253#250#255#255#249#245#255#255#255#254#255#255#255#255#254#255#255#252#251
+  +#255#255#254#255#255#255#251#255#255#252#251#255#255#255#255#252#255#253#255
+  +#249#255#253#255#255#255#250#253#255#255#249#251#252#255#252#255#253#255#251
+  +#254#245#255#241#243#237#255#253#254#255#255#255#253#255#255#252#250#250#255
+  +#255#255#251#255#255#255#252#255#255#255#255#255#255#252#255#255#249#248#255
+  +#255#255#255#252#255#252#254#248#255#253#255#255#255#252#252#255#255#255#255
+  +#255#255#255#255#254#255#253#255#251#255#251#255#251#255#246#248#248#255#253
+  +#255#255#255#251#255#252#255#248#255#248#255#251#255#251#255#235#241#236#255
+  +#253#255#255#255#253#255#255#255#236#242#237#255#253#255#252#255#237#236#238
+  +#255#255#254#255#255#255#254#254#255#247#248#246#255#244#251#244#255#253#255
+  +#251#255#255#255#250#255#255#255#251#255#252#250#240#255#255#255#248#255#255
+  +#255#248#255#255#255#249#255#255#255#252#255#255#254#251#255#245#249#244#255
+  +#244#249#247#255#255#254#255#255#251#248#250#255#255#255#254#255#253#255#252
+  +#255#251#255#252#255#252#249#244#255#255#255#247#255#231#205#193#255#134'nb'
+  +#255'yfY'#255't^S'#255'}g\'#255#195#166#157#255#255#253#247#255#255#255#252
+  +#255#251#255#255#255#246#248#248#255#255#255#255#255#254#253#249#255#244#245
+  +#241#255#247#254#251#255#255#255#251#255#229#206#191#255#129'cR'#255#183#158
+  +#142#255#255#242#225#255#255#247#232#255#224#198#184#255#146'sd'#255#255#253
+  +#241#255#254#253#249#255#249#254#255#255#248#248#248#255#255#255#255#255#255
+  +#254#249#255#255#255#252#255#246#255#255#255#243#250#243#255#138'|i'#255#172
+  +#155#129#255#255#255#238#255#255#255#239#255#255#255#240#255#255#255#238#255
+  +#255#249#226#255#255#255#241#255#251#255#252#255#246#255#255#255#255#255#255
+  +#255#255#248#248#255#255#255#251#255#253#252#248#255#246#255#255#255#248#255
+  +#248#255'veP'#255#255#243#215#255#255#253#229#255#255#255#238#255#255#255#234
+  +#255#255#255#237#255#255#255#234#255#255#255#239#255#251#255#252#255#237#249
+  +#251#255#255#255#255#255#255#254#254#255#255#252#249#255#255#255#254#255#245
+  +#253#253#255#253#250#245#255#136'iT'#255#255#255#231#255#255#255#232#255#255
+  +#255#237#255#138'kV'#255#132'bK'#255#143'fM'#255#255#254#235#255#255#255#252
+  +#255#243#250#253#255#255#255#255#255#255#252#251#255#255#252#248#255#255#255
+  +#254#255#250#255#255#255#255#255#251#255'vXE'#255#255#223#198#255#255#255#235
+  +#255#255#255#235#255#255#248#227#255#255#255#236#255#146'iR'#255#255#252#235
+  +#255#254#249#246#255#250#255#255#255#255#255#255#255#255#254#253#255#255#255
+  +#254#255#255#255#254#255#248#255#255#255#248#251#242#255#140'|k'#255#180#159
+  +#137#255#255#255#234#255#255#255#238#255#255#255#238#255#255#255#238#255'oZE'
+  +#255#255#255#242#255#255#255#252#255#246#254#254#255#252#249#251#255#255#254
+  ,#255#255#255#253#254#255#234#235#233#255#248#255#250#255#255#255#249#255#214
+  +#203#189#255'ugU'#255#174#167#147#255#248#245#224#255#255#254#233#255#190#183
+  +#164#255'sdT'#255#255#249#237#255#254#255#251#255#250#255#255#255#255#254#255
+  +#255#255#253#255#255#255#254#255#255#255#255#255#255#249#253#247#255#255#255
+  +#249#255#255#248#241#255#210#187#179#255#137'te'#255'tbQ'#255'zfU'#255'zdX'
+  +#255#202#179#171#255#255#254#249#255#255#255#251#255#253#255#254#255#254#253
+  +#255#255#248#246#252#255#248#249#253#255#251#253#253#255#252#253#244#255#255
+  +#254#247#255#255#254#252#255#255#253#251#255#255#249#238#255#255#255#244#255
+  +#255#255#244#255#255#250#242#255#255#253#252#255#255#253#254#255#255#249#244
+  +#255#255#255#252#255#253#254#255#255#251#250#255#255#248#251#255#255#253#255
+  +#255#255#255#255#249#255#250#248#240#255#255#251#252#255#255#249#251#255#255
+  +#255#248#255#255#253#241#255#255#255#243#255#255#255#249#255#255#252#255#255
+  +#255#250#253#255#255#255#251#255#254#254#248#255#252#253#255#255#251#252#255
+  +#255#249#252#255#0#253#255#255#255#242#243#234#255#255#255#249#255#255#254
+  +#255#255#255#253#255#255#255#251#244#255#255#255#245#255#255#255#247#255#255
+  +#254#249#255#255#253#255#255#253#249#254#255#255#255#251#255#254#254#248#255
+  +#253#254#255#255#249#250#255#255#245#254#255#255#246#255#255#255#244#252#252
+  +#255#248#255#255#255#251#255#255#255#247#252#250#255#253#255#252#255#252#255
+  +#251#255#253#255#254#255#250#253#251#255#251#255#255#255#248#252#253#255#250
+  +#255#255#255#250#254#255#255#244#250#255#255#248#254#255#255#250#255#255#255
+  +#247#252#253#255#245#249#250#255#251#255#255#255#253#255#254#255#249#250#248
+  +#255#252#253#249#255#255#255#252#255#255#255#254#255#245#246#244#255#253#255
+  +#255#255#249#251#251#255#253#254#255#255#239#242#246#255#251#254#255#255#248
+  +#252#255#255#255#254#255#255#255#254#255#255#255#254#255#255#255#255#254#255
+  +#255#255#254#255#255#255#254#255#255#255#254#255#255#255#254#255#255#255#254
+  +#255#255#255#254#255#249#245#244#255#255#255#255#255#255#255#255#255#255#254
+  +#255#255#252#248#253#255#255#254#255#255#255#251#253#255#255#254#254#255#255
+  +#254#254#255#255#250#250#255#255#250#250#255#255#255#254#255#255#255#254#255
+  +#255#253#252#255#255#255#254#255#255#255#254#255#255#255#254#255#255#255#254
+  +#255#239#235#234#255#255#251#252#255#255#254#255#255#248#243#244#255'F::'#255
+  +'?33'#255':00'#255'C;;'#255'A;<'#255'311'#255'444'#255'9;;'#255#252#254#254
+  +#255#251#253#253#255#244#247#245#255#253#254#252#255#255#255#254#255#255#255
+  +#252#255#255#254#250#255#255#255#252#255'C75'#255#255#251#248#255#255#254#254
+  +#255'B79'#255'B79'#255#255#254#255#255#255#249#252#255'=78'#255#253#248#250
+  +#255#255#254#255#255#255#255#255#255#252#250#249#255#255#254#250#255#255#255
+  +#252#255#248#250#244#255#255#255#251#255#234#229#228#255#255#255#254#255#252
+  +#241#243#255'E79'#255'K5:'#255#255#239#244#255#255#249#255#255#252#224#230
+  +#255'N3<'#255'D-2'#255'M<?'#255#191#181#181#255'KHD'#255#252#255#251#255#250
+  +#255#251#255#246#255#249#255#255#254#255#255#255#253#254#255#255#253#255#255
+  +'E6:'#255'K5:'#255#255#249#255#255#255#248#255#255#255#249#255#255#255#249
+  +#255#255'Q7='#255'C/4'#255#188#175#177#255#226#222#221#255#253#255#252#255
+  +#242#252#246#255#246#255#251#255#255#253#255#255#255#251#254#255#255#253#255
+  +#255'A37'#255'?15'#255#255#252#255#255#255#252#255#255#255#247#251#255#255
+  +#253#255#255';25'#255'F?B'#255#249#244#245#255#250#250#250#255#253#255#254
+  +#255#251#255#254#255#251#255#252#255#255#245#249#255#255#252#255#255#255#253
+  +#255#255'M@B'#255'>35'#255#255#254#255#255#255#254#255#255#255#255#254#255
+  +#255#255#255#255'311'#255'866'#255#255#255#255#255#255#255#255#255#255#255
+  +#255#255#251#249#249#255#251#249#249#255#255#251#255#255#255#245#249#255#255
+  +#253#254#255'?0.'#255'L@>'#255#255#249#244#255#255#253#248#255#255#255#249
+  +#255#251#251#245#255'JJD'#255'=:6'#255#255#255#252#255#255#251#252#255#255
+  +#252#254#255#255#249#252#255#255#252#255#255#255#241#243#255#255#253#252#255
+  +'>+('#255'S@;'#255'K:1'#255'L<0'#255#255#255#245#255#255#255#244#255'E5('#255
+  +'F8,'#255'E5.'#255'F82'#255#255#254#252#255#255#251#253#255#255#252#255#255
+  +#255#242#248#255#255#255#251#255#255#255#249#255#255#252#243#255#183#161#149
+  +#255#184#153#138#255#203#164#149#255#199#156#137#255#200#154#136#255#212#166
+  +#148#255#207#164#149#255#209#171#159#255#255#252#243#255#255#246#241#255#255
+  +#253#254#255#255#251#252#255#255#254#255#255#247#253#242#255#242#244#232#255
+  +#213#210#195#255#221#210#190#255#220#199#177#255#240#213#186#255#237#203#174
+  +#255#242#206#176#255#235#198#170#255#232#199#173#255#221#194#173#255#220#199
+  +#184#255#255#255#247#255#255#252#247#255#252#252#252#255#250#255#255#255#246
+  +#255#245#255#193#209#191#255#176#192#168#255#181#196#168#255#195#212#175#255
+  +#177#193#152#255#183#198#154#255#195#211#164#255#196#211#167#255#195#211#170
+  +#255#186#200#166#255#192#205#179#255#186#197#181#255#246#255#247#255#246#255
+  +#254#255#242#255#253#255#241#255#242#0#239#255#238#255#241#255#238#255#239
+  ,#255#234#255#232#255#223#255#236#255#226#255#236#255#223#255#232#255#219#255
+  +#234#255#223#255#228#255#220#255#235#255#229#255#237#255#237#255#235#255#238
+  +#255#241#255#248#255#237#252#248#255#243#255#255#255#243#255#251#255#244#255
+  +#251#255#249#255#253#255#255#253#253#255#255#250#254#255#255#250#255#255#241
+  +#255#255#255#236#255#255#255#248#251#255#255#245#246#255#255#246#252#255#255
+  +#229#243#255#255#236#254#255#255#239#253#255#255#251#251#255#255#255#250#255
+  +#255#246#255#252#255#245#255#249#255#250#255#253#255#255#255#254#255#255#252
+  +#255#255#255#251#255#255#247#252#255#255#243#255#255#255#251#254#255#255#247
+  +#246#255#255#249#252#255#255#250#254#255#255#243#254#255#255#239#248#252#255
+  +#245#245#251#255#255#253#255#255#255#255#254#255#253#254#252#255#255#255#254
+  +#255#255#254#254#255#255#251#252#255#255#251#252#255#255#252#250#255#255#255
+  +#251#255#251#251#245#255#255#255#251#255#255#254#247#255#255#250#244#255#255
+  +#255#249#255#255#255#249#255#255#255#249#255#251#255#248#255#255#248#250#255
+  +#255#250#252#255#255#250#251#255#255#244#244#255#255#241#243#255#255#246#247
+  +#255#255#249#245#255#255#251#243#255#255#255#245#255#253#255#243#255#255#255
+  +#244#255#255#255#247#255#255#245#237#255#254#246#239#255#255#255#251#255#248
+  +#252#246#255#144#30'%'#255#137#21#26#255#141#24#27#255#154#29#31#255#168#28
+  +#29#255#166#22#21#255#155#22#19#255'}&'#28#255#255#255#238#255#241#255#244
+  +#255#253#255#245#255#247#244#239#255#255#254#255#255#255#252#255#255#255#249
+  +#255#0#255#243#255#255#140#26#26#255#255#231#233#255#255#237#241#255#171#14
+  +#18#255#175#13#18#255#255#237#238#255#255#231#229#255'~'#30#24#255#255#254
+  +#242#255#255#252#240#255#255#252#248#255#255#247#248#255#255#252#255#255#255
+  +#249#255#0#254#244#255#255#255#250#255#255#255#222#207#255#255#250#240#255
+  +#255#234#234#255#164#20#25#255#157#21#27#255#255#234#238#255#255#247#247#255
+  +#255#215#215#255'w'#26'!'#255#134#21#31#255#155#23'$'#255#255#164#174#255'^('
+  +'('#255#255#255#248#255#255#255#248#255#245#253#242#255#255#255#244#255#255
+  +#250#241#255#255#241#245#255#158#23'!'#255#142#25'"'#255#255#245#248#255#255
+  +#249#246#255#255#250#251#255#255#239#251#255#167#13' '#255#190#20''''#255#255
+  +#148#161#255#255#211#210#255#255#254#242#255#255#255#244#255#249#255#243#255
+  +#255#255#254#255#255#250#254#255#255#239#252#255#142#13#28#255#131#30'&'#255
+  +#255#248#248#255#255#254#246#255#255#254#247#255#255#243#247#255#153#20#30
+  +#255#168#17' '#255#255#225#236#255#255#251#249#255#254#254#248#255#255#255
+  +#252#255#253#254#250#255#246#248#248#255#255#250#254#255#255#236#248#255#158
+  +#19'!'#255#137#26#30#255#255#244#237#255#255#255#240#255#255#255#241#255#255
+  +#239#235#255#164#27#31#255#162#14#24#255#255#238#247#255#255#251#251#255#252
+  +#253#251#255#255#254#255#255#252#251#253#255#255#255#245#255#255#251#241#255
+  +#255#240#242#255#187#25#30#255#171#19#18#255#255#246#235#255#255#255#231#255
+  +#255#255#231#255#255#243#235#255#179#16#18#255#181#23#30#255#255#240#245#255
+  +#255#241#244#255#255#254#254#255#255#254#255#255#253#254#255#255#250#255#248
+  +#255#255#253#247#255'z'#26' '#255#152#21' '#255#145#14#25#255't'#17#25#255
+  +#255#250#247#255#255#251#251#255'|'#16#29#255#154#16'"'#255#153#22'*'#255'y'
+  +#23'%'#255#255#248#255#255#255#242#244#255#255#254#255#255#245#245#245#255
+  +#237#254#255#255#247#248#255#255#255#233#255#255#157'm'#145#255#150'_'#140
+  +#255#137'['#143#255'yb'#152#255'mT'#140#255#134'T'#142#255#159'^'#149#255#151
+  +'V'#131#255#255#240#255#255#255#242#255#255#251#255#255#255#255#255#251#255
+  +#255#255#248#255#231#241#255#255#241#250#255#255'QUr'#255'POv'#255'YP'#130
+  +#255'dX'#146#255']O'#143#255'\P'#146#255'`W'#150#255'XK'#131#255'fR'#129#255
+  +'^Ss'#255#241#252#255#255#239#254#255#255#239#243#237#255#255#255#248#255#255
+  +#250#255#255'85D'#255'8?P'#255'1;M'#255'04M'#255'78T'#255'''"B'#255'76V'#255
+  +#30')G'#255'(7Q'#255'2=S'#255'$3C'#255'''CJ'#255#231#254#255#255#250#252#253
+  +#255#255#253#255#255#255#249#255#0#249#241#252#255#244#253#255#255#239#254
+  +#255#255#237#249#255#255#246#252#255#255#251#250#255#255#246#251#255#255#232
+  +#254#255#255#225#255#255#255#228#253#255#255#228#255#255#255#221#255#255#255
+  +#230#255#255#255#253#253#255#255#255#248#255#255#255#253#255#255#255#253#255
+  +#255#255#254#255#0#247#249#250#255#251#254#255#255#251#254#255#255#253#254
+  +#255#255#252#251#255#255#255#253#255#255#255#252#255#255#255#251#255#255#255
+  +#251#255#255#255#251#255#255#255#252#255#255#255#251#255#255#253#252#255#255
+  +#255#255#255#255#254#254#254#255#246#248#248#255#251#255#255#255#250#255#255
+  +#255#247#252#253#255#251#255#255#255#249#251#252#255#255#254#255#0#255#253
+  +#255#255#255#253#255#255#255#253#255#255#255#253#255#255#255#253#255#255#255
+  +#253#255#255#253#253#255#255#253#255#254#255#251#255#254#255#244#251#248#255
+  +#248#255#254#255#242#253#250#255#229#240#237#255#248#255#252#255#251#255#252
+  +#255#255#255#252#255#255#255#254#255#255#255#254#255#255#255#254#255#255#255
+  +#254#255#255#255#254#255#255#255#254#255#253#255#254#255#250#255#255#255#239
+  ,#247#246#255#246#255#255#255#242#255#253#255#243#255#255#255#244#255#254#255
+  +#246#255#254#255#244#254#248#255#251#255#252#255#255#255#252#255#255#255#251
+  +#255#255#255#251#255#255#255#251#255#255#255#251#255#255#255#251#255#253#255
+  +#251#255#157#166#176#255#242#253#255#255#237#250#255#255#234#250#255#255#224
+  +#240#246#255#172#187#190#255#233#246#248#255#156#166#166#255#250#255#255#255
+  +#253#255#254#255#255#255#252#255#255#255#252#255#255#255#251#255#255#255#251
+  +#255#255#255#249#255#253#255#249#255#196#212#218#255#189#208#213#255#236#255
+  +#255#255#236#255#255#255#206#227#229#255#172#192#193#255#239#255#255#255#244
+  +#255#255#255#248#255#255#255#251#255#255#255#255#255#255#255#255#255#254#255
+  +#255#255#254#255#255#255#254#255#253#255#254#255#253#255#254#255#212#241#226
+  +#255#174#203#188#255#232#255#249#255#217#247#234#255#164#194#183#255#218#245
+  +#235#255#234#255#249#255#143#160#156#255#246#255#255#255#250#255#255#255#253
+  +#254#255#255#255#253#255#255#255#253#255#255#255#252#255#255#253#252#255#255
+  +#253#252#255#255#231#255#248#255#148#178#165#255#220#253#239#255#230#255#251
+  +#255#146#178#167#255#227#255#247#255#236#255#254#255#140#159#156#255#246#255
+  +#255#255#250#254#255#255#253#252#255#255#255#251#255#255#255#251#255#255#255
+  +#251#255#255#253#251#255#255#253#251#255#255#232#255#255#255#175#199#205#255
+  +#191#217#223#255#189#218#223#255#183#209#215#255#229#254#255#255#235#254#255
+  +#255#143#159#166#255#242#249#255#255#250#252#255#255#252#251#255#255#252#248
+  +#255#255#255#251#255#255#255#251#255#255#253#252#255#255#249#248#255#255#223
+  +#242#255#255#214#236#248#255#168#190#202#255#168#192#204#255#207#229#240#255
+  +#234#255#255#255#237#254#255#255#148#161#169#255#246#253#255#255#250#253#255
+  +#255#253#253#255#255#255#253#255#255#254#253#255#255#251#250#254#255#251#252
+  +#255#255#253#255#255#255#237#253#255#255#233#251#255#255#151#170#178#255#153
+  +#174#182#255#221#243#249#255#236#255#255#255#233#250#253#255#148#161#163#255
+  +#234#244#244#255#243#248#247#255#250#253#251#255#255#255#254#255#255#255#252
+  +#255#254#255#250#255#248#252#246#255#251#255#249#255#240#255#247#255#233#253
+  +#240#255#239#255#248#255#237#255#248#255#237#255#248#255#239#255#248#255#241
+  +#255#248#255#236#253#240#255#248#255#248#255#251#255#249#255#255#255#249#255
+  +#253#255#247#255#255#255#249#255#253#255#248#255#251#255#247#255#251#255#248
+  +#255#244#255#215#255#187#219#160#255#190#222#167#255#180#212#158#255#173#206
+  +#155#255#178#207#161#255#181#207#167#255#187#209#174#255#241#255#228#255#253
+  +#255#241#255#255#255#244#255#254#255#244#255#254#255#248#255#253#255#251#255
+  +#253#255#252#255#251#255#252#255#186#212#152#255#178#206#147#255#180#207#151
+  +#255#178#207#152#255#189#218#168#255#180#208#162#255#181#205#165#255#183#202
+  +#169#255#203#216#190#255#238#245#224#255#255#255#245#255#255#255#248#255#255
+  +#255#251#255#253#255#254#255#250#255#254#255#248#253#252#255#247#255#238#255
+  +#251#255#244#255#251#255#245#255#243#254#238#255#248#255#247#255#241#254#240
+  +#255#247#255#247#255#250#255#249#255#241#245#239#255#255#255#252#255#255#255
+  +#254#255#255#253#252#255#251#251#251#255#251#253#253#255#251#255#255#255#250
+  +#255#255#255#255#254#255#0#248#249#253#255#253#254#255#255#245#250#253#255
+  +#250#255#255#255#248#255#255#255#250#255#255#255#250#253#255#255#253#254#255
+  +#255#255#254#255#0#255#252#254#255#254#251#253#255#255#254#255#0#253#255#255
+  +#255#249#253#254#255#247#252#253#255#254#255#246#255#255#255#249#255#255#255
+  +#247#255#252#253#244#255#252#255#246#255#255#255#249#255#248#250#244#255#255
+  +#255#251#255#255#255#252#255#255#255#252#255#255#255#255#255#255#255#255#255
+  +#255#254#255#255#255#254#255#255#253#254#255#255#253#254#255#255#255#255#254
+  +#255#241#242#238#255#255#255#252#255#255#255#252#255#255#255#252#255#255#255
+  +#252#255#251#252#248#255#247#248#244#255#255#255#252#255#255#255#252#255#255
+  +#255#254#255#255#255#254#255#255#255#255#255#255#255#255#255#253#255#255#255
+  +#253#255#255#255#255#252#255#255#251#251#255#255#255#253#255#255#249#250#254
+  +#255#253#254#255#255#243#245#246#255#253#255#255#255#253#255#255#255#253#255
+  +#254#255#253#255#252#255#255#255#252#255#255#255#252#255#255#255#251#255#255
+  +#255#251#255#255#255#251#255#255#255#251#255#243#243#255#255#251#252#255#255
+  +#240#241#251#255#251#252#255#255#248#250#255#255#253#253#255#255#253#254#255
+  +#255#253#254#255#255#253#255#255#255#253#255#255#255#255#255#254#255#255#255
+  +#254#255#255#255#252#255#255#255#252#255#255#255#252#255#255#255#252#255#130
+  +#132#142#255#226#228#238#255#250#252#255#255#250#252#255#255#231#233#243#255
+  +'xz'#130#255#247#249#255#255'[]e'#255#253#252#255#255#253#253#255#255#255#253
+  +#255#255#255#253#255#255#255#254#255#255#255#254#255#255#255#253#255#255#255
+  +#253#255#255#166#174#181#255#188#196#203#255#235#243#250#255#244#250#255#255
+  +#194#200#207#255#172#175#183#255#250#253#255#255#251#253#255#255#251#254#255
+  +#255#253#253#255#255#255#253#255#255#255#254#255#255#255#254#255#255#255#254
+  +#255#255#255#254#255#255#255#254#255#255#210#221#225#255#128#139#143#255#244
+  ,#255#255#255#246#255#255#255'{'#132#135#255#222#229#232#255#246#254#254#255
+  +'\ab'#255#251#255#255#255#251#255#254#255#253#255#254#255#255#255#252#255#255
+  +#255#251#255#255#255#249#255#255#255#249#255#255#255#249#255#241#255#253#255
+  +'s'#129#127#255#228#241#239#255#235#248#246#255'u'#127#127#255#240#251#249
+  +#255#248#255#255#255'aih'#255#251#255#255#255#251#255#254#255#253#255#254#255
+  +#253#255#252#255#255#255#251#255#255#255#251#255#255#255#249#255#255#255#249
+  +#255#241#255#249#255#161#181#169#255#182#199#190#255#182#198#191#255#165#179
+  +#175#255#241#252#250#255#248#255#255#255'\cf'#255#250#253#255#255#251#254#255
+  +#255#253#253#255#255#247#247#253#255#255#253#255#255#255#253#255#255#250#246
+  +#252#255#255#253#255#255#235#255#242#255#206#226#213#255#136#153#142#255#140
+  +#157#148#255#210#224#220#255#246#255#255#255#248#255#255#255'[be'#255#251#254
+  +#255#255#246#248#255#255#248#247#255#255#255#252#255#255#255#252#255#255#254
+  +#250#255#255#252#248#254#255#255#253#255#255#243#255#251#255#231#248#239#255
+  +'kys'#255'q'#127'{'#255#237#248#246#255#244#254#254#255#241#249#249#255'bjj'
+  +#255#250#254#255#255#251#255#255#255#253#255#255#255#255#255#255#255#249#247
+  +#246#255#255#255#252#255#255#255#251#255#248#248#242#255#238#243#255#255#244
+  +#249#255#255#244#249#255#255#244#249#255#255#246#249#255#255#233#237#255#255
+  +#248#250#255#255#246#246#255#255#246#246#255#255#244#246#254#255#255#254#255
+  +#255#255#255#255#255#255#255#252#255#254#255#246#255#255#255#248#255#255#255
+  +#247#255#245#230#255#255#181#167#239#255#178#164#236#255#175#162#230#255#170
+  +#156#222#255#185#173#233#255#179#166#220#255#181#171#217#255#251#243#255#255
+  +#251#246#255#255#250#244#255#255#244#240#251#255#255#254#255#255#255#255#252
+  +#255#254#255#245#255#255#255#247#255#144#130#201#255#130't'#187#255#141#127
+  +#198#255#151#136#204#255#139'}'#189#255#150#138#198#255#139'~'#180#255#150
+  +#140#186#255#148#140#177#255#233#225#255#255#255#248#255#255#253#249#255#255
+  +#250#249#253#255#255#255#254#255#255#255#247#255#255#255#247#255#246#249#255
+  +#255#248#251#255#255#246#249#255#255#246#246#255#255#250#250#255#255#250#250
+  +#255#255#248#246#255#255#251#250#255#255#251#248#255#255#253#251#255#255#252
+  +#249#255#255#252#251#255#255#255#254#255#255#255#255#254#255#255#255#251#255
+  +#255#255#251#255#245#255#242#0#248#255#245#255#250#255#248#255#245#254#244
+  +#255#250#255#252#255#247#254#251#255#251#255#255#255#251#255#255#255#253#254
+  +#255#255#250#251#255#255#255#254#255#255#255#254#255#255#252#252#252#255#251
+  +#252#250#255#255#255#254#255#255#255#252#255#254#253#255#255#255#254#255#255
+  +#255#255#255#255#254#254#254#255#255#255#254#255#255#255#254#255#255#255#252
+  +#255#255#255#252#255#254#255#250#255#253#255#249#255#251#252#248#255#252#253
+  +#249#255#255#255#255#255#254#254#254#255#253#252#254#255#255#254#255#255#253
+  +#252#254#255#255#254#255#255#255#255#255#255#251#251#251#255#249#250#248#255
+  +#251#252#250#255#252#253#249#255#251#252#248#255#253#255#249#255#254#255#250
+  +#255#255#255#252#255#255#255#254#255#255#255#255#255#255#255#255#255#251#250
+  +#252#255#251#250#252#255#253#252#254#255#255#254#255#255#255#255#255#255#255
+  +#255#255#255#255#255#254#255#255#255#254#255#255#255#252#255#255#255#252#255
+  +#255#255#252#255#255#255#252#255#254#255#253#255#252#253#251#255#249#249#249
+  +#255#255#255#255#255#255#254#255#255#255#254#255#255#253#252#254#255#250#249
+  +#251#255#254#254#254#255#255#255#255#255#251#251#251#255#253#254#252#255#255
+  +#255#254#255#251#252#250#255#250#251#249#255#250#251#249#255#255#255#255#255
+  +#255#255#255#255#253#252#254#255#255#254#255#255#255#254#255#255#250#249#253
+  +#255#255#254#255#255#255#254#255#255#253#252#254#255#253#253#253#255#253#253
+  +#253#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+  +#255#255#255#255#254#255#255#255#254#255#255#255#254#255#255#255#254#255#255
+  +#255#253#255#255#254#252#255#255#249#248#252#255#253#252#255#255#252#251#255
+  +#255#255#254#255#255#255#254#255#255#255#254#255#255#252#251#253#255#255#254
+  +#255#255#253#252#255#255#255#254#255#255#251#249#255#255#250#248#254#255#255
+  +#252#255#255#252#249#255#255#250#246#255#255#255#251#255#0#255#253#255#255
+  +#255#253#255#255#255#252#255#255#251#248#255#255#255#252#255#255#250#247#255
+  +#255#244#241#250#255#255#252#255#255#255#251#255#0#255#251#255#0#254#250#255
+  +#255#255#251#255#0#255#250#255#255#255#250#255#255#245#239#255#255#255#249
+  +#255#255#252#248#255#255#253#249#255#255#219#215#227#255#191#187#199#255#192
+  +#188#200#255#187#183#195#255#193#189#201#255#228#223#238#255#252#247#255#255
+  +#239#234#249#255#198#192#209#255#177#171#188#255#189#183#202#255#187#181#200
+  +#255#197#190#211#255#237#230#251#255#252#246#255#255#212#206#223#255#191#185
+  +#202#255#234#228#245#255#250#244#255#255#238#232#251#255#221#215#234#255#241
+  +#234#255#255#255#248#255#255#232#225#246#255#189#181#204#255#207#199#222#255
+  +#250#242#255#255#245#237#255#255#187#179#202#255#192#184#207#255#255#249#255
+  +#255#192#186#205#255#177#171#190#255#236#229#250#255#255#248#255#255#255#247
+  ,#255#255#253#245#255#255#254#246#255#255#254#246#255#255#209#201#224#255#183
+  +#174#200#255#228#219#245#255#255#246#255#255#241#232#255#255#185#176#202#255
+  +#195#187#210#255#248#241#255#255#207#200#221#255#182#175#196#255#190#182#205
+  +#255#190#182#205#255#209#200#226#255#237#228#254#255#255#246#255#255#253#244
+  +#255#255#199#190#216#255#194#185#211#255#241#232#255#255#248#240#255#255#216
+  +#208#231#255#189#181#204#255#212#205#226#255#253#246#255#255#247#240#255#255
+  +#212#205#226#255#192#184#207#255#193#185#208#255#188#180#203#255#206#197#223
+  +#255#255#247#255#255#244#236#255#255#184#176#199#255#177#169#192#255#199#192
+  +#213#255#192#185#206#255#196#190#209#255#221#215#234#255#252#246#255#255#254
+  +#248#255#255#254#248#255#255#253#247#255#255#255#248#255#255#242#235#255#255
+  +#184#177#198#255#183#175#198#255#248#241#255#255#232#225#246#255#190#184#203
+  +#255#213#207#226#255#246#240#255#255#247#242#255#255#250#246#255#255#255#251
+  +#255#0#255#251#255#0#235#230#245#255#222#217#232#255#243#237#254#255#252#246
+  +#255#255#223#217#236#255#189#183#202#255#219#213#232#255#255#249#255#255#212
+  +#206#223#255#185#180#195#255#222#217#232#255#255#251#255#0#255#252#255#255
+  +#253#251#255#255#255#253#255#255#255#253#255#255#214#210#222#255#189#185#197
+  +#255#191#186#201#255#188#183#198#255#196#191#206#255#216#211#226#255#251#246
+  +#255#255#250#245#255#255#195#191#203#255#191#187#198#255#235#231#242#255#255
+  +#253#255#255#255#254#255#255#250#249#251#255#254#253#255#255#255#255#255#255
+  +#255#251#255#0#255#251#255#0#255#251#255#0#249#245#255#255#255#251#255#0#255
+  +#251#255#0#255#251#255#0#255#251#255#0#255#251#255#0#248#245#254#255#255#252
+  +#255#255#251#250#254#255#255#254#255#255#254#254#254#255#255#255#254#255#254
+  +#255#253#255#255#254#255#255#255#254#255#255#255#255#255#255#250#250#250#255
+  +#255#255#254#255#252#253#249#255#255#255#252#255#252#254#248#255#252#254#248
+  +#255#255#255#251#255#249#250#246#255#255#255#252#255#255#255#254#255#255#255
+  +#254#255#254#254#254#255#255#255#255#255#255#254#255#255#247#246#248#255#255
+  +#255#255#255#255#255#255#255#252#253#251#255#247#248#244#255#255#255#252#255
+  +#255#255#251#255#252#254#248#255#245#247#241#255#250#251#247#255#255#255#252
+  +#255#255#255#254#255#250#251#249#255#255#255#255#255#253#253#253#255#255#255
+  +#255#255#248#248#248#255#255#255#255#255#255#255#255#255#255#255#254#255#252
+  +#253#249#255#253#254#250#255#249#250#246#255#255#255#252#255#255#255#252#255
+  +#255#255#254#255#254#255#253#255#254#254#254#255#255#255#255#255#255#254#255
+  +#255#253#252#254#255#255#255#255#255#255#255#255#255#252#252#252#255#243#243
+  +#243#255#255#255#254#255#255#255#252#255#254#255#253#255#255#255#254#255#245
+  +#246#244#255#255#255#254#255#252#252#252#255#246#246#246#255#250#249#251#255
+  +#255#254#255#255#244#243#247#255#255#254#255#255#245#244#246#255#255#254#255
+  +#255#255#254#255#255#255#255#255#255#255#255#255#255#254#255#253#255#247#247
+  +#247#255#250#250#250#255#255#255#255#255#255#255#255#255#255#254#255#255#255
+  +#254#255#255#255#254#255#255#255#254#255#255#246#244#250#255#255#253#255#255
+  +#255#254#255#255#250#249#253#255#251#250#254#255#255#254#255#255#250#249#251
+  +#255#255#254#255#255#255#254#255#255#255#254#255#255#255#254#255#255#250#248
+  +#254#255#255#253#255#255#250#247#255#255#249#246#255#255#248#244#255#255#255
+  +#251#255#255#251#247#255#255#255#252#255#255#255#252#255#255#250#247#255#255
+  +#255#252#255#255#255#252#255#255#254#251#255#255#241#238#247#255#255#251#255
+  +#255#249#245#255#255#255#251#255#255#243#239#251#255#255#250#255#255#255#250
+  +#255#255#255#249#255#255#255#249#255#255#248#242#255#255#249#245#255#255#253
+  +#249#255#255#156#152#164#255'VR^'#255'KGS'#255'<7F'#255'MHW'#255#188#182#199
+  +#255#255#249#255#255#230#224#241#255'C=P'#255'HBU'#255'?8M'#255'HAV'#255'aZo'
+  +#255#207#200#221#255#250#244#255#255#133#127#146#255'C=P'#255#190#184#203#255
+  +#247#241#255#255#227#220#241#255#144#137#158#255#220#212#235#255#255#247#255
+  +#255#183#175#198#255'?7N'#255#130'z'#145#255#255#246#255#255#198#189#215#255
+  +'KB\'#255'YPj'#255#255#248#255#255'OH]'#255'D=R'#255#203#195#218#255#251#243
+  +#255#255#255#246#255#255#253#244#255#255#255#246#255#255#255#246#255#255#137
+  +#128#154#255'JA['#255#169#160#186#255#255#246#255#255#255#246#255#255'8/J'
+  +#255'KB\'#255#250#242#255#255'g_v'#255':2I'#255'E<V'#255'NE_'#255#143#134#161
+  +#255#225#216#243#255#255#246#255#255#251#242#255#255'ZQl'#255'E<W'#255#222
+  +#213#240#255#251#242#255#255#172#163#189#255'KB\'#255#141#133#156#255#255#247
+  +#255#255#229#221#244#255#152#144#167#255'ZQk'#255'F=W'#255'<3M'#255'pg'#130
+  +#255#252#243#255#255#228#219#245#255'JA['#255'>5O'#255'VMg'#255'91H'#255'NG\'
+  +#255#148#141#162#255#255#248#255#255#255#248#255#255#255#248#255#255#250#243
+  +#255#255#253#245#255#255#210#202#225#255'E=T'#255'I@Z'#255#254#246#255#255
+  +#189#181#204#255'=5L'#255#128'y'#142#255#254#247#255#255#255#249#255#255#255
+  +#249#255#255#243#237#254#255#251#246#255#255#185#179#198#255#158#152#171#255
+  +#232#226#245#255#255#249#255#255#181#174#195#255'B;P'#255#139#132#153#255#251
+  ,#244#255#255#137#131#150#255'JDW'#255#172#166#183#255#251#246#255#255#255#251
+  +#255#255#251#247#255#255#255#251#255#255#255#252#255#255#151#145#162#255'D>O'
+  +#255'C=N'#255'HBS'#255'`Zm'#255#147#141#160#255#250#244#255#255#254#248#255
+  +#255'VQ`'#255'GBQ'#255#221#217#229#255#245#241#252#255#255#252#255#255#255
+  +#253#255#255#245#244#248#255#253#252#254#255#250#245#255#0#255#250#255#255
+  +#255#250#255#255#249#244#255#255#252#246#255#255#255#249#255#255#255#249#255
+  +#255#255#250#255#255#255#250#255#255#255#251#255#255#251#247#255#255#255#253
+  +#255#255#248#246#252#255#254#253#255#255#255#254#255#255#254#254#254#255#246
+  +#249#254#255#251#255#255#255#246#251#242#255#244#248#242#255#255#251#255#255
+  +#246#242#254#255#254#253#255#255#255#255#254#255#255#255#254#255#252#252#252
+  +#255#255#252#255#255#255#252#255#255#248#251#249#255#253#255#255#255#251#250
+  +#255#255#249#245#255#255#253#255#255#255#246#249#247#255#253#255#249#255#255
+  +#255#252#255#255#252#255#255#255#251#255#255#255#254#255#255#251#252#250#255
+  +#253#252#248#255#255#255#254#255#255#252#255#255#243#241#247#255#255#255#254
+  +#255#253#255#255#255#248#246#255#255#244#242#255#255#255#255#249#255#241#245
+  +#234#255#255#255#249#255#255#255#252#255#248#244#250#255#255#253#255#255#255
+  +#251#252#255#253#253#247#255#255#255#249#255#255#255#252#255#255#254#255#255
+  +#255#253#255#255#249#247#246#255#255#255#254#255#255#254#255#255#253#252#255
+  +#255#252#253#243#255#255#255#251#255#255#255#255#255#255#250#255#255#255#247
+  +#255#255#255#249#255#255#255#252#255#255#255#252#255#255#255#254#255#255#255
+  +#248#251#255#255#251#255#255#255#250#255#255#255#248#255#255#255#252#255#255
+  +#255#253#255#255#245#241#247#255#255#255#252#255#246#240#245#255#255#244#255
+  +#255#255#243#255#255#255#243#255#255#255#239#255#255#255#244#255#255#255#246
+  +#255#255#255#247#255#255#254#238#255#255#255#244#255#255#255#243#255#255#255
+  +#243#255#255#252#237#255#255#255#248#255#255#255#250#255#255#255#255#254#255
+  +#255#250#255#255'>,Q'#255#255#232#255#255#255#233#255#255'X?k'#255#255#241
+  +#255#255'A,M'#255'U>^'#255'lWx'#255#216#193#231#255#254#231#255#255'H/a'#255
+  +'O;f'#255'4&>'#255#255#250#255#255#255#255#251#255#255#246#255#255'L6`'#255
+  +#255#235#255#255#255#234#255#255'F*X'#255#255#240#255#255'R:]'#255#253#228
+  +#255#255#204#180#215#255'_Em'#255#255#238#255#255'M0g'#255#255#238#255#255
+  +#255#246#255#255#255#245#253#255#255#255#252#255#255#249#255#255'K1a'#255#255
+  +#229#255#255#255#234#255#255'J-_'#255#255#238#255#255'O4\'#255#255#240#255
+  +#255#255#240#255#255'K0\'#255#255#237#255#255'M.k'#255'L0e'#255'A1I'#255#255
+  +#251#255#255#255#253#255#255#255#243#255#255'\?w'#255#227#193#255#255#223#189
+  +#254#255'X8s'#255#255#236#255#255'H+\'#255#255#235#255#255#203#175#221#255'a'
+  +'Dv'#255#255#234#255#255'O-s'#255#255#234#255#255#255#243#255#255#255#249#255
+  +#255#255#254#254#255#255#249#255#255#190#167#212#255'O3n'#255'Z=t'#255#194
+  +#168#216#255#250#225#255#255'U>d'#255'S;^'#255'YBh'#255#225#201#243#255#255
+  +#233#255#255'I,d'#255#250#226#255#255#255#246#255#255#255#250#255#255#255#255
+  +#238#255#255#255#248#255#255#248#255#255#255#242#255#255#255#245#255#255#255
+  +#246#255#255#255#248#255#255#253#241#253#255#255#250#255#255#255#251#255#255
+  +#255#244#255#255#255#246#255#255#255#245#255#255#255#248#255#255#255#250#251
+  +#255#255#255#248#255#252#255#235#255#255#255#245#255#255#254#255#255#255#251
+  +#255#255#255#250#255#255#253#245#255#255#255#251#255#255#255#255#254#255#255
+  +#251#248#255#255#255#252#255#255#254#255#255#254#248#253#255#255#252#255#255
+  +#252#249#251#255#255#255#249#255#238#241#226#255#255#255#247#255#252#255#246
+  +#255#248#248#248#255#253#251#255#255#255#250#255#255#255#250#255#255#255#253
+  +#255#255#255#254#253#255#255#255#252#255#247#246#242#255#255#253#255#255#250
+  +#249#251#255#252#252#252#255#255#255#255#255#248#249#247#255#255#255#252#255
+  +#251#255#254#255#251#255#254#255#251#255#254#255#253#255#255#255#250#248#255
+  +#255#246#242#254#255#255#254#255#255#254#255#253#255#252#251#247#255#255#255
+  +#252#255#255#254#255#255#253#255#255#255#253#255#252#255#251#255#252#255#251
+  +#255#255#255#248#251#255#255#250#255#255#255#236#241#242#255#250#255#252#255
+  +#244#249#247#255#250#251#255#255#253#251#255#255#248#250#251#255#253#255#252
+  +#255#255#255#251#255#249#253#248#255#253#255#255#255#247#251#252#255#250#255
+  +#248#255#250#255#251#255#245#249#254#255#250#252#255#255#247#253#255#0#248
+  +#255#255#255#250#255#251#255#247#254#249#255#251#252#255#255#247#247#255#255
+  +#251#253#254#255#253#255#252#255#253#255#251#255#253#255#252#255#244#248#249
+  +#255#251#255#255#255#250#255#249#255#247#255#246#255#248#254#255#255#241#244
+  +#255#255#248#254#249#255#251#255#252#255#245#251#246#255#250#255#251#255#251
+  +#255#252#255#251#255#252#255#251#255#254#255#248#253#251#255#245#250#248#255
+  +#249#254#252#255#251#255#252#255#251#255#252#255#249#255#250#255#251#255#252
+  +#255#247#253#248#255#251#255#252#255#253#255#254#255#248#251#249#255#246#249
+  +#247#255#253#255#254#255#250#253#251#255#241#244#242#255#253#255#255#255#249
+  ,#251#251#255#253#255#255#255#253#255#255#255#247#250#248#255#242#245#243#255
+  +#253#255#254#255#253#255#254#255#253#255#254#255#247#250#248#255#254#254#254
+  +#255#255#255#255#255#255#255#255#255#255#255#255#255#242#241#243#255#255#254
+  +#255#255#255#254#255#255#249#248#252#255#255#254#255#255#246#245#249#255#255
+  +#254#255#255#255#254#255#255#248#248#248#255#255#255#255#255#255#255#255#255
+  +#255#255#255#255#255#253#255#255#255#253#255#255#247#241#246#255#255#248#255
+  +#255#255#252#255#255#255#251#255#255#251#243#253#255#255#251#255#255#255#248
+  +#255#255#255#251#255#255#255#251#255#255#251#244#251#255#255#252#255#255#255
+  +#253#255#255#253#247#252#255#255#250#255#255#255#250#255#255#255#246#255#255
+  +#255#250#255#255#255#250#255#255#255#250#255#255#255#249#255#255#255#249#255
+  +#255#255#249#255#255#255#249#255#255#255#247#255#255#255#244#255#255#255#249
+  +#255#255#255#250#255#255#255#245#255#255#255#246#255#255#255#250#255#255#255
+  +#248#255#255#255#249#255#255#30#17'!'#255#255#244#255#255#255#247#255#255'.'
+  +#31'4'#255#251#236#255#255'%'#22'+'#255'%'#22'+'#255'F7L'#255#205#190#211#255
+  +#255#246#255#255'"'#20'&'#255'('#27'+'#255' '#19'#'#255#255#249#255#255#255
+  +#247#255#255#255#248#255#255'%'#25'-'#255#255#248#255#255#255#245#255#255#30
+  +#16'('#255#255#245#255#255#28#13'('#255#255#243#255#255#175#160#187#255'9+C'
+  +#255#255#247#255#255')'#28'2'#255#249#237#255#255#255#248#255#255#255#246#255
+  +#255#255#248#255#255#253#242#255#255''''#27'1'#255#254#241#255#255#255#246
+  +#255#255#29#16'*'#255#255#244#255#255'&'#24'4'#255#255#245#255#255#251#237
+  +#255#255'('#26'6'#255#255#246#255#255#29#16'('#255'&'#26'0'#255#30#19''''#255
+  +#255#247#255#255#255#248#255#255#255#246#255#255'5,A'#255#204#194#217#255#200
+  +#189#215#255':.J'#255#254#242#255#255#31#19'1'#255#251#239#255#255#189#177
+  +#205#255'9-I'#255#255#246#255#255#28#18')'#255#255#248#255#255#255#248#255
+  +#255#255#248#255#255#255#249#255#255#247#243#255#255#166#159#180#255'5/F'#255
+  +'1(B'#255#164#157#184#255#252#243#255#255#29#22'1'#255' '#22'4'#255'.''B'#255
+  +#197#188#215#255#248#242#255#255'#'#27'2'#255#253#248#255#255#243#237#255#255
+  +#247#244#255#255#249#246#255#255#251#251#255#255#253#250#255#255#250#248#255
+  +#255#243#238#255#255#251#248#255#255#247#241#255#255#251#247#255#255#253#246
+  +#255#255#251#247#255#255#251#245#255#255#251#249#255#255#246#242#255#255#244
+  +#243#255#255#253#250#255#255#251#251#255#255#251#252#255#255'23='#255#29#29
+  +')'#255'&&4'#255'/.>'#255'" 4'#255'-*@'#255'$!7'#255'''$:'#255'+(>'#255')'';'
+  +#255'''&6'#255'//='#255'))5'#255'%&0'#255#250#251#255#255#253#254#255#255#247
+  +#247#253#255#253#252#255#255#253#252#255#255#246#244#255#255#251#248#255#255
+  +#253#249#255#255#248#243#255#255#248#243#255#255#253#249#255#255#252#249#255
+  +#255#249#247#255#255#244#243#253#255#253#252#255#255#253#253#255#255#252#253
+  +#255#255#255#255#255#255#250#252#253#255#245#244#248#255'66<'#255')%0'#255'8'
+  +'6B'#255'/):'#255'*''7'#255'4.?'#255'$!0'#255'.*6'#255'*)2'#255'86<'#255#243
+  +#244#248#255#254#253#255#255#253#255#255#255#253#251#250#255#255#255#254#255
+  +#255#255#255#255#249#248#250#255#255#253#255#255#246#243#252#255#254#247#255
+  +#255#253#248#255#255#253#246#255#255#255#251#255#255#255#249#255#255#246#244
+  +#250#255#252#248#253#255#255#255#255#255#255#255#254#255#250#251#249#255#255
+  +#255#252#0#250#249#245#255#255#255#255#255#252#249#251#255#255#253#255#255
+  +#255#252#255#255#255#251#255#255#255#249#255#255#255#250#255#255#253#247#255
+  +#255#255#252#255#255#255#253#255#255#250#247#249#255#251#249#248#255#255#255
+  +#254#255#255#255#252#0#255#255#241#255#246#250#238#255#255#254#255#255#254
+  +#251#255#255#255#254#255#255#255#254#255#255#247#245#251#255#255#252#255#255
+  +#255#252#255#255#247#245#251#255#255#254#255#255#255#254#255#255#255#252#255
+  +#255#249#248#250#255#254#255#246#255#255#255#241#255#250#252#246#255#253#255
+  +#255#255#255#249#255#255#253#247#255#255#255#248#255#255#235#231#250#255#255
+  +#247#255#255#245#239#255#255#255#246#255#255#253#247#255#255#255#248#255#255
+  +#249#244#255#255#249#240#255#255#253#249#255#255#251#250#252#255#251#255#249
+  +#255#253#248#255#255#251#245#255#255#25#9'>'#255#20#4'A'#255'"'#17'J'#255#24
+  +#10'@'#255'#'#18'K'#255#24#9'B'#255#24#7'@'#255#26#11'D'#255#26#9'B'#255'"'
+  +#19'L'#255#29#11'H'#255#15#2'6'#255#251#243#255#255#251#249#255#255#251#246
+  +#255#255#251#241#255#255#23#5'H'#255#212#190#255#255#208#187#255#255#215#195
+  +#255#255#208#188#255#255#210#191#255#255#214#195#255#255#208#188#255#255#218
+  +#198#255#255#203#182#255#255#215#193#255#255#23#5'H'#255#251#241#255#255#247
+  +#242#255#255#250#251#255#255#249#245#255#255#22#7'D'#255#207#187#255#255#181
+  +#162#235#255#173#155#224#255#180#164#228#255#176#161#223#255#207#192#254#255
+  +#182#166#230#255#166#148#217#255#175#156#229#255#214#194#255#255#18#3'@'#255
+  +#247#243#255#255#250#252#255#255#239#244#245#255#250#249#255#255'$'#23'O'#255
+  +#209#190#255#255#210#191#255#255#216#198#255#255#209#194#255#255#208#194#252
+  +#255#211#197#255#255#207#192#253#255#219#201#255#255#213#194#255#255#214#195
+  ,#255#255#26#13'E'#255#250#249#255#255#245#250#251#255#251#255#252#255#236#236
+  +#250#255#16#2'8'#255#220#200#255#255#175#154#229#255#174#154#226#255#187#170
+  +#233#255#210#195#252#255#179#164#221#255#177#161#222#255#216#196#255#255#164
+  +#143#218#255#203#183#255#255'"'#20'J'#255#232#232#246#255#251#255#252#255#247
+  +#251#245#255#251#251#255#255'!'#17'G'#255#204#182#255#255#216#191#255#255#215
+  +#194#255#255#208#188#253#255#213#198#255#255#215#197#255#255#206#189#253#255
+  +#212#189#255#255#219#197#255#255#216#192#255#255#17#3'9'#255#253#250#255#255
+  +#245#252#245#255#252#253#249#255#253#250#255#255#31#10'H'#255#208#182#255#255
+  +#189#160#245#255#212#187#255#255#181#157#227#255#214#194#255#255#186#164#229
+  +#255#177#156#225#255#176#149#229#255#181#155#239#255#216#188#255#255#25#7'D'
+  +#255#255#249#255#255#248#252#247#255#253#254#252#255#255#249#255#255#26#6'A'
+  +#255#221#194#255#255#217#189#255#255#205#179#255#255#218#194#255#255#218#196
+  +#255#255#210#188#253#255#205#181#251#255#220#194#255#255#222#194#255#255#210
+  +#183#255#255#22#2'='#255#254#248#255#255#255#255#252#255#255#255#252#255#247
+  +#240#253#255'"'#15'B'#255#220#194#255#255#180#154#224#255#214#189#255#255#199
+  +#175#239#255#174#152#211#255#180#158#217#255#229#205#255#255#189#164#232#255
+  +#179#153#223#255#216#190#255#255'*'#23'J'#255#255#250#255#255#255#255#251#255
+  +#243#243#243#255#255#250#255#255'"'#18'B'#255#205#184#247#255#217#195#255#255
+  +#221#200#255#255#216#195#255#255#213#193#252#255#219#199#255#255#213#192#254
+  +#255#204#183#246#255#210#188#253#255#224#203#255#255#21#5'5'#255#251#246#255
+  +#255#255#255#254#255#251#252#255#255#247#244#255#255#23#11'='#255#221#204#255
+  +#255#177#160#223#255#214#197#255#255#170#153#217#255#216#199#255#255#181#164
+  +#228#255#172#155#219#255#216#199#255#255#188#171#234#255#198#181#245#255'!'
+  +#21'G'#255#251#248#255#255#247#249#255#255#248#251#255#255#248#247#255#255#30
+  +#21'G'#255#203#191#251#255#205#193#251#255#200#188#248#255#221#208#255#255
+  +#203#189#253#255#205#191#255#255#204#191#253#255#202#190#250#255#202#190#248
+  +#255#210#198#255#255'"'#25'K'#255#240#239#255#255#248#251#255#255#240#245#255
+  +#255#242#244#255#255#18#13':'#255#24#16'E'#255#25#18'E'#255' '#25'L'#255#4#0
+  +'4'#255#30#19'Q'#255#23#12'J'#255' '#23'P'#255#15#8';'#255#28#21'H'#255#25#17
+  +'F'#255#10#5'2'#255#240#242#255#255#246#251#255#255#244#251#255#0#244#248#255
+  +#255#240#238#255#255#244#240#255#255#241#238#255#255#238#234#255#255#244#238
+  +#255#255#240#232#255#255#243#235#255#255#241#235#255#255#244#240#255#255#242
+  +#239#255#255#238#234#255#255#244#242#255#255#244#248#255#255#243#250#255#255
+  +#255#251#255#255#255#244#250#255#250#254#255#255#246#255#255#255#250#255#248
+  +#255#251#255#249#255#253#252#255#255#248#247#255#255#251#250#255#255#244#246
+  +#254#255#255#255#251#255#244#252#242#255#246#255#255#255#250#254#255#255#250
+  +#238#244#255#255#251#255#255#255#245#245#255#255#249#255#255#236#234#255#255
+  +#241#241#255#255#245#245#255#255#250#246#255#255#248#243#255#255#243#239#255
+  +#255#248#241#255#255#248#243#255#255#243#239#255#255#246#246#255#255#235#235
+  +#255#255#243#241#255#255#255#249#255#255#255#245#245#255#253#255#249#255#237
+  +#236#255#255'<.'#164#255'<*'#185#255'>,'#157#255'C5'#149#255'A2'#148#255'?2'
+  +#148#255'<,'#145#255'C4'#150#255'C5'#149#255'?-'#158#255'=+'#186#255'5'''#157
+  +#255#239#238#255#255#251#255#249#255#243#255#246#255#241#243#255#255'C2'#195
+  +#255#175#149#255#255#194#171#255#255#194#174#255#255#192#173#255#255#199#181
+  +#255#255#202#184#255#255#192#173#255#255#200#180#255#255#188#165#255#255#180
+  +#154#255#255'>-'#190#255#241#243#255#255#241#255#244#255#248#255#255#255#239
+  +#241#255#255'+'#29#155#255#185#165#255#255#179#161#255#255#168#150#243#255
+  +#170#154#241#255#174#159#243#255#196#181#255#255#178#162#249#255#166#148#241
+  +#255#175#157#255#255#176#156#255#255';-'#170#255#234#236#255#255#248#255#255
+  +#255#250#255#255#255#244#244#255#255'4&'#150#255#200#182#255#255#193#175#255
+  +#255#198#180#255#255#214#195#255#255#213#195#255#255#211#192#255#255#209#190
+  +#255#255#212#194#255#255#195#177#255#255#194#176#255#255';/'#159#255#239#239
+  +#255#255#250#255#255#255#243#246#237#255#248#246#255#255'C4'#157#255#198#177
+  +#255#255#183#162#247#255#183#159#229#255#196#169#243#255#209#179#254#255#184
+  +#154#230#255#183#156#230#255#205#181#251#255#185#164#249#255#202#181#255#255
+  +'<-'#150#255#248#244#255#255#245#248#239#255#255#255#248#255#250#247#255#255
+  +'=/'#149#255#193#173#255#255#214#193#255#255#219#196#255#255#214#187#253#255
+  +#225#196#255#255#221#191#255#255#220#193#255#255#215#192#254#255#217#196#255
+  +#255#188#168#255#255'@2'#152#255#250#247#255#255#255#255#248#255#248#255#248
+  +#255#246#246#255#255'<.'#152#255#195#175#255#255#174#158#236#255#218#202#255
+  +#255#175#156#211#255#223#203#255#255#191#170#225#255#173#154#209#255#189#173
+  +#227#255#166#150#228#255#193#173#255#255'>0'#154#255#246#246#255#255#249#255
+  +#249#255#251#253#253#255#246#244#255#255'@1'#157#255#203#183#255#255#203#187
+  +#255#255#209#194#251#255#216#196#255#255#212#193#250#255#219#197#255#255#208
+  ,#189#246#255#205#190#248#255#211#195#255#255#202#182#255#255'9*'#150#255#246
+  +#244#255#255#239#244#243#255#255#251#255#255#240#230#255#255'=,'#149#255#196
+  +#174#255#255#181#161#244#255#213#190#255#255#189#160#239#255#182#153#233#255
+  +#183#150#234#255#224#196#255#255#189#165#235#255#167#147#230#255#192#170#255
+  +#255'G6'#159#255#251#241#255#255#255#251#255#255#255#249#255#255#252#236#255
+  +#255'K4'#161#255#199#174#255#255#209#187#255#255#209#186#254#255#222#193#255
+  +#255#211#179#255#255#224#192#255#255#211#182#255#255#215#192#255#255#209#187
+  +#255#255#210#185#255#255'C,'#153#255#243#227#255#255#255#249#255#255#255#242
+  +#255#255#255#237#255#255'D('#159#255#202#172#255#255#176#156#233#255#216#199
+  +#255#255#179#156#224#255#218#193#255#255#178#153#227#255#183#160#228#255#211
+  +#194#251#255#187#167#244#255#193#163#255#255'F*'#161#255#255#238#255#255#255
+  +#244#255#255#252#242#254#255#253#240#255#255'F3'#162#255#187#167#255#255#215
+  +#200#255#255#200#187#255#255#211#195#255#255#197#180#255#255#203#186#255#255
+  +#210#194#255#255#208#195#255#255#197#182#255#255#201#181#255#255'=*'#153#255
+  +#250#237#255#255#255#250#255#255#250#254#255#255#225#228#255#255'01'#135#255
+  +'55'#161#255'1*'#146#255'<3'#155#255'7-'#151#255'>6'#161#255'<4'#159#255'4*'
+  +#148#255'8/'#151#255'5.'#150#255'66'#162#255'<='#147#255#240#243#255#255#248
+  +#252#255#255#241#253#255#0#237#248#255#255#221#235#255#255#209#217#255#255
+  +#223#220#255#255#222#216#255#255#221#214#255#255#222#217#255#255#223#218#255
+  +#255#222#217#255#255#227#218#255#255#222#220#255#255#215#222#255#255#221#235
+  +#255#255#232#243#255#255#244#255#255#255#255#253#252#255#253#254#252#255#255
+  +#254#255#255#253#255#255#255#242#245#249#255#251#254#255#255#249#253#255#255
+  +#248#252#255#255#248#252#255#255#250#255#255#255#241#242#246#255#253#255#255
+  +#255#255#255#255#255#255#253#252#255#255#252#248#255#255#255#252#255#255#255
+  +#254#0#255#255#255#255#253#255#255#255#248#250#251#255#251#254#255#255#250
+  +#255#255#255#250#254#255#255#249#253#255#255#250#254#255#255#243#247#252#255
+  +#251#254#255#255#253#255#255#255#250#250#250#255#255#254#253#255#255#255#252
+  +#255#255#254#250#255#253#253#253#255#251#251#251#255#253#255#255#255#248#250
+  +#251#255#251#254#255#255#248#252#255#255#245#248#255#255#248#254#255#255#248
+  +#254#255#255#250#254#255#255#245#248#252#255#243#245#246#255#255#255#255#255
+  +#255#255#254#0#253#250#246#255#255#255#252#255#255#255#255#255#243#245#245
+  +#255#251#253#254#255#251#254#255#255#248#252#255#255#248#254#255#255#242#248
+  +#255#255#248#254#255#255#241#247#254#255#248#254#255#255#243#247#252#255#251
+  +#254#255#255#252#254#255#255#255#255#255#255#255#255#254#0#254#251#247#255
+  +#253#255#255#255#252#254#255#255#253#254#255#255#244#247#251#255#128#132#137
+  +#255#143#149#156#255#140#145#154#255#151#158#167#255#178#184#191#255#228#234
+  +#241#255#248#252#255#255#250#253#255#255#253#255#255#255#255#255#255#255#253
+  +#251#250#255#255#253#252#255#253#255#255#255#251#255#255#255#250#253#255#255
+  +#250#254#255#255#144#150#157#255#244#250#255#255#242#249#255#255#228#235#244
+  +#255#196#202#209#255#147#153#160#255#223#227#232#255#250#255#255#255#243#244
+  +#248#255#249#251#252#255#255#255#255#255#255#253#252#255#247#250#254#255#251
+  +#254#255#255#249#252#255#255#248#252#255#255#133#139#146#255#248#254#255#255
+  +#246#253#255#255#243#250#255#255#246#253#255#255#189#195#202#255#181#185#190
+  +#255#248#253#255#255#253#254#255#255#249#251#252#255#250#250#250#255#255#255
+  +#255#255#246#249#253#255#251#254#255#255#247#251#255#255#250#254#255#255#139
+  +#145#152#255#246#252#255#255#239#246#255#255#246#253#255#255#245#252#255#255
+  +#239#247#254#255#147#150#158#255#246#251#254#255#253#254#255#255#253#255#255
+  +#255#255#255#255#255#251#251#251#255#247#250#254#255#251#254#255#255#250#254
+  +#255#255#244#248#253#255#138#144#151#255#246#252#255#255#246#253#255#255#246
+  +#253#255#255#246#253#255#255#243#251#255#255#136#139#147#255#250#255#255#255
+  +#249#250#254#255#253#255#255#255#251#251#251#255#255#255#255#255#251#254#255
+  +#255#250#253#255#255#244#247#252#255#250#254#255#255#144#150#157#255#248#254
+  +#255#255#241#248#255#255#246#253#255#255#244#251#255#255#235#241#248#255#147
+  +#151#156#255#248#253#255#255#253#254#255#255#249#251#252#255#255#255#255#255
+  +#249#249#249#255#248#250#251#255#251#255#255#255#249#252#255#255#250#254#255
+  +#255#129#135#142#255#245#251#255#255#244#251#255#255#246#253#255#255#248#254
+  +#255#255#195#201#208#255#189#193#198#255#241#246#249#255#253#254#255#255#250
+  +#252#253#255#248#248#248#255#255#255#254#0#253#255#255#255#253#255#255#255
+  +#245#246#250#255#248#251#255#255#151#155#160#255#248#254#255#255#245#250#255
+  +#255#234#241#250#255#197#203#210#255#143#149#156#255#228#232#237#255#251#254
+  +#255#255#244#246#247#255#255#255#255#255#255#255#254#0#254#252#251#255#253
+  +#253#253#255#251#253#253#255#253#255#255#255#246#249#253#255#137#141#146#255
+  +#141#147#152#255#136#142#149#255#150#156#163#255#173#179#186#255#231#237#244
+  +#255#242#246#251#255#245#248#252#255#253#255#255#255#255#255#255#255#252#250
+  ,#249#255#255#254#250#255#255#255#255#255#248#248#248#255#253#255#255#255#253
+  +#255#255#255#244#247#251#255#250#254#255#255#248#251#255#255#241#247#254#255
+  +#248#254#255#255#250#254#255#255#251#254#255#255#253#255#255#255#246#246#246
+  +#255#251#249#248#255#255#255#252#255#255#255#252#255#255#253#252#255#253#253
+  +#253#255#253#255#255#255#243#245#246#255#246#249#253#255#250#255#255#255#250
+  +#254#255#255#250#254#255#255#250#254#255#255#236#240#245#255#246#249#253#255
+  +#253#255#255#255#253#253#253#255#255#255#254#0#250#247#243#255#255#255#252
+  +#255#255#255#254#0#255#255#254#0#255#254#255#255#252#254#255#255#251#254#255
+  +#255#249#252#255#255#243#247#252#255#250#254#255#255#243#247#252#255#250#255
+  +#255#255#251#252#255#255#253#255#255#255#255#253#253#255#255#255#254#0#255
+  +#255#252#255#250#247#243#255#246#255#255#255#245#254#255#255#240#243#251#255
+  +#248#254#255#255#248#255#255#255#251#255#254#255#255#253#253#255#255#255#251
+  +#255#255#255#248#255#255#255#248#255#255#254#244#255#255#251#245#255#253#255
+  +#255#255#246#255#255#255#248#254#255#255#246#251#255#255#248#254#253#255#250
+  +#255#255#255#251#254#255#255#245#249#254#255#244#255#255#255#246#255#255#255
+  +#255#253#255#255#255#254#255#255#250#253#251#255#246#247#243#255#255#255#251
+  +#255#255#255#252#255#250#251#249#255#249#254#255#255#246#249#253#255#251#254
+  +#255#255#251#252#243#255#255#255#251#255#255#255#254#255#245#248#252#255#239
+  +#254#255#255#230#247#255#255#243#248#255#255#246#252#255#255#241#253#255#255
+  +#243#255#255#255#254#252#255#255#255#254#255#255#251#250#246#255#255#255#251
+  +#255#254#251#247#255#255#255#252#255#255#255#248#255#249#247#237#255#253#247
+  +#240#255#253#255#255#255#232#253#255#255#227#251#255#255#237#250#255#255#236
+  +#247#255#255#220#238#255#255#236#252#255#255#243#248#255#255#245#244#253#255
+  +#255#255#252#255#255#255#248#255#255#255#249#255#255#254#249#255#255#255#249
+  +#255#255#255#247#255#255#255#248#255#253#255#255#255#137#162#182#255#138#168
+  +#197#255#152#169#196#255#162#176#199#255#178#199#220#255#203#225#243#255#237
+  +#250#255#255#246#252#255#255#255#255#252#255#255#255#244#255#255#255#251#255
+  +#255#254#251#255#251#255#254#255#247#248#244#255#255#250#243#255#251#255#255
+  +#255#145#173#197#255#214#247#255#255#232#249#255#255#228#241#255#255#196#218
+  +#236#255#158#180#198#255#217#232#255#255#243#251#255#255#248#247#243#255#255
+  +#255#247#255#255#255#254#255#254#253#255#255#243#254#255#255#248#254#255#255
+  +#255#254#251#255#251#254#255#255#131#161#188#255#214#249#255#255#236#250#255
+  +#255#239#247#255#255#236#253#255#255#186#205#220#255#178#193#219#255#241#250
+  +#255#255#247#248#246#255#255#255#251#255#250#253#255#255#244#250#255#255#235
+  +#251#255#255#244#253#255#255#254#250#249#255#250#254#255#255#140#170#199#255
+  +#214#249#255#255#233#246#255#255#244#252#255#255#234#249#255#255#234#253#255
+  +#255#151#168#194#255#239#250#255#255#255#255#255#255#254#253#249#255#246#252
+  +#255#255#239#249#255#255#238#251#255#255#246#253#255#255#255#254#255#255#247
+  +#251#255#255#140#172#201#255#207#244#255#255#234#248#255#255#242#251#255#255
+  +#230#247#255#255#234#253#255#255#149#166#193#255#239#250#255#255#255#255#255
+  +#255#253#252#248#255#244#250#255#255#241#250#255#255#242#251#255#255#250#254
+  +#255#255#255#250#249#255#249#253#255#255#135#167#196#255#212#249#255#255#232
+  +#250#255#255#239#252#255#255#234#253#255#255#217#240#255#255#162#181#208#255
+  +#239#250#255#255#255#255#255#255#255#255#251#255#249#251#255#255#244#249#255
+  +#255#248#250#250#255#255#255#254#255#255#252#248#255#251#254#255#255#127#158
+  +#183#255#210#247#255#255#225#246#255#255#231#249#255#255#224#249#255#255#178
+  +#205#225#255#180#199#226#255#241#251#255#255#249#250#248#255#255#255#249#255
+  +#255#254#255#255#255#253#255#255#255#255#250#255#255#255#248#255#250#242#235
+  +#255#251#254#255#255#152#181#202#255#216#250#255#255#226#248#255#255#220#240
+  +#255#255#180#209#230#255#164#191#211#255#208#224#247#255#244#251#255#255#253
+  +#251#250#255#255#255#248#255#255#255#252#255#255#254#254#255#255#255#249#255
+  +#255#255#249#255#255#255#251#255#251#254#255#255#137#162#178#255#140#171#194
+  +#255#153#174#196#255#162#181#202#255#183#211#228#255#199#224#240#255#238#251
+  +#255#255#250#252#255#255#255#255#254#255#255#252#247#255#255#255#252#255#255
+  +#253#250#255#255#255#251#255#249#246#242#255#253#248#249#255#250#254#255#255
+  +#227#247#255#255#230#253#255#255#237#252#255#255#233#249#255#255#221#243#254
+  +#255#236#255#255#255#248#254#255#255#249#250#254#255#255#255#255#255#254#252
+  +#251#255#255#254#255#255#255#252#253#255#251#254#255#255#251#254#255#255#251
+  +#253#255#255#248#254#255#255#241#255#255#255#238#254#255#255#248#254#255#255
+  +#243#250#253#255#243#255#255#255#244#255#255#255#255#255#254#255#252#248#247
+  +#255#252#254#255#255#250#254#255#255#253#252#255#255#255#252#255#255#242#248
+  +#255#0#248#254#255#255#250#252#255#255#247#252#255#255#242#254#255#255#241
+  +#253#253#255#253#255#255#255#253#255#254#255#248#255#252#255#238#246#239#255
+  +#255#255#249#255#255#255#252#255#248#251#255#255#248#254#255#255#246#248#255
+  ,#255#251#251#255#255#253#255#243#255#255#255#248#255#252#255#253#255#252#254
+  +#255#255#250#246#251#255#254#254#254#255#252#255#251#255#250#255#249#255#248
+  +#255#251#255#247#255#251#255#251#254#255#255#252#250#255#255#255#253#255#255
+  +#254#254#254#255#245#252#245#255#248#255#248#255#255#255#247#255#255#255#251
+  +#255#248#249#253#255#251#253#255#255#251#253#255#255#251#254#255#255#251#255
+  +#255#255#251#255#254#255#255#255#255#255#255#253#255#255#255#249#255#255#255
+  +#248#255#255#255#247#255#255#255#248#255#255#255#255#254#255#254#254#248#255
+  +#255#253#255#255#251#247#252#255#251#251#255#255#179#183#201#255#181#187#206
+  +#255#184#191#208#255#184#188#199#255#194#188#199#255#255#248#255#255#203#162
+  +#183#255#219#155#185#255#227#153#187#255#230#159#192#255#218#160#185#255#255
+  +#247#255#255#255#248#255#255#255#251#255#255#249#245#255#255#185#185#203#255
+  +#184#189#210#255#180#187#212#255#179#187#210#255#185#189#208#255#198#189#209
+  +#255#215#183#208#255#218#161#192#255#239#153#193#255#246#149#193#255#247#153
+  +#194#255#233#156#190#255#207#160#182#255#255#247#255#255#254#252#255#255#252
+  +#251#255#255#190#190#206#255#183#186#207#255#181#186#211#255#178#185#210#255
+  +#179#186#206#255#187#185#205#255#205#178#204#255#210#157#190#255#240#154#196
+  +#255#248#150#194#255#245#149#190#255#233#156#190#255#212#166#188#255#255#242
+  +#255#255#251#254#255#255#251#253#255#255#186#186#202#255#185#186#207#255#183
+  +#187#212#255#183#188#213#255#182#188#211#255#193#189#214#255#213#188#216#255
+  +#207#156#190#255#236#152#194#255#249#151#195#255#246#150#191#255#234#154#189
+  +#255#205#158#180#255#255#247#255#255#245#250#253#255#249#252#255#255#184#187
+  +#202#255#187#188#208#255#186#188#212#255#181#185#210#255#182#186#211#255#188
+  +#181#208#255#205#179#209#255#208#157#191#255#232#148#190#255#253#155#199#255
+  +#248#151#191#255#234#153#186#255#223#169#192#255#255#242#255#255#242#250#250
+  +#255#248#254#255#255#187#191#202#255#185#187#205#255#187#188#209#255#183#183
+  +#207#255#188#190#214#255#187#183#208#255#202#183#210#255#203#162#194#255#225
+  +#158#195#255#232#151#190#255#235#155#190#255#222#155#182#255#208#164#181#255
+  +#255#248#255#255#246#253#250#255#248#253#254#255#250#253#255#255#185#187#198
+  +#255#189#189#205#255#190#190#208#255#202#203#223#255#203#204#224#255#207#201
+  +#224#255#217#201#225#255#232#199#226#255#206#163#190#255#203#159#182#255#202
+  +#166#183#255#255#249#255#255#255#252#255#255#249#255#251#255#250#255#254#255
+  +#249#252#255#255#251#253#255#255#248#246#255#255#208#208#222#255#203#203#219
+  +#255#203#206#221#255#203#205#223#255#209#207#226#255#209#199#216#255#221#203
+  +#220#255#255#248#255#255#255#249#255#255#255#253#255#255#253#253#253#255#244
+  +#252#245#255#248#255#250#255#250#255#254#255#253#254#255#255#255#253#255#255
+  +#208#204#215#255#209#207#219#255#207#208#222#255#201#207#220#255#205#211#224
+  +#255#208#210#221#255#207#204#213#255#255#252#255#255#255#253#255#255#255#251
+  +#250#255#255#255#252#255#253#255#252#255#248#254#249#255#249#254#253#255#251
+  +#255#255#255#255#253#255#255#210#207#216#255#208#204#216#255#207#207#219#255
+  +#204#207#221#255#196#202#213#255#201#206#215#255#210#212#220#255#255#252#255
+  +#255#255#254#255#255#255#253#252#255#254#253#249#255#253#248#250#255#255#254
+  +#255#255#253#254#255#255#248#252#255#255#249#251#255#255#204#204#216#255#209
+  +#209#223#255#203#203#217#255#203#203#219#255#207#207#221#255#213#211#223#255
+  +#209#203#214#255#255#252#255#255#255#250#255#255#255#254#255#255#251#251#251
+  +#255#255#253#255#255#252#247#249#255#253#254#255#255#251#254#255#255#250#253
+  +#255#255#210#212#222#255#202#202#214#255#210#210#224#255#209#210#224#255#208
+  +#208#220#255#206#202#213#255#213#208#217#255#255#250#255#255#254#249#251#255
+  +#255#254#254#255#255#255#255#255#255#253#252#255#253#251#250#255#254#254#254
+  +#255#253#255#255#255#252#251#255#255#250#250#255#255#209#208#217#255#204#206
+  +#214#255#199#207#214#255#199#207#214#255#204#209#212#255#253#255#255#255#255
+  +#253#253#255#255#255#254#255#242#243#239#255#253#255#252#255#255#254#250#0
+  +#255#255#252#255#255#255#254#255#253#254#252#255#255#254#255#255#255#254#255
+  +#255#252#250#255#255#250#254#255#255#244#253#255#255#244#255#255#255#246#255
+  +#255#255#247#254#251#255#252#253#251#255#255#255#252#255#253#255#249#255#245
+  +#249#243#255#252#248#253#255#255#253#255#255#255#250#255#255#255#253#255#255
+  +#250#245#247#255#255#254#255#255#255#255#254#255#255#254#253#255#253#255#255
+  +#255#249#254#255#255#252#254#254#255#253#255#255#255#253#255#255#255#249#251
+  +#251#255#255#255#251#255#252#255#246#255#255#255#255#255#255#254#253#255#255
+  +#254#250#255#255#247#240#255#255#255#245#255#255#255#242#255#255#255#241#255
+  +#255#255#241#255#255#255#239#255#255#255#235#255#253#255#230#255#249#255#225
+  +#255#251#255#224#255#253#255#230#255#254#255#239#255#255#255#242#255#249#255
+  +#250#255#255#255#243#255#255#255#237#255'V:'#24#255'U7'#14#255'Y8'#11#255'^='
+  +#12#255'W@'#8#255#255#255#203#255#129#149'<'#255'n'#152'#'#255'n'#160#28#255
+  +'t'#166' '#255'm'#148'&'#255#255#255#216#255#255#255#233#255#249#255#249#255
+  ,#253#249#231#255'T:'#21#255'b:'#9#255'b:'#0#255'h?'#0#255'k@'#1#255'Y<'#0#255
+  +'RP'#0#255#127#152' '#255't'#168#14#255'm'#174#0#255'k'#172#0#255'r'#169#20
+  +#255't'#145'<'#255#255#255#219#255#255#254#255#255#255#255#242#255'V3'#7#255
+  +'l@'#3#255'g?'#0#255'f?'#0#255'g>'#0#255'bG'#0#255'OM'#0#255#129#153#27#255
+  +'x'#170#16#255'k'#170#0#255'o'#175#2#255'n'#166#17#255'o'#150'4'#255#247#255
+  +#204#255#255#253#255#255#255#255#245#255'`9'#12#255'k;'#0#255'm@'#0#255'mB'#0
+  +#255'e:'#0#255'^A'#0#255'UQ'#0#255#130#153#25#255'v'#167#9#255's'#179#6#255
+  +'m'#175#4#255'k'#165#16#255'p'#154'/'#255#250#255#199#255#245#247#255#255#255
+  +#253#245#255'`9'#18#255'o;'#0#255'u?'#0#255'p<'#0#255'o<'#0#255'hE'#0#255'SM'
+  +#0#255#137#158#31#255'v'#167#5#255'l'#174#0#255'i'#174#0#255'm'#167#18#255'p'
+  +#151'*'#255#255#255#198#255#243#249#254#255#255#255#249#255'X7'#22#255'i:'#7
+  +#255'n<'#0#255'p?'#0#255'mE'#0#255'bI'#0#255'WR'#0#255#138#157#18#255#128#169
+  +#0#255'z'#176#3#255'k'#168#12#255'j'#157#29#255'v'#148';'#255#255#255#209#255
+  +#247#253#252#255#255#255#247#255#255#255#238#255'W7'#19#255'\;'#3#255'aH'#0
+  +#255#166#154#30#255#163#163#15#255#160#166#11#255#152#167#5#255#150#176#4#255
+  +#135#168#10#255'q'#153'"'#255'l'#144'>'#255#251#255#224#255#251#255#233#255
+  +#247#252#251#255#255#255#252#255#255#255#247#255#255#255#233#255#255#255#213
+  +#255#152#145'0'#255#162#171#21#255#160#175#0#255#162#177#2#255#165#181#4#255
+  +#153#171#0#255#148#167#20#255#255#255#196#255#249#255#226#255#249#255#242#255
+  +#252#255#250#255#246#249#255#255#253#254#255#255#255#255#252#255#255#255#235
+  +#255#255#255#212#255#147#154'1'#255#147#165#12#255#150#172#0#255#151#169#0
+  +#255#160#176#0#255#160#174#0#255#146#161#23#255#255#255#217#255#251#255#247
+  +#255#253#255#252#255#253#253#253#255#250#253#255#255#249#252#255#255#249#251
+  +#251#255#255#255#240#255#255#255#212#255#136#149')'#255#150#171#15#255#158
+  +#180#2#255#163#179#2#255#157#170#0#255#165#179#1#255#152#163#29#255#255#255
+  +#224#255#251#255#255#255#254#251#253#255#254#252#252#255#246#251#252#255#250
+  +#255#255#255#251#255#254#255#255#255#238#255#255#255#210#255#146#154'/'#255
+  +#154#165#15#255#159#171#0#255#164#173#2#255#160#173#0#255#155#171#0#255#146
+  +#161#26#255#255#255#224#255#250#253#251#255#255#253#252#255#255#253#252#255
+  +#253#255#255#255#243#248#246#255#250#255#251#255#255#255#241#255#255#255#216
+  +#255#141#146'='#255#157#161'#'#255#158#164#17#255#154#162#15#255#156#168#20
+  +#255#150#166#18#255#142#158'.'#255#255#255#225#255#247#247#247#255#255#255
+  +#254#255#255#255#252#255#255#251#253#255#255#253#253#255#253#255#252#255#250
+  +#255#245#255#255#255#242#255#255#255#224#255#138#138'6'#255#150#154'1'#255
+  +#142#151'/'#255#141#153'5'#255#135#151'9'#255#255#255#205#255#255#255#241#255
+  +#253#255#255#255#252#246#247#255#255#250#250#255#255#252#255#0#255#254#255
+  +#255#251#255#250#255#253#255#251#255#254#255#253#255#255#255#240#255#255#255
+  +#210#255#255#255#198#255#255#255#198#255#255#255#203#255#255#255#207#255#255
+  +#255#224#255#248#255#245#255#253#254#255#255#255#250#253#255#255#244#246#255
+  +#251#251#255#255#248#250#255#255#244#249#255#255#244#255#255#255#244#255#255
+  +#255#244#255#254#255#248#255#255#255#251#255#255#255#255#254#249#255#255#254
+  +#255#255#255#243#255#255#255#243#255#255#255#254#255#255#255#255#254#255#239
+  +#242#250#255#248#252#255#255#245#254#255#255#243#252#255#255#243#247#255#255
+  +#243#246#255#255#239#246#255#255#231#238#255#255#246#251#255#255#242#246#251
+  +#255#251#253#247#255#253#250#246#255#255#251#255#255#255#251#255#255#255#255
+  +#252#255#248#250#244#255#243#246#250#255#250#253#255#255#231#255#246#255#233
+  +#252#255#255#229#231#255#255#236#229#255#255#237#230#255#255#239#235#255#255
+  +#235#234#255#255#246#250#255#255#250#255#252#255#253#255#245#255#249#251#245
+  +#255#253#255#249#255#250#255#240#255#255#255#247#255#253#255#251#255#242#245
+  +#243#255#234#255#255#255#217#231#255#255'=7'#137#255'.'#29#132#255'2%{'#255
+  +'B7{'#255'QLy'#255#233#233#255#255#247#254#255#255#245#252#247#255#247#253
+  +#252#255#251#255#255#255#242#248#243#255#253#255#252#255#245#246#250#255#255
+  +#252#255#255#243#242#255#255#184#177#234#255't^'#182#255#251#228#255#255#255
+  +#241#255#255#255#248#255#255#255#249#255#255#253#250#255#255#250#249#255#255
+  +#248#248#255#255#244#246#255#255#232#234#255#255#246#249#255#255#246#246#255
+  +#255#247#240#255#255#253#242#255#255#232#233#255#255#131'}'#206#255#161#139
+  +#245#255#248#224#255#255#253#238#255#255#252#244#255#255#254#249#255#255#251
+  +#250#255#255#236#239#255#255'}~'#170#255#129#128#190#255#237#235#255#255#236
+  +#234#255#255#199#194#239#255'\R}'#255#236#224#255#255#207#234#255#255'CS'#183
+  +#255#179#171#255#255#225#206#255#255#237#220#255#255#232#222#255#255#241#243
+  +#255#255#235#245#255#255#228#245#255#255#217#230#255#255'10'#144#255#200#191
+  +#255#255#208#200#255#255'PI'#134#255#231#224#255#255#253#247#255#255#201#228
+  +#255#255#27'-'#146#255'&%'#163#255'('#29#156#255'9*'#147#255':0|'#255#216#218
+  +#255#255#236#250#255#255#228#249#255#255#223#237#255#255'jg'#226#255'dX'#224
+  ,#255'JA'#169#255#195#191#255#255#247#242#255#255#253#252#255#255#180#184#255
+  +#255'QS'#167#255#235#235#255#255#244#242#255#255#248#242#255#255#249#243#255
+  +#255#250#250#255#255#244#251#255#255#234#250#255#255#227#237#255#255'pf'#239
+  +#255' '#18#166#255#164#161#255#255#230#231#255#255#239#241#255#255#247#248
+  +#255#255#145#135#255#255#135#130#229#255#235#239#255#255#243#248#255#255#251
+  +#250#255#255#250#247#255#255#250#251#255#255#235#239#255#255#227#233#255#255
+  +'di'#180#255'mk'#220#255'ea'#216#255'^\'#188#255#234#235#255#255#241#244#255
+  +#255#244#250#255#255']S'#255#255#135#131#255#255#221#227#255#255#222#231#255
+  +#255#229#231#255#255#227#231#255#255#237#246#255#255#228#233#255#255'jh'#194
+  +#255'op'#202#255#225#244#255#255#209#225#255#255'@9'#154#255#206#195#255#255
+  +#238#237#255#255#244#251#255#255'0('#195#255'*%'#168#255'*3'#131#255'2=v'#255
+  +'26q'#255#129#131#185#255#219#225#255#255'be'#152#255#129'{'#210#255#229#228
+  +#255#255#230#252#255#255#231#253#255#255#133#127#198#255#136'~'#203#255#245
+  +#246#255#255#246#255#255#255#243#237#255#255#237#236#255#255#241#251#255#255
+  +#246#255#255#255#248#249#255#255#247#242#255#255#245#240#255#255#248#245#255
+  +#255#244#240#255#255#245#248#255#255#246#255#254#255#244#255#251#255#246#251
+  +#255#255#234#240#255#255#246#254#255#255#241#253#253#255#249#246#255#255#255
+  +#255#254#255#253#255#240#255#253#255#241#255#253#254#255#255#247#244#255#255
+  +#255#248#255#255#249#243#255#255#255#254#255#255#255#255#252#255#255#255#249
+  +#255#250#254#243#255#250#255#248#255#250#255#251#255#248#255#255#255#238#248
+  +#248#255#255#254#255#255#250#252#252#255#251#255#251#255#241#248#243#255#249
+  +#253#255#255#250#252#255#255#246#245#254#255#255#254#255#255#255#255#252#255
+  +#255#255#251#255#255#255#251#255#255#255#252#255#255#253#252#255#250#249#251
+  +#255#243#246#251#255#250#253#255#255#253#252#254#0#253#255#255#255#251#255
+  +#255#255#248#255#255#255#248#254#255#255#245#251#255#255#251#255#255#255#253
+  +#254#252#255#255#255#248#255#255#255#249#255#255#247#243#255#255#250#250#255
+  +#255#253#255#255#255#252#255#255#253#252#255#255#244#245#255#255#255#248#253
+  +#255#255#253#255#255#228#250#248#255#232#255#255#255#252#253#255#255#255#254
+  +#255#255#255#247#244#255#255#253#247#255#255#254#249#255#255#246#241#255#255
+  +#253#251#255#255#255#251#255#255#255#246#255#255#254#254#255#255#246#255#255
+  +#253#239#255#255#255#244#255#255#255#242#255#255#255#247#255#255#255#246#255
+  +#255#255#236#255#255#255#244#255#255#255#245#255#255#255#249#255#255#255#248
+  +#251#255#255#254#254#255#255#255#255#255#247#248#244#255#255#255#248#255#255
+  +#255#252#255#255#248#255#255#255#247#255#255#255#217#255#255#255#228#255#255
+  +#255#224#255#255#255#218#255#255#255#227#255#255#255#230#255#255#255#227#255
+  +#255#255#238#255#255#253#247#255#255#244#254#255#255#238#250#255#255#244#255
+  +#255#255#253#255#251#255#245#249#238#255#250#254#249#255#251#255#254#255#255
+  +#220#255#255#163'D'#159#255#157','#154#255#165'9'#156#255#150'G'#138#255#140
+  +'N'#130#255#131'N'#135#255#255#237#255#255#255#246#255#255#237#237#253#255
+  +#248#249#255#255#249#247#255#255#255#252#255#255#255#252#255#255#255#245#255
+  +#255#255#248#255#255#255#212#255#255#152','#156#255#183';'#182#255#255#215
+  +#255#255#255#228#255#255#255#251#255#255#255#246#255#255#255#239#255#255#255
+  +#244#255#255#255#243#255#255#255#235#255#255#255#228#255#255#255#239#255#255
+  +#255#237#255#255#255#227#255#255#255#225#255#255#255#202#255#255#172'+'#178
+  +#255#177'#'#178#255#255#208#255#255#255#234#255#255#255#247#255#255#255#240
+  +#255#255#255#242#255#255#255#238#255#255#147'O'#132#255#150'5'#149#255#255
+  +#209#255#255#255#205#255#255#153'?'#163#255#159'='#157#255#157'8'#148#255#255
+  +#184#255#255#199'%'#202#255#194#24#197#255#255#189#255#255#255#201#255#255
+  +#255#207#255#255#255#226#255#255#255#223#255#255#255#232#255#255#157'<'#147
+  +#255#195#28#201#255#201#3#215#255#205#15#226#255#195'"'#210#255#156'+'#153
+  +#255#255#222#255#255#213#23#212#255#203#27#204#255#182#31#188#255#172'+'#182
+  +#255#161'6'#180#255#141'8'#160#255#135'H'#146#255#255#227#255#255#255#223#255
+  +#255#255#196#255#255#225#17#231#255#234#1#253#255#206#0#235#255#191#27#212
+  +#255#255#214#255#255#255#228#255#255#229#7#227#255#207#31#208#255#255#210#255
+  +#255#255#236#255#255#255#238#255#255#255#240#255#255#255#244#255#255#255#234
+  +#255#255#255#211#255#255#212'#'#192#255#231#12#233#255#209#0#231#255#180#29
+  +#216#255#255#205#255#255#255#227#255#255#255#241#255#255#232#0#229#255#213#30
+  +#212#255#255#221#255#255#255#241#255#255#255#243#255#255#250#221#255#255#255
+  +#235#255#255#255#219#255#255#194'%'#171#255#215#24#199#255#220#22#224#255#200
+  +#21#220#255#167' '#200#255#255#210#255#255#255#230#255#255#255#250#252#255
+  +#241#7#239#255#218#17#214#255#255#203#255#255#255#219#255#255#255#217#255#255
+  +#255#214#255#255#255#199#255#255#192#28#190#255#213#24#205#255#207#28#203#255
+  +#172#31#182#255#177'+'#195#255#183#21#203#255#166#30#178#255#255#233#255#255
+  +#255#241#243#255#200#26#204#255#183#30#183#255#173'7'#160#255#152'<'#143#255
+  ,#148'B'#155#255#145'4'#157#255#165'&'#171#255#187')'#189#255#197'-'#194#255
+  +#172'&'#168#255#255#215#255#255#255#205#255#255#184'-'#196#255#170'0'#180#255
+  +#255#234#255#255#255#253#255#255#255#227#255#255#255#232#255#255#255#237#255
+  +#255#255#245#255#255#255#231#255#255#255#237#255#255#255#242#255#255#255#239
+  +#255#255#255#232#255#255#255#236#255#255#255#236#255#255#255#232#255#255#255
+  +#219#255#255#255#229#255#255#255#245#255#255#244#247#255#255#247#251#255#255
+  +#248#252#255#255#254#255#250#255#255#255#254#255#255#243#255#255#249#244#255
+  +#255#244#255#249#255#244#255#244#255#255#255#247#255#255#247#245#255#255#244
+  +#254#255#255#239#255#255#255#245#255#255#246#241#255#255#250#252#255#255#244
+  +#253#255#255#250#255#254#255#252#255#253#255#255#254#254#255#255#251#255#255
+  +#255#248#255#255#251#248#255#255#248#251#255#255#245#250#248#255#246#253#250
+  +#255#253#254#252#255#255#252#255#255#255#252#255#255#240#246#251#255#244#255
+  +#255#255#251#255#249#255#251#255#243#255#250#255#248#0#255#255#251#255#255
+  +#253#255#255#255#244#255#255#255#249#255#255#251#249#255#255#254#250#255#255
+  +#253#254#255#255#248#255#255#255#248#255#255#255#250#247#249#255#253#255#255
+  +#255#241#255#254#255#235#255#245#255#252#255#243#255#255#255#241#255#250#255
+  +#255#0#250#255#255#0#242#247#246#255#251#255#254#255#243#246#244#255#253#255
+  +#251#255#253#255#251#255#246#251#242#255#253#255#249#255#244#249#240#255#253
+  +#255#252#255#253#255#252#255#251#255#255#255#251#255#255#255#245#250#251#255
+  +#250#255#255#0#241#243#253#255#250#253#255#255#251#253#255#255#238#241#246
+  +#255#253#254#255#255#245#247#248#255#253#255#255#255#253#255#255#255#248#250
+  +#250#255#253#255#255#255#236#238#239#255#252#253#255#255#248#251#255#255#246
+  +#248#255#255#250#252#255#255#249#251#255#255#250#247#255#255#250#247#255#255
+  +#249#245#255#255#251#248#255#255#251#246#255#255#253#249#255#255#252#249#255
+  +#255#248#245#255#255#251#248#255#255#249#246#255#255#253#249#255#255#249#244
+  +#255#255#251#248#255#255#251#248#255#255#250#247#255#255#249#246#255#255#145
+  +#141#170#255#138#135#161#255#141#136#163#255#150#146#171#255#140#134#157#255
+  +#147#142#163#255#141#136#157#255#152#147#168#255#149#144#165#255#147#142#163
+  +#255#150#144#167#255#150#144#167#255#140#136#161#255#139#134#161#255#137#133
+  +#162#255#140#136#165#255#141#141#159#255#250#250#255#255#249#247#255#255#245
+  +#244#255#255#250#247#255#255#253#251#255#255#253#251#255#255#248#247#255#255
+  +#248#247#255#255#252#251#255#255#252#250#255#255#248#245#255#255#251#250#255
+  +#255#251#250#255#255#147#147#165#255#139#139#157#255#141#142#156#255#250#251
+  +#255#255#251#251#255#255#251#252#255#255#252#251#255#255#253#252#255#255#253
+  +#253#255#255#249#249#255#255#253#253#255#255#253#253#255#255#249#248#255#255
+  +#253#252#255#255#251#251#255#255#242#242#254#255#250#251#255#255#137#138#152
+  +#255#144#145#159#255#250#251#255#255'\\h'#255#246#247#255#255'wv'#128#255'ba'
+  +'j'#255'ppv'#255'vv|'#255'llr'#255'mms'#255'nmv'#255'lkt'#255#248#248#255#255
+  +#251#251#255#255#250#251#255#255#139#140#154#255#139#140#154#255#250#251#255
+  +#255#251#251#255#255#249#250#255#255#253#252#255#255#253#252#255#255#246#246
+  +#252#255#253#253#255#255#253#253#255#255#250#250#255#255#253#252#255#255#251
+  +#250#255#255#251#251#255#255#249#249#255#255#248#249#255#255#145#146#160#255
+  +#150#151#165#255#242#243#255#255'nnz'#255#251#252#255#255'poy'#255'jir'#255
+  +'qqw'#255'nnt'#255'ppv'#255'eek'#255'sr{'#255'qpy'#255#250#250#255#255#247
+  +#247#255#255#250#251#255#255#138#139#153#255#131#132#146#255#250#251#255#255
+  +#251#251#255#255#244#245#255#255#253#252#255#255#253#252#255#255#251#251#255
+  +#255#253#253#255#255#252#252#255#255#253#253#255#255#253#252#255#255#239#238
+  +#247#255#251#251#255#255#251#251#255#255#248#249#255#255#148#149#163#255#141
+  +#142#156#255#250#251#255#255#251#251#255#255'jku'#255'lku'#255#253#252#255
+  +#255'eek'#255'llr'#255#248#248#254#255#253#253#255#255#253#252#255#255#253
+  +#252#255#255#247#247#255#255#251#251#255#255#245#246#255#255#143#144#158#255
+  +#147#147#165#255#243#243#255#255#251#249#255#255#244#243#255#255#253#250#255
+  +#255#253#251#255#255#251#249#255#255#253#252#255#255#253#252#255#255#248#247
+  +#255#255#251#249#255#255#249#246#255#255#251#250#255#255#250#249#255#255#241
+  +#241#255#255#150#150#168#255#137#133#162#255#154#151#177#255#140#135#162#255
+  +#154#150#175#255#141#135#158#255#141#136#157#255#154#149#170#255#141#136#157
+  +#255#143#138#159#255#147#142#163#255#155#149#172#255#143#137#160#255#150#146
+  +#171#255#139#134#161#255#158#154#183#255#131#127#156#255#250#247#255#255#242
+  +#239#255#255#251#247#255#255#248#245#255#255#253#248#255#255#249#245#255#255
+  +#251#248#255#255#249#246#255#255#248#245#255#255#253#250#255#255#250#246#255
+  +#255#250#245#255#255#251#248#255#255#245#242#255#255#250#247#255#255#250#247
+  +#255#255#250#252#255#255#248#251#255#255#251#253#255#255#248#251#255#255#253
+  +#254#255#255#253#255#255#255#251#253#253#255#253#255#255#255#253#255#255#255
+  +#253#255#255#255#246#248#249#255#253#254#255#255#251#254#255#255#251#253#255
+  ,#255#248#250#255#255#244#246#255#255#250#255#255#0#246#251#252#255#251#255
+  +#255#255#250#255#253#255#253#255#254#255#250#254#248#255#247#251#245#255#253
+  +#255#249#255#250#255#246#255#253#255#249#255#253#255#252#255#253#255#252#255
+  +#248#253#252#255#244#249#248#255#250#255#255#0#250#255#255#0#255#255#252#255
+  +#253#254#250#255#255#255#252#255#254#255#251#255#255#255#252#255#252#253#249
+  +#0#255#255#252#255#252#253#249#0#255#255#252#255#247#248#244#255#255#255#252
+  +#255#253#254#250#255#254#255#251#255#255#255#252#255#255#255#252#255#251#252
+  +#248#255#248#249#245#255#255#255#252#255#255#255#252#255#249#250#246#255#255
+  +#255#252#255#255#255#252#255#247#248#244#255#255#255#252#255#250#251#247#255
+  +#255#255#252#255#255#255#252#255#254#255#251#255#250#251#247#255#255#255#252
+  +#255#249#250#246#255#255#255#252#255#255#255#251#255#246#248#242#255#255#255
+  +#251#255#254#255#250#255#253#255#249#255#255#255#251#255#255#255#251#255#249
+  +#251#245#255#255#255#251#255#247#249#243#255#253#255#249#255#252#254#248#255
+  +#255#255#251#255#255#255#251#255#253#255#249#255#255#255#251#255'|~x'#255'np'
+  +'j'#255'{}w'#255#128#130'|'#255'qsm'#255'wys'#255'vxr'#255'z|v'#255#128#130
+  +'|'#255'}'#127'y'#255'jlf'#255#128#130'|'#255'vxr'#255'qsm'#255'uwq'#255'uwq'
+  +#255'}'#128'w'#255#251#254#245#255#252#255#246#255#247#250#241#255#255#255
+  +#249#255#255#255#249#255#255#255#249#255#255#255#249#255#252#255#246#255#255
+  +#255#249#255#255#255#249#255#255#255#249#255#249#252#243#255#255#255#249#255
+  +'~'#129'x'#255'z}t'#255'wzq'#255#255#255#249#255#255#255#249#255#255#255#249
+  +#255#255#255#249#255#252#255#246#255#250#253#244#255#251#254#245#255#255#255
+  +#249#255#255#255#249#255#249#252#243#255#254#255#248#255#255#255#249#255#249
+  +#252#243#255#252#255#246#255'twn'#255'uxo'#255#255#255#249#255'EH?'#255#246
+  +#249#240#255'PSJ'#255'JMD'#255'FI@'#255'QTK'#255'GJA'#255'UXO'#255'@C:'#255
+  +'RUL'#255#247#250#241#255#253#255#247#255#255#255#249#255'vyp'#255#128#131'z'
+  +#255#249#252#243#255#255#255#249#255#255#255#249#255#255#255#249#255#252#255
+  +#246#255#255#255#249#255#251#254#245#255#254#255#248#255#247#250#241#255#255
+  +#255#249#255#248#251#242#255#255#255#249#255#254#255#248#255#246#249#240#255
+  +'{~u'#255'{~u'#255#249#252#243#255'MPG'#255#254#255#248#255'FI@'#255'JMD'#255
+  +'NQH'#255'FI@'#255'KNE'#255'QTK'#255'KNE'#255'DG>'#255#255#255#249#255#255
+  +#255#249#255#255#255#249#255'twn'#255'vyp'#255#255#255#249#255#247#250#241
+  +#255#255#255#249#255#255#255#249#255#255#255#249#255#248#251#242#255#255#255
+  +#249#255#248#251#242#255#254#255#248#255#252#255#246#255#255#255#249#255#255
+  +#255#249#255#255#255#249#255#249#252#243#255#128#131'z'#255'wzq'#255#254#255
+  +#248#255#255#255#249#255'TWN'#255'MPG'#255#250#253#244#255'ORI'#255'BE<'#255
+  +#255#255#249#255#252#255#246#255#255#255#249#255#255#255#249#255#239#242#233
+  +#255#255#255#249#255#255#255#249#255'psj'#255'~'#129'x'#255#250#253#244#255
+  +#246#249#240#255#245#248#239#255#255#255#249#255#245#248#239#255#255#255#249
+  +#255#252#255#246#255#248#251#242#255#247#250#241#255#255#255#249#255#245#248
+  +#239#255#255#255#249#255#255#255#249#255#246#249#240#255'~'#129'x'#255'xzt'
+  +#255'wys'#255#135#137#131#255'~'#128'z'#255'kmg'#255#131#133#127#255'oqk'#255
+  +'xzt'#255'{}w'#255#130#132'~'#255'uwq'#255'prl'#255'{}w'#255'vxr'#255'z|v'
+  +#255'vxr'#255#251#253#247#255#255#255#251#255#253#255#249#255#254#255#250#255
+  +#252#254#248#255#255#255#251#255#255#255#251#255#249#251#245#255#253#255#249
+  +#255#255#255#251#255#254#255#250#255#255#255#251#255#255#255#251#255#255#255
+  +#251#255#253#255#249#255#255#255#251#255#255#255#252#255#255#255#252#255#242
+  +#243#239#255#255#255#252#255#255#255#252#255#250#251#247#255#250#251#247#255
+  +#255#255#252#255#255#255#252#255#250#251#247#255#255#255#252#255#249#250#246
+  +#255#247#248#244#255#250#251#247#255#255#255#252#255#253#254#250#255#252#253
+  +#249#0#255#255#252#255#255#255#252#255#252#253#249#0#255#255#252#255#252#253
+  +#249#0#255#255#252#255#251#252#248#255#255#255#252#255#247#248#244#255#255
+  +#255#252#255#255#255#252#255#254#255#251#255#255#255#252#255#253#254#250#255
+  +#255#255#252#255#255#254#255#0#251#250#252#255#0#0#0#255#6#6#6#255#2#0#0#255
+  +#2#0#0#255#6#5#1#255#2#1#0#255#4#3#0#255#2#1#0#255#0#1#0#255#254#255#253#255
+  +#249#251#251#255#253#255#255#255#249#253#254#255#251#255#255#255#249#248#250
+  +#255#12#11#13#255#0#0#0#255#145#145#145#255#143#141#140#255#146#144#143#255
+  +#149#148#144#255#148#147#143#255#145#144#140#255#147#146#142#255#154#152#151
+  +#255#6#7#5#255#255#255#255#255#246#248#248#255#253#255#255#255#242#246#247
+  +#255#255#252#254#255#2#0#1#255#155#153#153#255#2#0#0#255#15#11#10#255#9#5#4
+  +#255#4#1#0#255#4#1#0#255#8#5#1#255#2#1#0#255#2#0#0#255#0#1#0#255#3#3#3#255
+  +#253#255#255#255#246#248#249#255#253#255#255#255#2#0#1#255#153#150#152#255
+  +#141#139#139#255#2#0#0#255#198#194#193#255#200#196#195#255#194#191#187#255
+  +#211#208#204#255#203#200#196#255#203#200#196#255#199#195#194#255#209#207#206
+  +#255#2#0#0#255#252#252#252#255#252#251#253#255#252#254#255#255#8#5#7#255#2#0
+  ,#1#255#149#144#145#255#10#5#6#255#209#204#203#255'=87'#255'<74'#255'<74'#255
+  +'50-'#255'@=9'#255'A=<'#255#187#185#184#255#8#6#6#255#2#2#2#255#255#254#255#0
+  +#255#254#255#0#2#0#1#255#149#146#148#255#9#4#5#255#198#193#194#255#199#194
+  +#193#255#199#194#193#255#209#204#201#255#201#196#193#255#209#204#201#255#195
+  +#190#187#255#209#205#204#255#205#201#200#255#197#195#195#255#2#0#0#255#247
+  +#246#248#255#251#250#252#255#18#13#15#255#145#140#142#255#6#0#1#255#193#187
+  +#188#255'B=<'#255'@;:'#255'4-*'#255'@96'#255'>96'#255'4/,'#255'954'#255';76'
+  +#255#194#192#192#255#5#3#3#255#255#254#255#0#253#252#254#255#4#0#1#255#153
+  +#148#150#255#5#0#0#255#207#201#202#255#201#196#195#255#199#194#193#255#215
+  +#208#205#255#203#196#193#255#194#189#186#255#217#212#209#255#197#193#192#255
+  +#200#196#195#255#205#203#203#255#2#0#0#255#254#253#255#255#255#254#255#0#4#0
+  +#1#255#146#141#143#255#11#5#6#255#197#191#192#255':54'#255'<76'#255'C<9'#255
+  +'<52'#255'<74'#255'941'#255'<87'#255'621'#255#195#193#193#255#2#0#0#255#255
+  +#254#255#0#255#254#255#0#8#3#5#255#143#138#140#255#7#1#2#255#203#197#198#255
+  +#213#208#207#255#204#199#198#255#189#182#179#255#208#201#198#255#202#197#194
+  +#255#213#208#205#255#199#195#194#255#204#200#199#255#204#202#202#255#6#4#4
+  +#255#255#254#255#0#247#246#248#255#7#4#6#255#152#149#151#255#4#0#0#255#201
+  +#196#197#255'721'#255'D?>'#255'<74'#255';63'#255'<74'#255'4/,'#255'843'#255
+  +'B>='#255#199#197#197#255#2#0#0#255#253#252#254#255#255#254#255#0#2#0#1#255
+  +#147#144#146#255#5#0#1#255#213#208#209#255#197#192#191#255#192#187#186#255
+  +#212#207#204#255#199#194#191#255#204#199#196#255#205#202#198#255#208#204#203
+  +#255#199#197#196#255#195#193#193#255#9#9#9#255#255#254#255#0#254#253#255#255
+  +#3#0#2#255#158#155#157#255#2#0#0#255#201#199#199#255':65'#255'954'#255'DA='
+  +#255':73'#255'52.'#255'>;7'#255'1-,'#255'<:9'#255#204#202#202#255#0#0#0#255
+  +#249#248#250#255#252#254#255#255#255#254#255#0#2#0#1#255#7#5#5#255#199#197
+  +#197#255#199#195#194#255#212#208#207#255#193#190#186#255#204#201#197#255#201
+  +#198#194#255#212#211#207#255#197#195#194#255#193#194#192#255#203#203#203#255
+  +#0#0#0#255#253#255#255#255#253#255#255#255#249#248#250#255#255#254#255#0#0#0
+  +#0#255#0#0#0#255#18#16#15#255#2#0#0#255#4#3#0#255#3#2#0#255#2#1#0#255#2#1#0
+  +#255#3#1#0#255#0#1#0#255#0#0#0#255#7#9#9#255#251#253#254#255#243#247#248#255
+  +#255#254#255#0#253#252#254#255#255#255#255#255#255#255#255#255#250#248#247
+  +#255#255#253#252#255#255#255#252#255#254#253#249#255#255#255#252#255#253#252
+  +#248#255#255#255#254#255#249#250#248#255#253#255#255#255#249#251#251#255#250
+  +#254#255#255#251#255#255#255#247#255#240#255#235#245#228#255#9#15#0#255#0#6#0
+  +#255#10#13#0#255#11#14#0#255#17#15#4#255#7#5#0#255#16#14#4#255#4#3#0#255#12
+  +#10#2#255#254#255#246#255#251#252#248#255#253#255#252#255#247#251#246#255#249
+  +#255#250#255#244#254#238#255#11#18#3#255#0#5#0#255'OTE'#255']bS'#255'MRC'#255
+  +'Z]N'#255'RTH'#255'TVJ'#255'Z[Q'#255'TWN'#255#12#14#8#255#249#250#246#255#246
+  +#250#245#255#253#255#254#255#245#250#248#255#242#249#236#255#3#10#0#255'PWJ'
+  +#255#0#9#0#255#0#10#0#255#6#18#0#255#0#7#0#255#0#8#0#255#0#6#0#255#0#5#0#255
+  +#0#5#0#255#0#3#0#255#0#2#0#255#250#253#251#255#253#255#255#255#252#254#254
+  +#255#7#10#1#255'TZO'#255'ENA'#255#2#15#0#255#218#234#216#255#220#241#219#255
+  +#230#251#229#255#220#243#221#255#224#246#227#255#220#242#224#255#231#248#234
+  +#255#223#237#226#255#0#8#2#255#251#255#255#255#244#246#247#255#242#244#245
+  +#255#4#4#0#255#2#7#0#255'\fZ'#255#0#7#0#255#219#245#222#255'u'#147'z'#255'|'
+  +#159#132#255'y'#159#129#255'p'#150'z'#255't'#151'}'#255'{'#151#132#255#205
+  +#228#214#255#0#13#7#255#0#1#0#255#249#250#254#255#255#254#255#255#7#6#2#255
+  +'TVP'#255#0#5#0#255#223#245#227#255#222#252#227#255#212#253#222#255#189#237
+  +#201#255#197#248#211#255#209#255#223#255#197#244#212#255#214#253#227#255#214
+  +#244#225#255#222#239#230#255#6#15#12#255#255#254#255#255#236#232#238#255#8#5
+  +#1#255'OQK'#255#1#14#0#255#215#240#220#255'm'#147'w'#255'v'#166#130#255'g'
+  +#161'x'#255'h'#167'{'#255'f'#165'y'#255'c'#156'u'#255'f'#149'u'#255#130#166
+  +#142#255#213#236#222#255#0#3#0#255#247#246#248#255#255#253#255#255#4#1#0#255
+  +'Z]T'#255#0#6#0#255#218#247#222#255#211#252#220#255#200#253#213#255#180#244
+  +#198#255#191#255#209#255#187#255#206#255#191#255#209#255#209#255#224#255#196
+  +#236#208#255#222#248#230#255#0#6#0#255#255#255#255#255#252#247#249#255#4#1#0
+  +#255'VZO'#255#0#7#0#255#214#243#217#255'l'#152't'#255'`'#153'l'#255'f'#169'v'
+  +#255']'#165'p'#255'_'#167'r'#255'b'#165'r'#255'g'#159'v'#255'p'#155'z'#255
+  +#211#238#218#255#0#14#2#255#248#249#245#255#255#254#255#255#14#12#4#255'QUI'
+  +#255#0#7#0#255#220#250#221#255#211#254#217#255#209#255#219#255#186#252#201
+  +#255#186#255#201#255#186#254#201#255#193#255#208#255#200#254#211#255#213#255
+  +#220#255#212#240#217#255#0#13#0#255#255#255#251#255#250#247#243#255#2#3#0#255
+  +'W^Q'#255#0#14#0#255#208#235#209#255'q'#153'v'#255'i'#155'q'#255'g'#161'q'
+  +#255'f'#166'r'#255'f'#163'q'#255'^'#152'h'#255'u'#167'}'#255'n'#149'u'#255
+  ,#225#251#227#255#0#6#0#255#251#255#247#255#255#255#251#255#9#10#1#255'CI>'
+  +#255#0#9#0#255#227#249#225#255#225#255#226#255#208#251#214#255#212#255#218
+  +#255#197#250#206#255#209#255#216#255#203#251#209#255#213#255#219#255#220#251
+  +#222#255#209#230#208#255#9#22#8#255#252#255#248#255#246#248#242#255#9#11#5
+  +#255'FND'#255#11#21#9#255#217#235#218#255'x'#144'x'#255't'#147'v'#255's'#152
+  +'v'#255'r'#155'v'#255'o'#149'q'#255'u'#154'x'#255's'#146'u'#255#128#151#129
+  +#255#234#251#237#255#0#4#0#255#240#244#239#255#253#255#252#255#245#248#246
+  +#255#10#16#11#255#0#3#0#255#235#247#235#255#227#246#227#255#227#248#226#255
+  +#219#246#220#255#219#247#218#255#226#253#227#255#220#247#221#255#220#241#219
+  +#255#218#236#219#255#231#242#232#255#0#3#0#255#251#255#254#255#253#255#254
+  +#255#248#250#250#255#246#249#247#255#10#16#11#255#0#6#0#255#2#14#2#255#0#7#0
+  +#255#0#14#0#255#0#9#0#255#0#8#0#255#0#8#0#255#7#22#8#255#4#15#5#255#0#5#0#255
+  +#0#2#0#255#249#251#251#255#246#248#248#255#252#254#255#0#249#251#251#255#251
+  +#255#254#255#242#249#242#255#248#255#247#255#248#255#245#255#244#255#243#255
+  +#248#255#245#255#248#255#245#255#244#255#243#255#245#255#243#255#246#254#247
+  +#255#245#251#246#255#251#255#254#255#250#252#253#255#253#255#255#255'IHH'#0
+  +'FHH'#0'PNNvxpp'#231#137#130#130#247'yrr'#236'MKK'#152';<<'#28'>@@'#0'?AA'#0
+  +'?AA'#0'?AA'#0'?AA'#0'?AA'#0'?AA'#0'?AA'#0'HGG'#0'CAA'#0'VQQ'#156#197#183#183
+  +#255#239#221#221#255#222#203#203#255#196#183#183#255'd``'#212':<<'#29'?AA'#0
+  +'?AA'#0'?AA'#0'?AA'#0'?AA'#0'?AA'#0'?AA'#0'PNNtURR'#156';<<-XVV'#178#192#176
+  +#176#255#222#204#204#255#232#218#218#255#206#193#193#255'PNN'#170'>AA'#0'?BB'
+  +#0'?BB'#0'?BB'#0'?BB'#0'?BB'#0'?BB'#0'wpp'#236#200#186#186#255'XUU'#176'.//'
+  +#30'SOO'#178#192#180#180#255#232#220#220#255#240#231#231#255#133'}}'#235'355'
+  +''':;;'#0':;;'#0':;;'#0':;;'#0':<<'#0':;;'#0#133'||'#247#239#220#220#255#192
+  +#178#178#255'LJJ'#181'&((o'#162#153#153#255#244#235#235#255#248#241#241#255
+  +#150#142#142#242'-//A566'#0'355'#0'244'#0'233'#0'011'#0'011'#0'pjj'#238#220
+  +#201#201#255#221#205#205#255#189#175#175#255#159#149#149#255#223#212#212#255
+  +#243#239#239#255#251#246#246#255#146#137#137#244#28#30#30'T'#28#29#29#0#23#25
+  +#25#0#16#18#18#0#15#15#15#0#0#0#0#0#2#4#4#0'?>>'#154#188#175#175#255#233#218
+  +#218#255#233#221#221#255#244#234#234#255#243#238#238#255#246#244#244#255#238
+  +#231#231#255#230#223#223#255'okk'#224#25#25#25';'#24#26#26#0#19#21#21#0#18#18
+  +#18#0#3#4#4#0#6#8#8#0'&))'#29'RMM'#211#199#184#184#255#241#229#229#255#249
+  +#241#241#255#251#244#244#255#236#229#229#255#236#229#229#255#255#255#255#255
+  +#242#237#237#255'jee'#235#21#22#22'7'#17#19#19#0#18#18#18#0#3#4#4#0#6#8#8#0
+  +'-//'#0'$%%'#31'644'#171'rjj'#231#138#129#129#240#135'~~'#249#224#214#214#255
+  +#255#255#255#255#255#255#255#255#255#255#255#255#239#235#235#255'gcc'#236#15
+  +#15#15'3'#16#17#17#0#3#4#4#0#6#8#8#0'-//'#0'***'#0#30#31#31#0#25#27#27'%'#19
+  +#21#21'A'#11#14#14'\a[['#229#238#232#232#255#255#255#255#255#255#255#255#255
+  +#255#255#255#255#241#238#238#255'f``'#233#9#9#9'9'#1#2#2#0#6#8#8#0'-//'#0'**'
+  +'*'#0' !!'#0' !!'#0#30#31#31#0#19#21#21#0#9#10#10'6ZTT'#232#235#230#230#255
+  +#255#255#255#255#248#246#246#255#250#246#246#255#242#239#239#255'fbb'#231#0#0
+  +#0';'#4#7#7#0'-//'#0'***'#0' !!'#0' !!'#0#30#31#31#0#21#23#23#0#14#16#16#0#8
+  +#9#9'5[UU'#236#235#228#228#255#245#237#237#255#234#226#226#255#251#248#248
+  +#255#246#244#244#255'_ZZ'#236#4#6#6'8-//'#0'***'#0' !!'#0' !!'#0#30#31#31#0
+  +#21#23#23#0#16#17#17#0#12#15#15#0#0#1#1'6TNN'#236#233#220#220#255#245#237#237
+  +#255#225#216#216#255#228#217#217#255#252#247#247#255'YWW'#238'-//'#0'***'#0
+  +' !!'#0' !!'#0#30#31#31#0#21#23#23#0#16#17#17#0#14#16#16#0#3#4#4#0#0#0#0';XR'
+  +'R'#231#234#223#223#255#236#226#226#255#230#217#217#255#220#213#213#255'A>>'
+  +#196'-//'#0'***'#0' !!'#0' !!'#0#30#31#31#0#21#23#23#0#16#17#17#0#14#16#16#0
+  +#4#6#6#0#0#0#0#0#0#0#0'9RMM'#233#242#231#231#255#218#208#208#255'/--'#194#0#0
+  +#0#25'-//'#0'***'#0' !!'#0' !!'#0#30#31#31#0#21#23#23#0#16#17#17#0#14#16#16#0
+  +#4#6#6#0#0#0#0#0#0#0#0#0#0#0#0'3LGG'#236';77'#190#0#0#0#25#1#1#1#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#3#0'P*'#16#17']s/G'#133#193'Ju'#166#237'1R'#140#200#25'&k'#144#1#0'P'
+  +#19#0#0']'#0#0#0'`'#0#0#0'`'#0#0#0'`'#0#0#0'`'#0#0#0'`'#0#0#0'`'#0#255#255
+  +#255#0#255#255#255#0'-X'#159#223's'#221#243#255#139#250#255#255#153#255#255
+  +#255#146#253#255#255'K'#196#234#255#3#0'_l'#1#0'W%'#1#0'Z%'#1#0'Z%'#1#0'Y#'#1
+  +#0'Y"'#0#0'Y'#19#0#0'_'#0#255#255#255#0#255#255#255#0'&w'#190#242'>'#178#222
+  +#250'Q'#221#243#254'U'#255#255#255'['#255#255#255'8'#236#253#255''''#167#212
+  +#255')'#160#205#251'('#158#206#251')'#154#205#251')'#150#203#250'*'#150#203
+  +#249#29'_'#170#227#6#9'cI'#255#255#255#0#255#255#255#0#23'g'#179#251#1#6'j'
+  +#165''''#130#189#226#12#255#255#255#11#252#254#255#11#217#245#255#12#222#253
+  +#255#12#232#255#255#11#228#255#255#11#231#255#255#11#225#255#255#11#231#255
+  +#255#10#209#255#255#10'>'#152#232#255#255#255#0#255#255#255#0#21#129#196#246
+  +#13#171#222#250#15#199#242#253#0#232#255#255#0#228#255#255#0#232#255#255#0
+  +#230#255#255#0#181#236#255#0'}'#203#252#0#135#212#255#0'c'#188#236#0']'#184
+  +#228#0'W'#183#236#0#2'`A'#255#255#255#0#255#255#255#0#15'z'#192#255#9#221#255
+  +#255#0#214#255#255#0#209#255#255#0#214#255#255#0#172#236#255#0'J'#159#208#0#7
+  +'js'#0#0'W,'#0#0'^;'#0#0'["'#0#0'X'#16#0#0'["'#0#0'Y'#0#255#255#255#0#255#255
+  +#255#0#2#14'kh'#5'5'#138#169#3'h'#178#226#0's'#188#239#0'Q'#162#207#0#31'}'
+  +#161#0#0'T'#12#0#0']'#0#0#0'\'#0#0#0'_'#0#0#0'`'#0#0#0'`'#0#0#0'`'#0#0#0'Z'#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#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#9'TSQLQuery'#9'SQLQuery1'#14'AutoCalcFields'#8#8'ReadOnly'
+  +#8#6'Params'#14#0#4'left'#3#178#0#3'top'#3#172#0#0#0#10'TPopupMenu'#10'pmDat'
+  +'abase'#7'OnPopup'#7#15'pmDatabasePopup'#4'left'#3#192#0#3'top'#3#8#1#0#9'TM'
+  +'enuItem'#10'lmCreateDB'#3'Tag'#2#254#7'Caption'#6#19'Create New Database'#7
+  +'OnClick'#7#15'lmCreateDBClick'#0#0#9'TMenuItem'#7'lmRegdb'#3'Tag'#2#254#7'C'
+  +'aption'#6#17'Register Database'#7'OnClick'#7#12'lmRegdbClick'#0#0#9'TMenuIt'
+  +'em'#9'lmRestore'#3'Tag'#2#254#7'Caption'#6#16'Restore Database'#7'OnClick'#7
+  +#14'lmRestoreClick'#0#0#9'TMenuItem'#9'lmRefresh'#3'Tag'#2'd'#7'Caption'#6#7
+  +'Refresh'#7'OnClick'#7#14'lmRefreshClick'#0#0#9'TMenuItem'#11'lmConnectAs'#7
+  +'Caption'#6#10'Connect As'#7'OnClick'#7#16'lmConnectAsClick'#0#0#9'TMenuItem'
+  +#12'lmDisconnect'#7'Caption'#6#10'Disconnect'#7'OnClick'#7#17'lmDisconnectCl'
+  +'ick'#0#0#9'TMenuItem'#11'lmOpenQuery'#7'Caption'#6#17'Open Query Window'#7
+  +'OnClick'#7#16'lmOpenQueryClick'#0#0#9'TMenuItem'#16'lmScriptDatabase'#7'Cap'
+  +'tion'#6#16'Script Database '#7'OnClick'#7#21'lmScriptDatabaseClick'#0#0#9'T'
+  +'MenuItem'#8'lmBackup'#7'Caption'#6#23'Backup/Restore Database'#7'OnClick'#7
+  +#13'lmBackupClick'#0#0#9'TMenuItem'#7'lmSweep'#7'Caption'#6#8'Sweep DB'#7'On'
+  +'Click'#7#12'lmSweepClick'#0#0#9'TMenuItem'#8'lmDBIndo'#7'Caption'#6#13'Data'
+  +'base Info'#7'OnClick'#7#13'lmDBIndoClick'#0#0#9'TMenuItem'#9'MenuItem8'#7'C'
+  +'aption'#6#1'-'#0#0#9'TMenuItem'#9'lmEditReg'#7'Caption'#6#17'Edit Registrat'
+  +'ion'#7'OnClick'#7#14'lmEditRegClick'#0#0#9'TMenuItem'#20'lmUnregisterDataba'
+  +'se'#7'Caption'#6#19'Unregister Database'#7'OnClick'#7#25'lmUnregisterDataba'
+  +'seClick'#0#0#9'TMenuItem'#12'lmOpenQuery2'#3'Tag'#2#30#7'Caption'#6#17'Open'
+  +' Query Window'#7'OnClick'#7#17'lmOpenQuery2Click'#0#0#9'TMenuItem'#15'lmVie'
+  +'wFirst1000'#3'Tag'#2#1#7'Caption'#6#23'View First 1000 records'#7'OnClick'#7
+  +#20'lmViewFirst1000Click'#0#0#9'TMenuItem'#10'lmNewTable'#3'Tag'#2#11#7'Capt'
+  +'ion'#6#9'New Table'#7'OnClick'#7#15'lmNewTableClick'#0#0#9'TMenuItem'#11'lm'
+  +'EditTable'#3'Tag'#2#1#7'Caption'#6#16'Edit Data (Grid)'#7'OnClick'#7#16'lmE'
+  +'ditTableClick'#0#0#9'TMenuItem'#14'lmEditDataForm'#3'Tag'#2#1#7'Caption'#6
+  +#16'Edit Data (Form)'#7'OnClick'#7#19'lmEditDataFormClick'#0#0#9'TMenuItem'
+  +#12'lmViewFields'#3'Tag'#2#1#7'Caption'#6#13'Expand Fields'#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'-//'#0'***'#0' !'
+  +'!'#0' !!'#0#30#31#31#0#21#23#23#0#16#17#17#0#14#16#16#0#4#6#6#0#0#0#0#0#0#0
+  +#0#0#0#0#0'3LGG'#236';77'#190#0#0#0#25#1#1#1#0'-//'#0'***'#0' !!'#0' !!'#0#30
+  +#31#31#0#21#23#23#0#16#17#17#0#14#16#16#0#4#6#6#0#0#0#0#0#0#0#0'9RMM'#233#242
+  +#231#231#255#218#208#208#255'/--'#194#0#0#0#25'-//'#0'***'#0' !!'#0' !!'#0#30
+  +#31#31#0#21#23#23#0#16#17#17#0#14#16#16#0#3#4#4#0#0#0#0';XRR'#231#234#223#223
+  +#255#236#226#226#255#230#217#217#255#220#213#213#255'A>>'#196'-//'#0'***'#0
+  +' !!'#0' !!'#0#30#31#31#0#21#23#23#0#16#17#17#0#12#15#15#0#0#1#1'6TNN'#236
+  +#233#220#220#255#245#237#237#255#225#216#216#255#228#217#217#255#252#247#247
+  +#255'YWW'#238'-//'#0'***'#0' !!'#0' !!'#0#30#31#31#0#21#23#23#0#14#16#16#0#8
+  +#9#9'5[UU'#236#235#228#228#255#245#237#237#255#234#226#226#255#251#248#248
+  +#255#246#244#244#255'_ZZ'#236#4#6#6'8-//'#0'***'#0' !!'#0' !!'#0#30#31#31#0
+  +#19#21#21#0#9#10#10'6ZTT'#232#235#230#230#255#255#255#255#255#248#246#246#255
+  +#250#246#246#255#242#239#239#255'fbb'#231#0#0#0';'#4#7#7#0'-//'#0'***'#0#30
+  +#31#31#0#25#27#27'%'#19#21#21'A'#11#14#14'\a[['#229#238#232#232#255#255#255
+  +#255#255#255#255#255#255#255#255#255#255#241#238#238#255'f``'#233#9#9#9'9'#1
+  +#2#2#0#6#8#8#0'-//'#0'$%%'#31'644'#171'rjj'#231#138#129#129#240#135'~~'#249
+  +#224#214#214#255#255#255#255#255#255#255#255#255#255#255#255#255#239#235#235
+  +#255'gcc'#236#15#15#15'3'#16#17#17#0#3#4#4#0#6#8#8#0'&))'#29'RMM'#211#199#184
+  +#184#255#241#229#229#255#249#241#241#255#251#244#244#255#236#229#229#255#236
+  +#229#229#255#255#255#255#255#242#237#237#255'jee'#235#21#22#22'7'#17#19#19#0
+  +#18#18#18#0#3#4#4#0#6#8#8#0'?>>'#154#188#175#175#255#233#218#218#255#233#221
+  +#221#255#244#234#234#255#243#238#238#255#246#244#244#255#238#231#231#255#230
+  +#223#223#255'okk'#224#25#25#25';'#24#26#26#0#19#21#21#0#18#18#18#0#3#4#4#0#6
+  +#8#8#0'pjj'#238#220#201#201#255#221#205#205#255#189#175#175#255#159#149#149
+  +#255#223#212#212#255#243#239#239#255#251#246#246#255#146#137#137#244#28#30#30
+  +'T'#28#29#29#0#23#25#25#0#16#18#18#0#15#15#15#0#0#0#0#0#2#4#4#0#133'||'#247
+  +#239#220#220#255#192#178#178#255'LJJ'#181'&((o'#162#153#153#255#244#235#235
+  +#255#248#241#241#255#150#142#142#242'-//A566'#0'355'#0'244'#0'233'#0'011'#0
+  +'011'#0'wpp'#236#200#186#186#255'XUU'#176'.//'#30'SOO'#178#192#180#180#255
+  +#232#220#220#255#240#231#231#255#133'}}'#235'355'':;;'#0':;;'#0':;;'#0':;;'#0
+  +':<<'#0':;;'#0'PNNtURR'#156';<<-XVV'#178#192#176#176#255#222#204#204#255#232
+  +#218#218#255#206#193#193#255'PNN'#170'>AA'#0'?BB'#0'?BB'#0'?BB'#0'?BB'#0'?BB'
+  +#0'?BB'#0'HGG'#0'CAA'#0'VQQ'#156#197#183#183#255#239#221#221#255#222#203#203
+  +#255#196#183#183#255'd``'#212':<<'#29'?AA'#0'?AA'#0'?AA'#0'?AA'#0'?AA'#0'?AA'
+  +#0'?AA'#0'IHH'#0'FHH'#0'PNNvxpp'#231#137#130#130#247'yrr'#236'MKK'#152';<<'
+  +#28'>@@'#0'?AA'#0'?AA'#0'?AA'#0'?AA'#0'?AA'#0'?AA'#0'?AA'#0#7'OnClick'#7#17
+  +'lmViewFieldsClick'#0#0#9'TMenuItem'#9'MenuItem7'#3'Tag'#2#1#7'Caption'#6#1
+  +'-'#0#0#9'TMenuItem'#13'lmTableManage'#3'Tag'#2#1#7'Caption'#6#16'Table Mana'
+  +'gement'#11'Bitmap.Data'#10':'#3#0#0'6'#3#0#0'BM6'#3#0#0#0#0#0#0'6'#0#0#0'('
+  +#0#0#0#16#0#0#0#16#0#0#0#1#0#24#0#0#0#0#0#0#3#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0
+  +#0#0#0#247#247#247#253#255#255#248#255#255#234#245#243#250#255#255#242#244
+  +#244#255#250#251#252#244#245#252#244#245#254#249#250#249#251#251#238#246#245
+  +#243#251#250#248#255#255#253#255#255#252#252#252#254#254#254#236#238#238'8=<'
+  +'4:99>=KKK612GAB;56FAB===165=CB).-'#245#247#247#254#254#254#254#255#253#255
+  +#255#254'CA@'#245#243#242#250#248#247#253#251#250#255#255#254#247#248#246#253
+  +#254#252#241#239#238#253#251#250#255#255#254#244#242#241'ECB'#255#255#254#255
+  +#255#254#254#252#251#253#249#248';33'#255#254#254'F>>'#254#250#249'364'#240
+  +#245#243'497EHF'#243#239#238'@88'#255#250#250'?77'#255#251#250#248#246#245
+  +#255#252#248#255#252#249'E97'#255#254#252#254#242#240#255#252#249#248#254#249
+  +#248#255#252#238#248#242#247#253#248#255#254#251#255#252#250#255#246#244'YMK'
+  +#255#255#252#254#251#247#255#255#254#246#244#243'MHG'#239#234#233'GED'#247
+  +#252#250'.=9$83/C>'#231#246#242'8=;@>='#247#242#241'=87'#254#252#251#251#252
+  +#250#243#251#250#246#255#255'-:8'#236#250#248#239#255#255#225#250#246#228#255
+  +#255#222#255#252#217#253#247#222#254#249#229#254#250#236#255#252#237#251#249
+  +'0=;'#246#255#255#238#249#247#246#255#255#237#250#252'w'#140#141#227#255#255
+  +'l'#142#141#216#253#251'l'#147#145#212#251#249'f'#141#139'n'#149#147'g'#140
+  +#138'n'#144#143#217#245#245#127#148#149#235#248#250#246#255#255#255#253#255
+  +#236#242#247#127#150#152#215#251#251#210#252#251#219#255#255#224#255#255#221
+  +#251#252#221#251#252#220#254#254#216#255#255#215#255#255#214#250#250'u'#140
+  +#142#248#254#255#242#240#246#255#249#255#249#251#255'l'#133#137#216#255#255
+  +'^'#140#141'k'#148#150'k'#134#138#232#252#255'y'#141#146't'#143#147#211#252
+  +#254'd'#146#147#207#246#248'v'#143#147#244#246#254#255#251#255#255#249#255
+  +#242#241#251'x'#146#152#196#239#242#210#255#255#214#255#255#224#246#252#242
+  ,#253#255#240#251#255#225#247#253#218#255#255#206#254#255#214#255#255'n'#136
+  +#142#249#248#255#251#234#247#255#248#255#243#249#255'l'#138#143#212#255#255
+  +']'#144#146'V'#132#133#131#153#159'y'#135#141#234#245#253'w'#144#148'_'#138
+  +#141'X'#140#140#205#253#255'o'#144#147#249#251#255#255#251#255#246#254#255
+  +#236#255#255'^'#135#137#201#255#255#194#254#253#202#255#252#225#255#255#224
+  +#249#251#234#255#255#224#255#255#195#247#247#202#255#255#205#255#255'Z'#134
+  +#133#237#255#255#231#240#244#229#238#241#239#255#255'o'#148#146']'#140#137'h'
+  +#154#150'u'#160#157'_{{}'#145#146'v'#138#139'g'#131#131'k'#150#147'i'#155#151
+  +'W'#134#131'e'#138#136#239#255#255#246#255#255#255#253#255#242#241#243#238
+  +#250#250#231#252#250#230#252#250#237#253#252#250#255#255#240#242#243#251#253
+  +#254#248#253#254#239#255#254#230#252#250#233#254#252#244#255#255#239#238#240
+  +#255#251#254#255#246#248#255#250#251#254#254#254#247#253#252#246#254#253#241
+  +#246#245#255#254#255#255#252#253#255#254#255#255#254#255#251#255#255#240#248
+  +#247#244#250#249#250#252#252#255#247#249#255#253#255#7'OnClick'#7#18'lmTable'
+  +'ManageClick'#0#0#9'TMenuItem'#13'lmScriptTable'#3'Tag'#2#1#7'Caption'#6#15
+  +'Script Table As'#0#9'TMenuItem'#19'lmScriptTableCreate'#7'Caption'#6#6'Crea'
+  +'te'#7'OnClick'#7#24'lmScriptTableCreateClick'#0#0#9'TMenuItem'#14'lmScriptI'
+  +'nsert'#7'Caption'#6#6'Insert'#7'OnClick'#7#19'lmScriptInsertClick'#0#0#9'TM'
+  +'enuItem'#14'lmScriptUpdate'#7'Caption'#6#6'Update'#7'OnClick'#7#19'lmScript'
+  +'UpdateClick'#0#0#0#9'TMenuItem'#11'lmCopyTable'#3'Tag'#2#1#7'Caption'#6#10
+  +'Copy Table'#7'OnClick'#7#16'lmCopyTableClick'#0#0#9'TMenuItem'#9'lmViewGen'
+  +#3'Tag'#2#2#7'Caption'#6#14'View Generator'#7'OnClick'#7#14'lmViewGenClick'#0
+  +#0#9'TMenuItem'#8'lmSetGen'#3'Tag'#2#2#7'Caption'#6#19'Set Generator Value'#7
+  +'OnClick'#7#13'lmSetGenClick'#0#0#9'TMenuItem'#8'lmNewGen'#3'Tag'#2#12#7'Cap'
+  +'tion'#6#20'Create New Generator'#7'OnClick'#7#13'lmNewGenClick'#0#0#9'TMenu'
+  +'Item'#15'lmCreateAutoInc'#3'Tag'#2#2#7'Caption'#6#29'Create Auto increment '
+  +'Trigger'#7'OnClick'#7#20'lmCreateAutoIncClick'#0#0#9'TMenuItem'#14'lmDispla'
+  +'y1000V'#3'Tag'#2#4#7'Caption'#6#23'View First 1000 records'#7'OnClick'#7#19
+  +'lmDisplay1000VClick'#0#0#9'TMenuItem'#13'lmDisplayView'#3'Tag'#2#4#7'Captio'
+  +'n'#6#16'Display View DDL'#7'OnClick'#7#18'lmDisplayViewClick'#0#0#9'TMenuIt'
+  +'em'#12'lmCreateView'#3'Tag'#2#14#7'Caption'#6#15'Create New View'#7'OnClick'
+  +#7#17'lmCreateViewClick'#0#0#9'TMenuItem'#10'lmEditView'#3'Tag'#2#4#7'Captio'
+  +'n'#6#9'Edit View'#7'OnClick'#7#15'lmEditViewClick'#0#0#9'TMenuItem'#18'lmCr'
+  +'eateStoredProc'#3'Tag'#2#15#7'Caption'#6#27'Create New Stored Procedure'#7
+  +'OnClick'#7#23'lmCreateStoredProcClick'#0#0#9'TMenuItem'#15'lmCallStoreProc'
+  +#3'Tag'#2#5#7'Caption'#6#14'Call procedure'#7'OnClick'#7#20'lmCallStoreProcC'
+  +'lick'#0#0#9'TMenuItem'#21'lmViewStoredProcedure'#3'Tag'#2#5#7'Caption'#6#21
+  +'View Stored Procedure'#7'OnClick'#7#26'lmViewStoredProcedureClick'#0#0#9'TM'
+  +'enuItem'#10'lmEditProc'#3'Tag'#2#5#7'Caption'#6#21'Edit Stored Procedure'#7
+  +'OnClick'#7#15'lmEditProcClick'#0#0#9'TMenuItem'#13'lmViewTrigger'#3'Tag'#2#3
+  +#7'Caption'#6#12'View Trigger'#7'OnClick'#7#18'lmViewTriggerClick'#0#0#9'TMe'
+  +'nuItem'#15'lmCreateTrigger'#3'Tag'#2#13#7'Caption'#6#18'Create New Trigger'
+  +#7'OnClick'#7#20'lmCreateTriggerClick'#0#0#9'TMenuItem'#13'lmEditTrigger'#3
+  +'Tag'#2#3#7'Caption'#6#12'Edit Trigger'#7'OnClick'#7#18'lmEditTriggerClick'#0
+  +#0#9'TMenuItem'#14'lmActivateTrig'#3'Tag'#2#3#7'Caption'#6#16'Activate Trigg'
+  +'er'#7'OnClick'#7#19'lmActivateTrigClick'#0#0#9'TMenuItem'#14'lmDeactiveTrig'
+  +#3'Tag'#2#3#7'Caption'#6#18'DeActivate Trigger'#7'OnClick'#7#19'lmDeactiveTr'
+  +'igClick'#0#0#9'TMenuItem'#8'lmNewUDF'#3'Tag'#2#16#7'Caption'#6#19'Create ne'
+  +'w function'#7'OnClick'#7#13'lmNewUDFClick'#0#0#9'TMenuItem'#9'lmViewUDF'#3
+  +'Tag'#2#6#7'Caption'#6#13'View Function'#7'OnClick'#7#14'lmViewUDFClick'#0#0
+  +#9'TMenuItem'#17'lmOpenSystemTable'#3'Tag'#2#7#7'Caption'#6#10'Open Table'#7
+  +'OnClick'#7#22'lmOpenSystemTableClick'#0#0#9'TMenuItem'#11'lmNewDomain'#3'Ta'
+  +'g'#2#18#7'Caption'#6#10'New Domain'#7'OnClick'#7#16'lmNewDomainClick'#0#0#9
+  +'TMenuItem'#12'lmViewDomain'#3'Tag'#2#8#7'Caption'#6#11'Domain Info'#7'OnCli'
+  +'ck'#7#17'lmViewDomainClick'#0#0#9'TMenuItem'#9'lmNewRole'#3'Tag'#2#19#7'Cap'
+  +'tion'#6#12'Add New Role'#7'OnClick'#7#14'lmNewRoleClick'#0#0#9'TMenuItem'#17
+  +'lmRolePermissions'#3'Tag'#2#9#7'Caption'#6#16'Show permissions'#7'OnClick'#7
+  +#22'lmRolePermissionsClick'#0#0#9'TMenuItem'#19'lmRolePerManagement'#3'Tag'#2
+  +#9#7'Caption'#6#21'Permission Management'#11'Bitmap.Data'#10':'#3#0#0'6'#3#0
+  +#0'BM6'#3#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0#24#0#0#0#0#0#0
+  +#3#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#252#253#249#255#255#252#255#255#252
+  +#252#253#249#255#255#252#252#253#249#255#255#252#251#252#248#255#255#252#247
+  +#248#244#255#255#252#255#255#252#254#255#251#255#255#252#253#254#250#255#255
+  +#252#255#255#252#255#255#252#242#243#239#255#255#252#255#255#252#250#251#247
+  ,#250#251#247#255#255#252#255#255#252#250#251#247#255#255#252#249#250#246#247
+  +#248#244#250#251#247#255#255#252#253#254#250#251#253#247#255#255#251#253#255
+  +#249#254#255#250#252#254#248#255#255#251#255#255#251#249#251#245#253#255#249
+  +#255#255#251#254#255#250#255#255#251#255#255#251#255#255#251#253#255#249#255
+  +#255#251'xztwys'#135#137#131'~'#128'zkmg'#131#133#127'oqkxzt{}w'#130#132'~uw'
+  +'qprl{}wvxrz|vvxr~'#129'x'#250#253#244#246#249#240#245#248#239#255#255#249
+  +#245#248#239#255#255#249#252#255#246#248#251#242#247#250#241#255#255#249#245
+  +#248#239#255#255#249#255#255#249#246#249#240'~'#129'xwzq'#254#255#248#255#255
+  +#249'TWNMPG'#250#253#244'ORIBE<'#255#255#249#252#255#246#255#255#249#255#255
+  +#249#239#242#233#255#255#249#255#255#249'psjvyp'#255#255#249#247#250#241#255
+  +#255#249#255#255#249#255#255#249#248#251#242#255#255#249#248#251#242#254#255
+  +#248#252#255#246#255#255#249#255#255#249#255#255#249#249#252#243#128#131'z{~'
+  +'u'#249#252#243'MPG'#254#255#248'FI@JMDNQHFI@KNEQTKKNEDG>'#255#255#249#255
+  +#255#249#255#255#249'twn'#128#131'z'#249#252#243#255#255#249#255#255#249#255
+  +#255#249#252#255#246#255#255#249#251#254#245#254#255#248#247#250#241#255#255
+  +#249#248#251#242#255#255#249#254#255#248#246#249#240'{~uuxo'#255#255#249'EH?'
+  +#246#249#240'PSJJMDFI@QTKGJAUXO@C:RUL'#247#250#241#253#255#247#255#255#249'v'
+  +'ypwzq'#255#255#249#255#255#249#255#255#249#255#255#249#252#255#246#250#253
+  +#244#251#254#245#255#255#249#255#255#249#249#252#243#254#255#248#255#255#249
+  +#249#252#243#252#255#246'twn}'#128'w'#251#254#245#252#255#246#247#250#241#255
+  +#255#249#255#255#249#255#255#249#255#255#249#252#255#246#255#255#249#255#255
+  +#249#255#255#249#249#252#243#255#255#249'~'#129'xz}t|~xnpj{}w'#128#130'|qsmw'
+  +'ysvxrz|v'#128#130'|}'#127'yjlf'#128#130'|vxrqsmuwquwq'#255#255#251#246#248
+  +#242#255#255#251#254#255#250#253#255#249#255#255#251#255#255#251#249#251#245
+  +#255#255#251#247#249#243#253#255#249#252#254#248#255#255#251#255#255#251#253
+  +#255#249#255#255#251#248#249#245#255#255#252#255#255#252#249#250#246#255#255
+  +#252#255#255#252#247#248#244#255#255#252#250#251#247#255#255#252#255#255#252
+  +#254#255#251#250#251#247#255#255#252#249#250#246#255#255#252#255#255#252#253
+  +#254#250#255#255#252#254#255#251#255#255#252#252#253#249#255#255#252#252#253
+  +#249#255#255#252#247#248#244#255#255#252#253#254#250#254#255#251#255#255#252
+  +#255#255#252#251#252#248#7'OnClick'#7#24'lmRolePerManagementClick'#0#0#9'TMe'
+  +'nuItem'#14'lmNewException'#3'Tag'#2#20#7'Caption'#6#17'Add New Exception'#7
+  +'OnClick'#7#19'lmNewExceptionClick'#0#0#9'TMenuItem'#17'lmScriptException'#3
+  +'Tag'#2#10#7'Caption'#6#6'Script'#7'OnClick'#7#22'lmScriptExceptionClick'#0#0
+  +#9'TMenuItem'#15'lmDropException'#3'Tag'#2#10#7'Caption'#6#4'Drop'#7'OnClick'
+  +#7#20'lmDropExceptionClick'#0#0#9'TMenuItem'#9'lmAddUser'#3'Tag'#2#21#7'Capt'
+  +'ion'#6#15'Create New User'#7'OnClick'#7#14'lmAddUserClick'#0#0#9'TMenuItem'
+  +#16'lmChangePassword'#3'Tag'#2'o'#7'Caption'#6#15'Change password'#7'OnClick'
+  +#7#21'lmChangePasswordClick'#0#0#9'TMenuItem'#13'lmPermissions'#3'Tag'#2'o'#7
+  +'Caption'#6#16'Show Permissions'#7'OnClick'#7#18'lmPermissionsClick'#0#0#9'T'
+  +'MenuItem'#20'lmUserPermManagement'#3'Tag'#2'o'#7'Caption'#6#21'Permission M'
+  +'anagement'#11'Bitmap.Data'#10':'#3#0#0'6'#3#0#0'BM6'#3#0#0#0#0#0#0'6'#0#0#0
+  +'('#0#0#0#16#0#0#0#16#0#0#0#1#0#24#0#0#0#0#0#0#3#0#0'd'#0#0#0'd'#0#0#0#0#0#0
+  +#0#0#0#0#0#252#253#249#255#255#252#255#255#252#252#253#249#255#255#252#252
+  +#253#249#255#255#252#251#252#248#255#255#252#247#248#244#255#255#252#255#255
+  +#252#254#255#251#255#255#252#253#254#250#255#255#252#255#255#252#255#255#252
+  +#242#243#239#255#255#252#255#255#252#250#251#247#250#251#247#255#255#252#255
+  +#255#252#250#251#247#255#255#252#249#250#246#247#248#244#250#251#247#255#255
+  +#252#253#254#250#251#253#247#255#255#251#253#255#249#254#255#250#252#254#248
+  +#255#255#251#255#255#251#249#251#245#253#255#249#255#255#251#254#255#250#255
+  +#255#251#255#255#251#255#255#251#253#255#249#255#255#251'xztwys'#135#137#131
+  +'~'#128'zkmg'#131#133#127'oqkxzt{}w'#130#132'~uwqprl{}wvxrz|vvxr~'#129'x'#250
+  +#253#244#246#249#240#245#248#239#255#255#249#245#248#239#255#255#249#252#255
+  +#246#248#251#242#247#250#241#255#255#249#245#248#239#255#255#249#255#255#249
+  +#246#249#240'~'#129'xwzq'#254#255#248#255#255#249'TWNMPG'#250#253#244'ORIBE<'
+  +#255#255#249#252#255#246#255#255#249#255#255#249#239#242#233#255#255#249#255
+  +#255#249'psjvyp'#255#255#249#247#250#241#255#255#249#255#255#249#255#255#249
+  +#248#251#242#255#255#249#248#251#242#254#255#248#252#255#246#255#255#249#255
+  +#255#249#255#255#249#249#252#243#128#131'z{~u'#249#252#243'MPG'#254#255#248
+  +'FI@JMDNQHFI@KNEQTKKNEDG>'#255#255#249#255#255#249#255#255#249'twn'#128#131
+  +'z'#249#252#243#255#255#249#255#255#249#255#255#249#252#255#246#255#255#249
+  +#251#254#245#254#255#248#247#250#241#255#255#249#248#251#242#255#255#249#254
+  +#255#248#246#249#240'{~uuxo'#255#255#249'EH?'#246#249#240'PSJJMDFI@QTKGJAUXO'
+  +'@C:RUL'#247#250#241#253#255#247#255#255#249'vypwzq'#255#255#249#255#255#249
+  ,#255#255#249#255#255#249#252#255#246#250#253#244#251#254#245#255#255#249#255
+  +#255#249#249#252#243#254#255#248#255#255#249#249#252#243#252#255#246'twn}'
+  +#128'w'#251#254#245#252#255#246#247#250#241#255#255#249#255#255#249#255#255
+  +#249#255#255#249#252#255#246#255#255#249#255#255#249#255#255#249#249#252#243
+  +#255#255#249'~'#129'xz}t|~xnpj{}w'#128#130'|qsmwysvxrz|v'#128#130'|}'#127'yj'
+  +'lf'#128#130'|vxrqsmuwquwq'#255#255#251#246#248#242#255#255#251#254#255#250
+  +#253#255#249#255#255#251#255#255#251#249#251#245#255#255#251#247#249#243#253
+  +#255#249#252#254#248#255#255#251#255#255#251#253#255#249#255#255#251#248#249
+  +#245#255#255#252#255#255#252#249#250#246#255#255#252#255#255#252#247#248#244
+  +#255#255#252#250#251#247#255#255#252#255#255#252#254#255#251#250#251#247#255
+  +#255#252#249#250#246#255#255#252#255#255#252#253#254#250#255#255#252#254#255
+  +#251#255#255#252#252#253#249#255#255#252#252#253#249#255#255#252#247#248#244
+  +#255#255#252#253#254#250#254#255#251#255#255#252#255#255#252#251#252#248#7'O'
+  +'nClick'#7#25'lmUserPermManagementClick'#0#0#9'TMenuItem'#16'lmCopyPermissio'
+  +'n'#3'Tag'#2'o'#7'Caption'#6#18'Copy Permission To'#7'OnClick'#7#21'lmCopyPe'
+  +'rmissionClick'#0#0#9'TMenuItem'#11'lmEditField'#3'Tag'#2'p'#7'Caption'#6#10
+  +'Edit Field'#7'OnClick'#7#16'lmEditFieldClick'#0#0#0#11'TMemDataset'#10'mdsH'
+  +'istory'#9'FieldDefs'#14#1#4'Name'#6#4'Time'#8'DataType'#7#10'ftDateTime'#9
+  +'Precision'#2#0#4'Size'#2#0#0#1#4'Name'#6#7'SQLType'#8'DataType'#7#8'ftStrin'
+  +'g'#9'Precision'#2#0#4'Size'#2#6#0#1#4'Name'#6#12'SQLStatement'#8'DataType'#7
+  +#8'ftString'#9'Precision'#2#0#4'Size'#3#0#16#0#1#4'Name'#6#8'Reserved'#8'Dat'
+  +'aType'#7#9'ftInteger'#9'Precision'#2#0#4'Size'#2#0#0#0#4'left'#3#183#0#3'to'
+  +'p'#3'j'#1#0#0#0
+]);

+ 3825 - 0
main.pas

@@ -0,0 +1,3825 @@
+unit main;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, IBConnection, sqldb, memds, FileUtil, LResources, Forms,
+  Controls, Graphics, Dialogs, Menus, ComCtrls, Reg, QueryWindow, Grids,
+  ExtCtrls, Buttons, TableManage;
+
+type
+
+  TDatabaseRec = record
+    Index: Integer;
+    RegRec: TRegisteredDatabase;
+    OrigRegRec: TRegisteredDatabase;
+    IBConnection: TIBConnection;
+    SQLTrans: TSQLTransaction;
+  end;
+
+  { TfmMain }
+
+  TfmMain = class(TForm)
+    bbCreateNewDB: TBitBtn;
+    bbRegisterDB: TBitBtn;
+    bbRestoreDB: TBitBtn;
+    ImageList1: TImageList;
+    MainMenu1: TMainMenu;
+    mdsHistory: TMemDataset;
+    MenuItem1: TMenuItem;
+    lmDisplayView: TMenuItem;
+    lmViewTrigger: TMenuItem;
+    lmCreateDB: TMenuItem;
+    lmRegdb: TMenuItem;
+    lmRestore: TMenuItem;
+    lmSweep: TMenuItem;
+    lmAddUser: TMenuItem;
+    lmChangePassword: TMenuItem;
+    lmUserPermManagement: TMenuItem;
+    lmRolePerManagement: TMenuItem;
+    lmSetGen: TMenuItem;
+    lmDisconnect: TMenuItem;
+    lmCopyTable: TMenuItem;
+    lmCopyPermission: TMenuItem;
+    lmViewFields: TMenuItem;
+    lmEditField: TMenuItem;
+    lmDBIndo: TMenuItem;
+    mnExit: TMenuItem;
+    mnCreateDB: TMenuItem;
+    mnRegDB: TMenuItem;
+    MenuItem5: TMenuItem;
+    MenuItem6: TMenuItem;
+    lmEditReg: TMenuItem;
+    lmUnregisterDatabase: TMenuItem;
+    lmViewFirst1000: TMenuItem;
+    lmViewStoredProcedure: TMenuItem;
+    lmViewGen: TMenuItem;
+    lmNewTable: TMenuItem;
+    lmNewGen: TMenuItem;
+    lmCreateAutoInc: TMenuItem;
+    lmCreateStoredProc: TMenuItem;
+    lmEditProc: TMenuItem;
+    lmCreateView: TMenuItem;
+    lmDisplay1000V: TMenuItem;
+    lmEditView: TMenuItem;
+    lmCreateTrigger: TMenuItem;
+    lmEditTrigger: TMenuItem;
+    lmActivateTrig: TMenuItem;
+    lmDeactiveTrig: TMenuItem;
+    lmScriptTable: TMenuItem;
+    lmScriptTableCreate: TMenuItem;
+    lmScriptInsert: TMenuItem;
+    lmScriptUpdate: TMenuItem;
+    lmEditTable: TMenuItem;
+    lmCallStoreProc: TMenuItem;
+    lmEditDataForm: TMenuItem;
+    lmNewUDF: TMenuItem;
+    lmViewUDF: TMenuItem;
+    lmOpenSystemTable: TMenuItem;
+    lmViewDomain: TMenuItem;
+    lmNewDomain: TMenuItem;
+    lmNewRole: TMenuItem;
+    MenuItem7: TMenuItem;
+    lmOpenQuery: TMenuItem;
+    lmOpenQuery2: TMenuItem;
+    lmNewException: TMenuItem;
+    lmRefresh: TMenuItem;
+    lmDropException: TMenuItem;
+    lmScriptException: TMenuItem;
+    lmScriptDatabase: TMenuItem;
+    lmConnectAs: TMenuItem;
+    lmPermissions: TMenuItem;
+    lmRolePermissions: TMenuItem;
+    lmTableManage: TMenuItem;
+    MenuItem8: TMenuItem;
+    lmBackup: TMenuItem;
+    mnRestore: TMenuItem;
+    PageControl1: TPageControl;
+    pmDatabase: TPopupMenu;
+    Splitter1: TSplitter;
+    SQLQuery1: TSQLQuery;
+    TabSheet1: TTabSheet;
+    tvMain: TTreeView;
+    procedure FormActivate(Sender: TObject);
+    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
+    procedure FormCreate(Sender: TObject);
+    procedure lmAddUserClick(Sender: TObject);
+    procedure lmBackupClick(Sender: TObject);
+    procedure lmChangePasswordClick(Sender: TObject);
+    procedure lmCloseTabClick(Sender: TObject);
+    procedure lmCopyPermissionClick(Sender: TObject);
+    procedure lmCopyTableClick(Sender: TObject);
+    procedure lmCreateDBClick(Sender: TObject);
+    procedure lmDBIndoClick(Sender: TObject);
+    procedure lmDisconnectClick(Sender: TObject);
+    procedure lmEditFieldClick(Sender: TObject);
+    procedure lmOpenSystemTableClick(Sender: TObject);
+    procedure lmActivateTrigClick(Sender: TObject);
+    procedure lmCallStoreProcClick(Sender: TObject);
+    procedure lmConnectAsClick(Sender: TObject);
+    procedure lmCreateAutoIncClick(Sender: TObject);
+    procedure lmCreateStoredProcClick(Sender: TObject);
+    procedure lmCreateTriggerClick(Sender: TObject);
+    procedure lmCreateViewClick(Sender: TObject);
+    procedure lmDeactiveTrigClick(Sender: TObject);
+    procedure lmDisplay1000VClick(Sender: TObject);
+    procedure lmDropExceptionClick(Sender: TObject);
+    procedure lmEditDataFormClick(Sender: TObject);
+    procedure lmEditProcClick(Sender: TObject);
+    procedure lmEditTableClick(Sender: TObject);
+    procedure lmEditTriggerClick(Sender: TObject);
+    procedure lmEditViewClick(Sender: TObject);
+    procedure lmNewDomainClick(Sender: TObject);
+    procedure lmNewExceptionClick(Sender: TObject);
+    procedure lmNewGenClick(Sender: TObject);
+    procedure lmNewTableClick(Sender: TObject);
+    procedure lmNewUDFClick(Sender: TObject);
+    procedure lmOpenQuery2Click(Sender: TObject);
+    procedure lmOpenQueryClick(Sender: TObject);
+    procedure lmPermissionsClick(Sender: TObject);
+    procedure lmRefreshClick(Sender: TObject);
+    procedure lmRegdbClick(Sender: TObject);
+    procedure lmRestoreClick(Sender: TObject);
+    procedure lmRolePerManagementClick(Sender: TObject);
+    procedure lmRolePermissionsClick(Sender: TObject);
+    procedure lmScriptDatabaseClick(Sender: TObject);
+    procedure lmScriptExceptionClick(Sender: TObject);
+    procedure lmScriptInsertClick(Sender: TObject);
+    procedure lmScriptTableCreateClick(Sender: TObject);
+    procedure lmScriptUpdateClick(Sender: TObject);
+    procedure lmSetGenClick(Sender: TObject);
+    procedure lmSweepClick(Sender: TObject);
+    procedure lmTableManageClick(Sender: TObject);
+    procedure lmUserPermManagementClick(Sender: TObject);
+    procedure lmViewDomainClick(Sender: TObject);
+    procedure lmDisplayViewClick(Sender: TObject);
+    procedure lmViewFieldsClick(Sender: TObject);
+    procedure lmViewGenClick(Sender: TObject);
+    procedure lmViewStoredProcedureClick(Sender: TObject);
+    procedure lmViewTriggerClick(Sender: TObject);
+    procedure lmViewUDFClick(Sender: TObject);
+    procedure mnExitClick(Sender: TObject);
+    procedure mnCreateDBClick(Sender: TObject);
+    procedure mnRegDBClick(Sender: TObject);
+    procedure MenuItem6Click(Sender: TObject);
+    procedure lmEditRegClick(Sender: TObject);
+    procedure lmUnregisterDatabaseClick(Sender: TObject);
+    procedure lmViewFirst1000Click(Sender: TObject);
+    procedure lmNewRoleClick(Sender: TObject);
+    procedure mnRestoreClick(Sender: TObject);
+    procedure PageControl1CloseTabClicked(Sender: TObject);
+    procedure pmDatabasePopup(Sender: TObject);
+    procedure tvMainDblClick(Sender: TObject);
+    procedure tvMainExpanded(Sender: TObject; Node: TTreeNode);
+  private
+    ibConnection: TIBConnection;
+    sqlTransaction: TSQLTransaction;
+    CurrentHistoryFile: string;
+    fActivated: Boolean;
+    function FindCusomForm(ATitle: string; AClass: TClass): TComponent;
+    procedure InitNewGen(DatabaseIndex: Integer);
+    function GetServerName(DBName: string): string;
+    function GetServerNameNode(ServerName: string): TTreeNode;
+    function RemoveSpecialChars(AText: string): string;
+    procedure ReleaseRegisteredDatabases;
+    procedure SetConnection(Index: Integer);
+    procedure SetFocus; override; // solve a bug in Lazarus
+    { private declarations }
+  public
+    RegisteredDatabases: array of TDatabaseRec;
+    Version: string;
+    VersionDate: string;
+    function RetreiveInputParamFromSP(Body: string): string;
+    function LoadRegisteredDatabases: Boolean;
+    function FindQueryWindow(ATitle: string): TComponent;
+    function DeleteRegistration(Index: Integer): Boolean;
+    function GetFBTypeName(Index: Integer): string;
+    function GetPrimaryKeyIndexName(DatabaseIndex: Integer; ATableName: string; var ConstraintName: string): string;
+    function GetConstraintFields(ATableName, AIndexName: string; var List: TStringList): Boolean;
+    procedure GetFields(DatabaseIndex: Integer; ATableName: string; FieldsList: TStringList);
+    function GetStoredProcBody(DatabaseIndex: Integer; AProcName: string; var SPOwner: string): string;
+    function GetViewInfo(DatabaseIndex: Integer; AViewName: string; var Columns, Body: string): Boolean;
+    function ChangeTriggerActivity(DatabaseIndex: Integer; ATriggerName: string; ActiveState: Boolean): Boolean;
+    function GetIndices(ATableName: string; AQuery: TSQLQuery): Boolean;
+    function GetIndexFields(ATableName, AIndexName: string; AQuery: TSQLQuery; var FieldsList: TStringList): Boolean;
+    function GetUDFInfo(DatabaseIndex: Integer; UDFName: string; var ModuleName, EntryPoint, Params: string): Boolean;
+    function ShowQueryWindow(DatabaseIndex: Integer; ATitle: string): TfmQueryWindow;
+    procedure FillObjectRoot(Node: TTreeNode);
+    procedure FillAndShowConstraintsForm(Form: TfmTableManage; ATableName: string; dbIndex: Integer);
+    procedure ShowCompleteQueryWindow(DatabaseIndex: Integer; ATitle, AQueryText: string;
+      OnCommitProcedure: TNotifyEvent = nil);
+    procedure ViewTableFields(ATableName: string; dbIndex: Integer; AStringGrid: TStringGrid);
+    procedure ShowIndicesManagement(AForm: TForm; DatabaseIndex: Integer; ATableName: string);
+    function ChangeQueryToBIDirectional(DatabaseIndex: Integer; ATableName: string; sqQuery: TSQLQuery): Boolean;
+    function GetTableNames(dbIndex: Integer): string;
+    function CreateNewTrigger(dbIndex: Integer; ATableName: string; OnCommitProcedure: TNotifyEvent = nil): Boolean;
+    function GetNumericFieldType(FieldType, SubType, FieldLength, Scale: Integer): string;
+    function AddToSQLHistory(DatabaseTitle: string; SQLType, SQLStatement: string): Boolean;
+    function SaveAndCloseSQLHistory: Boolean;
+    function OpenSQLHistory(DatabaseTitle: string): Boolean;
+  end;
+
+var
+  fmMain: TfmMain;
+
+implementation
+
+
+{ TfmMain }
+
+uses CreateDB, ViewView, ViewTrigger, ViewSProc, ViewGen, NewTable, NewGen,
+     EnterPass, CreateTrigger, EditTable, CallProc, EditDataFullRec, UDFInfo, ViewDomain,
+     NewDomain, SysTables, Scriptdb, UserPermissions, BackupRestore, UnitFirebirdServices, CreateUser, ChangePass,
+     PermissionManage, CopyTable, About, NewEditField, dbInfo;
+
+
+procedure TfmMain.mnExitClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfmMain.FormCreate(Sender: TObject);
+begin
+  fActivated:= False;
+  LoadRegisteredDatabases;
+end;
+
+(*****************  Add New user  ***********************)
+
+procedure TfmMain.lmAddUserClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  dbIndex: Integer;
+begin
+  with fmCreateUser do
+  try
+    SelNode:= tvMain.Selected;
+    dbIndex:= SelNode.Parent.OverlayIndex;
+    Init(dbIndex);
+    edUserName.Clear;
+    edPassword.Clear;
+    if ShowModal = mrOK then
+    begin
+      // Create user
+      dmSysTables.Init(dbIndex);
+      dmSysTables.sqQuery.Close;
+      dmSysTables.sqQuery.SQL.Text:= 'create user ' + edUserName.Text + ' password ''' + edPassword.Text  + '''';
+      dmSysTables.sqQuery.ExecSQL;
+
+      // Grant rule
+      if cxGrantRole.Checked then
+      begin
+        dmSysTables.sqQuery.SQL.Text:= 'grant ' + cbRoles.Text + ' to ' + edUserName.Text;
+        dmSysTables.sqQuery.ExecSQL;
+      end;
+      dmSysTables.stTrans.Commit;
+      MessageDlg('New user (' + edUserName.Text + ') has been created successfully', mtInformation, [mbOk], 0);
+      if not cxGrantRole.Checked then
+        ShowMessage('User (' + edUserName.Text + ') will not appear in users list unless you grant it a permission');
+      lmRefresh.Click;
+    end;
+
+  except
+  on e: exception do
+  begin
+    MessageDlg('Error while creating new user: ' + e.Message, mtError, [mbOk], 0);
+  end;
+
+  end;
+end;
+
+(***********  Backup / Restore database ************)
+
+procedure TfmMain.lmBackupClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+begin
+  SelNode:= tvMain.Selected;
+  with RegisteredDatabases[tvMain.Selected.OverlayIndex].RegRec do
+    fmBackupRestore.Init(SelNode.Text, DatabaseName, UserName, Password);
+  fmBackupRestore.cbOperation.Enabled:= True;
+  fmBackupRestore.Show;
+end;
+
+(**********  change user password  **********)
+
+procedure TfmMain.lmChangePasswordClick(Sender: TObject);
+begin
+  fmChangePass.Caption:= 'Change password for user: ' + tvMain.Selected.Text;
+  fmChangePass.edPassword.Clear;
+  fmChangePass.edConfirm.Clear;
+  if fmChangePass.ShowModal = mrOK then
+  begin
+    try
+       dmSysTables.Init(tvMain.Selected.Parent.Parent.OverlayIndex);
+       dmSysTables.sqQuery.Close;
+       dmSysTables.sqQuery.SQL.Text:= 'alter user ' + tvMain.Selected.Text + ' password ''' +
+         fmChangePass.edPassword.Text + '''';
+       dmSysTables.sqQuery.ExecSQL;
+       dmSysTables.stTrans.Commit;
+       MessageDlg('Password has been changed', mtInformation, [mbOk], 0);
+
+    except
+    on e: exception do
+      ShowMessage('Error while changing password: ' + e.Message);
+    end;
+
+  end;
+end;
+
+procedure TfmMain.lmCloseTabClick(Sender: TObject);
+begin
+end;
+
+procedure TfmMain.lmCopyPermissionClick(Sender: TObject);
+var
+  List: TStringList;
+  dbIndex: Integer;
+  UserName: string;
+  NewUser: string;
+begin
+  if InputQuery('Permission', 'Please type a user name to copy perissions to', NewUser) then
+  begin
+    UserName:= tvMain.Selected.Text;
+    dbIndex:= tvMain.Selected.Parent.Parent.OverlayIndex;
+    List:= TStringList.Create;
+    Scriptdb.ScriptUserAllPermissions(dbIndex, UserName, List, NewUser);
+    ShowCompleteQueryWindow(dbIndex, 'Script permissions for : ' + UserName, List.Text);
+    List.Free;
+
+  end;
+end;
+
+procedure TfmMain.lmCopyTableClick(Sender: TObject);
+begin
+  fmCopyTable.Init(tvMain.Selected.Parent.Parent.OverlayIndex, tvMain.Selected.Text);
+  fmCopyTable.Show;
+end;
+
+procedure TfmMain.lmCreateDBClick(Sender: TObject);
+begin
+  fmCreateDB.edNewDatabase.Text:= tvMain.Selected.Text + ':';
+  mnCreateDBClick(nil);
+end;
+
+procedure TfmMain.lmDBIndoClick(Sender: TObject);
+var
+  dbName, CreationDate, ACharSet: string;
+  MajorVer, MinorVer, Pages, PageSize: Integer;
+  ProcessList: TStringList;
+  dbSize: Double;
+  AType: string;
+begin
+  ProcessList:= TStringList.Create;
+  if dmSysTables.GetDatabaseInfo(tvMain.Selected.OverlayIndex, dbName, ACharSet, CreationDate,
+    MajorVer, MinorVer, Pages, PageSize, ProcessList) then
+  with fmDBInfo do
+  begin
+    Caption:= 'Database information for: ' + tvMain.Selected.Text;
+    edName.Text:= dbName;
+    edODSVer.Text:= IntToStr(MajorVer) + '.' + IntToStr(MinorVer);
+    edCharset.Text:= ACharSet;
+    edCreationDate.Text:= CreationDate;
+    edPageSize.Text:= IntToStr(PageSize);
+    dbSize:= Pages * PageSize;
+    if dbSize > 1000000000 then
+    begin
+       dbSize:= ((dbSize / 1024) / 1024) / 1024;
+       AType:= 'Giga bytes';
+    end
+    else
+    if dbSize > 1000000 then
+    begin
+       dbSize:= ((dbSize / 1024) / 1024);
+       AType:= 'Mega bytes';
+    end
+    else
+    if dbSize > 1000 then
+    begin
+       dbSize:= (dbSize / 1024);
+       AType:= 'Kilo bytes';
+    end
+    else
+    begin
+       AType:= 'Bytes';
+    end;
+
+    edDBSize.Text:= Format('%3.1n %s', [dbSize, AType]);
+    meClients.Lines.Text:= ProcessList.Text;
+    ProcessList.Free;
+    Show;
+  end
+  else
+    ShowMessage('Unable to get database information');
+end;
+
+procedure TfmMain.lmDisconnectClick(Sender: TObject);
+begin
+  RegisteredDatabases[tvMain.Selected.OverlayIndex].IBConnection.Close;
+end;
+
+procedure TfmMain.lmEditFieldClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  dbIndex: Integer;
+  FieldName: string;
+  FieldType, DefaultValue: string;
+  FSize, IsNull: Integer;
+  Description: string;
+begin
+  SelNode:= tvMain.Selected;
+  dbIndex:= SelNode.Parent.Parent.Parent.OverlayIndex;
+  FieldName:= Copy(SelNode.Text, 1, Pos(' ', SelNode.Text) - 1);
+  if dmSysTables.GetFieldInfo(dbIndex, SelNode.Parent.Text, FieldName, FieldType, FSize, IsNull,
+    DefaultValue, Description) then
+  begin
+    fmNewEditField:= TfmNewEditField.Create(nil);
+    fmNewEditField.Init(dbIndex, SelNode.Parent.Text, foEdit, FieldName, FieldType, DefaultValue, Description, FSize,
+      SelNode.OverlayIndex, (IsNull <> 1),  nil);
+
+    fmNewEditField.Show;
+  end
+  else
+    ShowMessage('Unable to locate the field: ' + SelNode.Text);
+end;
+
+procedure TfmMain.FormClose(Sender: TObject; var CloseAction: TCloseAction);
+begin
+  if Length(RegisteredDatabases) > 0 then
+    fmReg.SaveRegistrations;
+  SaveAndCloseSQLHistory;
+end;
+
+procedure TfmMain.FormActivate(Sender: TObject);
+begin
+  fActivated:= True;
+end;
+
+
+(***************  Open System table  **************)
+
+procedure TfmMain.lmOpenSystemTableClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  QWindow: TfmQueryWindow;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    QWindow:= ShowQueryWindow(SelNode.Parent.Parent.OverlayIndex, SelNode.Text);
+    QWindow.meQuery.Lines.Text:= 'select * from ' + SelNode.Text;
+    QWindow.bbRunClick(nil);
+    QWindow.Show;
+  end;
+
+end;
+
+procedure TfmMain.lmActivateTrigClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+begin
+  SelNode:= tvMain.Selected;
+  if ChangeTriggerActivity(SelNode.Parent.Parent.OverlayIndex, SelNode.Text, True) then
+    MessageDlg('Trigger has been activated', mtInformation, [mbOk], 0);
+end;
+
+
+(*******************  Call stored procedure  *****************)
+
+procedure TfmMain.lmCallStoreProcClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  Body: string;
+  AProcName: string;
+  SPOwner: string;
+  Params: string;
+  OneParam: string;
+  i: Integer;
+  QWindow: TfmQueryWindow;
+  Line: string;
+  Called: Boolean;
+  WithParams: Boolean;
+begin
+  SelNode:= tvMain.Selected;
+
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    AProcName:= SelNode.Text;
+    Body:= GetStoredProcBody(SelNode.Parent.Parent.OverlayIndex, AProcName, SPOwner);
+    Params:= RetreiveInputParamFromSP(Body);
+    withParams:= Params <> '';
+    with fmCallProc do
+    begin
+      StringGrid1.RowCount:= 1;
+      if WithParams then
+        Params:= Params + ',';
+      i:= 1;
+      if WithParams then
+      while Params <> '' do
+      begin
+        OneParam:= Copy(Params, 1, Pos(',', Params) - 1);
+        Delete(Params, 1, Pos(',', Params));
+        Params:= Trim(Params);
+
+        StringGrid1.RowCount:= i + 1;
+
+        StringGrid1.Cells[1, i]:= Trim(Copy(OneParam, 1, Pos(' ', OneParam)));
+        StringGrid1.Cells[2, i]:= Trim(Copy(OneParam, Pos(' ', OneParam), Length(OneParam)));
+
+        Inc(i);
+      end;
+
+      Caption:= 'Call stored procedure: ' + AProcName;
+
+      if WithParams then
+        Called:= ShowModal = mrOK;  // View parameters form
+
+      if (Called) or (not WithParams) then
+      begin
+        QWindow:= ShowQueryWindow(SelNode.Parent.Parent.OverlayIndex, 'Call procedure: ' + AProcName);
+        QWindow.meQuery.lines.Clear;
+        if Pos('suspend', LowerCase(Body)) > 0 then
+          Line:= 'select * from ' + AProcName
+        else
+          Line:= 'execute procedure ' + AProcName;
+
+        if WithParams then
+          Line:= Line + '(';
+
+        for i:= 1 to StringGrid1.RowCount - 1 do
+          if Pos('CHAR', StringGrid1.Cells[2, i]) > 0 then
+            Line:= Line + '''' + StringGrid1.Cells[0, i] + ''', '
+          else
+            Line:= Line + StringGrid1.Cells[0, i] + ', ';
+        if WithParams then
+        begin
+          Delete(Line, Length(Line) - 1, 2);
+          Line:= Line + ')';
+        end;
+        Line:= Line + ';';
+        QWindow.meQuery.Lines.Add(Line);
+        QWindow.Show;
+
+      end;
+    end;
+  end;
+end;
+
+(****************  Connect As  *****************)
+
+procedure TfmMain.lmConnectAsClick(Sender: TObject);
+var
+  Node: TTreeNode;
+  Rec: TRegisteredDatabase;
+  Count: Integer;
+begin
+  Node:= tvMain.Selected;
+  Rec:= RegisteredDatabases[Node.OverlayIndex].RegRec;
+  fmEnterPass.edUser.Text:= Rec.UserName;
+  fmEnterPass.edPassword.Clear;
+  try
+    fmEnterPass.cbRole.Items.CommaText:= dmSysTables.GetDBObjectNames(Node.OverlayIndex, 9, Count);
+  except
+  end;
+  if fmEnterPass.ShowModal = mrOk then
+  begin
+    if fmReg.TestConnection(Rec.DatabaseName, fmEnterPass.edUser.Text, fmEnterPass.edPassword.Text,
+      Rec.Charset) then
+      begin
+        RegisteredDatabases[Node.OverlayIndex].RegRec.UserName:= fmEnterPass.edUser.Text;
+        RegisteredDatabases[Node.OverlayIndex].RegRec.Password:= fmEnterPass.edPassword.Text;
+        RegisteredDatabases[Node.OverlayIndex].RegRec.Role:= fmEnterPass.cbRole.Text;
+        Node.Expand(False);
+      end
+      else
+      begin
+        Exit;
+      end;
+  end;
+end;
+
+(****************  Fill and show constraints form ************************)
+
+procedure TfmMain.FillAndShowConstraintsForm(Form: TfmTableManage; ATableName: string; dbIndex: Integer);
+begin
+  dmSysTables.Init(dbIndex);
+  dmSysTables.GetTableConstraints(ATableName, Form.SQLQuery1);
+  Form.FillConstraints(dbIndex);
+end;
+
+(***********  Show and Fill Query Window *****************)
+
+procedure TfmMain.ShowCompleteQueryWindow(DatabaseIndex: Integer; ATitle,
+  AQueryText: string; OnCommitProcedure: TNotifyEvent = nil);
+var
+  QWindow: TfmQueryWindow;
+  Part: string;
+begin
+  QWindow:= ShowQueryWindow(DatabaseIndex, ATitle);
+  QWindow.meQuery.ClearAll;
+  QWindow.OnCommit:= OnCommitProcedure;
+  repeat
+    if Pos(#10, AQueryText) > 0 then
+      Part:= Copy(AQueryText, 1, Pos(#10, AQueryText))
+    else
+      Part:= AQueryText;
+    Delete(AQueryText, 1, Length(Part));
+    Part:= StringReplace(Part, #10, ' ', [rfReplaceAll]);
+
+    QWindow.meQuery.Lines.Add(Part);
+
+  until AQueryText = '';
+end;
+
+(***********************  Constraint Management  ********************)
+
+
+(**********  Create Auto Increment Trigger from current generator  **********)
+
+procedure TfmMain.lmCreateAutoIncClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    InitNewGen(SelNode.Parent.Parent.OverlayIndex);
+    fmNewGen.edGenName.Text:= SelNode.Text;
+    fmNewGen.edGenName.Enabled:= False;
+    fmNewGen.cxTrigger.Checked:= True;
+    fmNewGen.ShowModal;
+  end;
+end;
+
+(****************  Create new stored proc  *******************)
+
+procedure TfmMain.lmCreateStoredProcClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  QWindow: TfmQueryWindow;
+  AProcName: string;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  if InputQuery('Create new stored procedure', 'Please enter new procedure name', AProcName) then
+  begin
+    QWindow:= ShowQueryWindow(SelNode.Parent.OverlayIndex, 'Create new stored procedure');
+    QWindow.meQuery.Lines.Clear;
+ //   QWindow.meQuery.Lines.Add('SET TERM ^;');
+    QWindow.meQuery.Lines.Add('CREATE PROCEDURE ' + AProcName);
+    QWindow.meQuery.Lines.Add('-- Input parameters, you can modify,remove them');
+
+    QWindow.meQuery.Lines.Add('( Input1 int, -- You can replace it by your first parameter');
+    QWindow.meQuery.Lines.Add(' Input2 varchar(20) -- you can replace it by your second parameter');
+    QWindow.meQuery.Lines.Add(')');
+    QWindow.meQuery.Lines.Add('RETURNS');
+    QWindow.meQuery.Lines.Add('( Out1 int -- You can replace it by your first parameter');
+    QWindow.meQuery.Lines.Add(')');
+    QWindow.meQuery.Lines.Add('AS');
+    QWindow.meQuery.Lines.Add('BEGIN');
+    QWindow.meQuery.Lines.Add('  -- Write your procedure code here');
+    QWindow.meQuery.Lines.Add('END;');
+   // QWindow.meQuery.Lines.Add('SET TERM ;^');
+    QWindow.Show;
+  end;
+end;
+
+(***************  Create new Trigger  ****************)
+
+function TfmMain.CreateNewTrigger(dbIndex: Integer; ATableName: string; OnCommitProcedure: TNotifyEvent = nil): Boolean;
+var
+  QWindow: TfmQueryWindow;
+  AViewName: string;
+  TableNames: string;
+  TrigType: string;
+  Count: Integer;
+begin
+  Result:= False;
+  if ATableName <> '' then
+  begin
+    fmCreateTrigger.cbTables.Clear;
+    fmCreateTrigger.cbTables.Items.Add(ATableName);
+    fmCreateTrigger.cbTables.ItemIndex:= 0;
+  end;
+  fmCreateTrigger.edTriggerName.Clear;
+  fmCreateTrigger.cxUpdate.Checked:= False;
+  fmCreateTrigger.cxInsert.Checked:= False;
+  fmCreateTrigger.cxDelete.Checked:= False;
+
+  if fmCreateTrigger.ShowModal = mrOK then
+  begin
+    Result:= True;
+    QWindow:= ShowQueryWindow(dbIndex, 'Create new Trigger');
+    if fmCreateTrigger.rbAfter.Checked then
+      TrigType:= 'After'
+    else
+      TrigType:= 'Before';
+    if fmCreateTrigger.cxInsert.Checked then
+      TrigType:= TrigType + ' insert or';
+    if fmCreateTrigger.cxUpdate.Checked then
+      TrigType:= TrigType + ' update or';
+    if fmCreateTrigger.cxDelete.Checked then
+      TrigType:= TrigType + ' delete or';
+    Delete(TrigType, Length(TrigType) - 2, 3);
+
+    QWindow.meQuery.Lines.Clear;
+    QWindow.meQuery.Lines.Add('CREATE TRIGGER ' + fmCreateTrigger.edTriggerName.Text + ' for ' +
+      fmCreateTrigger.cbTables.Text);
+    QWindow.meQuery.Lines.Add('Active');
+    QWindow.meQuery.Lines.Add(TrigType);
+    QWindow.meQuery.Lines.Add('Position 0');
+    QWindow.meQuery.Lines.Add('AS');
+    QWindow.meQuery.Lines.Add('BEGIN');
+    QWindow.meQuery.Lines.Add(' -- Your code here');
+    QWindow.meQuery.Lines.Add(' -- New.FieldName = YourData;');
+    QWindow.meQuery.Lines.Add('END;');
+    fmMain.Show;
+
+    if OnCommitProcedure <> nil then
+      QWindow.OnCommit:= OnCommitProcedure;
+  end;
+end;
+
+(*******  Create Trigger click  ********)
+
+procedure TfmMain.lmCreateTriggerClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  DBIndex: Integer;
+  QWindow: TfmQueryWindow;
+  AViewName: string;
+  TableNames: string;
+  TrigType: string;
+  Count: Integer;
+begin
+  SelNode:= tvMain.Selected;
+  DBIndex:= SelNode.Parent.OverlayIndex;
+
+  TableNames:= dmSysTables.GetDBObjectNames(DBIndex, 1, Count);
+  fmCreateTrigger.cbTables.Items.CommaText:= TableNames;
+  CreateNewTrigger(DBIndex, '');
+end;
+
+(******************  Create New View   ***************)
+
+procedure TfmMain.lmCreateViewClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  QWindow: TfmQueryWindow;
+  AViewName: string;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  if InputQuery('Create new view', 'Please enter new view name', AViewName) then
+  begin
+    QWindow:= ShowQueryWindow(SelNode.Parent.OverlayIndex, 'Create new view');
+    QWindow.meQuery.Lines.Clear;
+    QWindow.meQuery.Lines.Add('CREATE VIEW "' + AViewName + '" (');
+    QWindow.meQuery.Lines.Add('Field1Name, Field2Name) ');
+    QWindow.meQuery.Lines.Add('AS');
+    QWindow.meQuery.Lines.Add('SELECT Field1, Field2 FROM ATableName');
+    QWindow.meQuery.Lines.Add('-- WHERE condition');
+    QWindow.Show;
+  end;
+end;
+
+procedure TfmMain.lmDeactiveTrigClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+begin
+  SelNode:= tvMain.Selected;
+  if ChangeTriggerActivity(SelNode.Parent.Parent.OverlayIndex, SelNode.Text, False) then
+    MessageDlg('Trigger has been DeActivated', mtInformation, [mbOk], 0);
+end;
+
+(***************  Display view top 1000 records  ************)
+
+procedure TfmMain.lmDisplay1000VClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  QWindow: TfmQueryWindow;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    QWindow:= ShowQueryWindow(SelNode.Parent.Parent.OverlayIndex,  'Select first 1000 from ' + SelNode.Text);
+    QWindow.meQuery.Lines.Text:= 'select first 1000 * from "' + SelNode.Text + '"';
+    QWindow.bbRunClick(nil);
+    QWindow.Show;
+  end;
+end;
+
+(**********  Drop Exception ********)
+
+procedure TfmMain.lmDropExceptionClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  QWindow: TfmQueryWindow;
+begin
+  SelNode:= tvMain.Selected;
+  if MessageDlg('Are you sure you want to delete ' + SelNode.Text + ' permenentaly', mtConfirmation,
+    [mbYes, mbNo], 0) = mrYes then
+  begin
+    QWindow:= ShowQueryWindow(SelNode.Parent.Parent.OverlayIndex, 'Drop Exception');
+    QWindow.meQuery.Lines.Clear;
+    QWindow.meQuery.Lines.Add('DROP EXCEPTION ' + SelNode.Text + ';');
+    QWindow.Show;
+  end;
+end;
+
+(***********  Edit Data in a form  *****************)
+
+procedure TfmMain.lmEditDataFormClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  Rec: TDatabaseRec;
+  EditForm: TfmEditDataFullRec;
+  ATableName: string;
+  i: Integer;
+  ConstraintsList: TStringList;
+  PKFieldsList: TStringList;
+  FieldLine: string;
+  dbIndex: Integer;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    ATableName:= SelNode.Text;
+    Rec:= RegisteredDatabases[dbIndex];
+    EditForm:= TfmEditDataFullRec(FindCusomForm(Rec.RegRec.Title + ': Edit Data (Form) for Table : ' +
+      ATableName, TfmEditDataFullRec));
+    if EditForm = nil then
+    begin
+      EditForm:= TfmEditDataFullRec.Create(Application);
+      EditForm.Init(dbIndex, ATableName);
+      EditForm.Caption:= Rec.RegRec.Title + ': Edit Data (Form) for Table : ' + ATableName;
+    end;
+    EditForm.Show;
+  end;
+end;
+
+(***************  Edit stored procedure  *****************)
+
+procedure TfmMain.lmEditProcClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  AProcName: string;
+  SPOwner: string;
+  spBody: string;
+  QWindow: TfmQueryWindow;
+  DBIndex: Integer;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    AProcName:= SelNode.Text;
+    DBIndex:= SelNode.Parent.Parent.OverlayIndex;
+    SPBody:= GetStoredProcBody(DBIndex, AProcName, SPOwner);
+
+    // Procedure body
+    QWindow:= ShowQueryWindow(DBIndex, 'Edit stored procedure ' + AProcName);
+    QWindow.meQuery.Lines.Clear;
+  //  QWindow.meQuery.Lines.Add('SET TERM ^ ;');
+    QWindow.meQuery.Lines.Add('ALTER PROCEDURE ' + AProcName + '(');
+    QWindow.meQuery.Text:= QWindow.meQuery.Text + Trim(spBody) + ';';
+   // QWindow.meQuery.Lines.Add('SET TERM ; ^');
+
+    QWindow.Show;
+  end;
+end;
+
+(**********************  Edit Table data  ***************************)
+
+
+procedure TfmMain.lmEditTableClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  Rec: TDatabaseRec;
+  EditWindow: TfmEditTable;
+  ATableName: string;
+  i: Integer;
+  ConstraintsList: TStringList;
+  PKFieldsList: TStringList;
+  FieldLine: string;
+  dbIndex: Integer;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    ATableName:= SelNode.Text;
+    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    Rec:= RegisteredDatabases[dbIndex];
+    EditWindow:= TfmEditTable(FindCusomForm(Rec.RegRec.Title + ': Edit Data for Table : ' + ATableName, TfmEditTable));
+    if EditWindow = nil then
+    begin
+      EditWindow:= TfmEditTable.Create(Application);
+      EditWindow.Rec:= Rec;
+      EditWindow.Caption:= EditWindow.Rec.RegRec.Title + ': Edit Data for Table : ' + ATableName;
+
+      EditWindow.Init(dbIndex, ATableName);
+    end;
+    EditWindow.Show;
+  end;
+end;
+
+(****************  Edit Trigger  ******************)
+
+procedure TfmMain.lmEditTriggerClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  QWindow: TfmQueryWindow;
+  ATriggerName: string;
+  Body: string;
+  AfterBefore: string;
+  Event: string;
+  OnTable: string;
+  TriggerEnabled: Boolean;
+  TriggerPosition: Integer;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    ATriggerName:= SelNode.Text;
+    QWindow:= ShowQueryWindow(SelNode.Parent.Parent.OverlayIndex, 'Edit Trigger ' + ATriggerName);
+
+    QWindow.meQuery.Lines.Clear;
+    dmSysTables.ScriptTrigger(SelNode.Parent.Parent.OverlayIndex, ATriggerName, QWindow.meQuery.Lines);
+    QWindow.Show;
+  end;
+
+end;
+
+(********************  Edit View  ********************)
+
+procedure TfmMain.lmEditViewClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  QWindow: TfmQueryWindow;
+  AViewName: string;
+  ViewBody, Columns: string;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    AViewName:= SelNode.Text;
+    QWindow:= ShowQueryWindow(SelNode.Parent.Parent.OverlayIndex, 'Edit view ' + AViewName);
+
+    GetViewInfo(SelNode.Parent.Parent.OverlayIndex, AViewName, Columns, ViewBody);
+    QWindow.meQuery.Lines.Clear;
+    QWindow.meQuery.Lines.Add('drop view "' + AViewName + '";');
+    QWindow.meQuery.Lines.Add('');
+    QWindow.meQuery.Lines.Add('CREATE VIEW "' + AViewName + '" (' + Columns + ')');
+    QWindow.meQuery.Lines.Add('AS');
+
+    QWindow.meQuery.Text:= QWindow.meQuery.Text + ViewBody;
+    QWindow.Show;
+  end;
+
+end;
+
+(***********  Show Indices Management  **************)
+
+procedure TfmMain.ShowIndicesManagement(AForm: TForm; DatabaseIndex: Integer; ATableName: string);
+var
+  AQuery: TSQLQuery;
+  i: Integer;
+  IndexFields: string;
+  ATitle: string;
+  Rec: TDatabaseRec;
+  CurrentRow: Integer;
+  FieldsList: TStringList;
+  ConstraintName: string;
+  Form: TfmTableManage;
+begin
+  Form:= AForm as TfmTableManage;
+  Rec:= RegisteredDatabases[DatabaseIndex];
+  AQuery:= TSQLQuery.Create(nil);
+  AQuery.Close;
+
+  if ibConnection <> RegisteredDatabases[DatabaseIndex].IBConnection then
+  begin
+    ibConnection:= RegisteredDatabases[DatabaseIndex].IBConnection;
+    sqlTransaction:= RegisteredDatabases[DatabaseIndex].SQLTrans;
+  end;
+  AQuery.DataBase:= ibConnection;
+
+  Form.sgIndices.RowCount:= 1;
+
+  // Get primary key index name
+  Form.PKeyName:= GetPrimaryKeyIndexName(DatabaseIndex, ATableName, ConstraintName);
+  Form.ConstraintName:= ConstraintName;
+
+  // Index names
+  if GetIndices(ATableName, AQuery) then
+  with Form do
+  while not AQuery.EOF do
+  begin
+    if Trim(AQuery.FieldByName('RDB$Index_name').AsString) = PKeyName then
+    begin
+      sgIndices.InsertColRow(False, 1);
+      CurrentRow:= 1;
+    end
+    else
+    begin
+      sgIndices.RowCount:= sgIndices.RowCount + 1;
+      CurrentRow:= sgIndices.RowCount - 1;
+    end;
+    sgIndices.Cells[0, CurrentRow]:= Trim(AQuery.FieldByName('RDB$Index_Name').AsString);
+    if AQuery.FieldByName('RDB$Unique_Flag').AsString = '1' then
+      sgIndices.Cells[1, CurrentRow]:= '1'
+    else
+      sgIndices.Cells[1, CurrentRow]:= '0';
+
+    if AQuery.FieldByName('RDB$Index_Type').AsString = '1' then
+      sgIndices.Cells[2, CurrentRow]:= 'Desc'
+    else
+      sgIndices.Cells[2, CurrentRow]:= 'Asc';
+
+    if Trim(AQuery.FieldByName('RDB$Index_Name').AsString) = Form.PKeyName then
+      sgIndices.Cells[4, CurrentRow]:= '1'
+    else
+      sgIndices.Cells[4, CurrentRow]:= '0';
+    AQuery.Next;
+  end;
+
+  FieldsList:= TStringList.Create;
+
+  // Index fields
+  with Form do
+  for i:= 1 to sgIndices.RowCount - 1 do
+  begin
+    IndexFields:= '';
+    if GetIndexFields(ATableName, sgIndices.Cells[0, i], AQuery, FieldsList) then
+    begin
+      IndexFields:= FieldsList.CommaText;
+      sgIndices.Cells[3, i]:= IndexFields;
+    end;
+  end;
+  FieldsList.Free;
+  Form.edIndexName.Text:= 'IX_' + ATableName + '_' + IntToStr(Form.sgIndices.RowCount);
+
+  // Field names
+  GetFields(DatabaseIndex, ATableName, nil);
+  with Form, Self.SQLQuery1 do
+  begin
+    clbFields.Clear;
+    while not EOF do
+    begin
+      if (Pos('CHAR', Trim(FieldByName('Field_Type_Str').AsString)) = 0) or
+       (Trim(FieldByName('Field_Collation').AsString) = 'NONE') or
+       (FieldByName('Field_Collation').IsNull) then
+      if (FieldByName('Field_Type_Str').AsString <> 'BLOB') then
+        clbFields.Items.Add(FieldByName('Field_Name').AsString);
+      Next;
+    end;
+    Self.SQLQuery1.Close;
+  end;
+  AQuery.Close;
+  AQuery.Free;
+  if Form.sgIndices.RowCount > 1 then
+    Form.sgIndices.Row:= 1;
+end;
+
+(**************  New Domain  *************)
+
+procedure TfmMain.lmNewDomainClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  QWindow: TfmQueryWindow;
+  Line: string;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  if fmNewDomain.ShowModal = mrOk then
+  with QWindow do
+  begin
+    QWindow:= ShowQueryWindow(SelNode.Parent.OverlayIndex, 'Create new domain');
+    meQuery.Lines.Clear;
+    Line:= 'CREATE DOMAIN ' + fmNewDomain.edName.Text + ' AS ' + fmNewDomain.cbType.Text;
+    if Pos('char', LowerCase(fmNewDomain.cbType.Text)) > 0 then
+      Line:= Line + '(' + IntToStr(fmNewDomain.seSize.Value) + ')';
+    meQuery.Lines.Add(Line);
+
+    if Trim(fmNewDomain.edDefault.Text) <> '' then
+    begin
+      if Pos('char', LowerCase(fmNewDomain.cbType.Text)) > 0 then
+        meQuery.Lines.Add('default ''' + fmNewDomain.edDefault.Text + '''')
+      else
+        meQuery.Lines.Add('DEFAULT ' + fmNewDomain.edDefault.Text);
+    end;
+    Show;
+  end;
+end;
+
+(***********  Add New exception  ****************)
+
+procedure TfmMain.lmNewExceptionClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  QWindow: TfmQueryWindow;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    QWindow:= ShowQueryWindow(SelNode.Parent.OverlayIndex, 'Create new Exception');
+    QWindow.meQuery.Lines.Clear;
+    QWindow.meQuery.Lines.Add('CREATE EXCEPTION Exception_name_1 ''exception message'';');
+    QWindow.Show;
+  end;
+end;
+
+
+(**************  Initialize New Generator form  *************)
+
+procedure TfmMain.InitNewGen(DatabaseIndex: Integer);
+var
+  Rec: TDatabaseRec;
+  TableNames: string;
+  Count: integer;
+begin
+  Rec:= RegisteredDatabases[DatabaseIndex];
+
+  TableNames:= dmSysTables.GetDBObjectNames(DatabaseIndex, 1, Count);
+  fmNewGen.DatabaseIndex:= DatabaseIndex;
+
+  fmNewGen.cbTables.Items.CommaText:= TableNames;
+  fmNewGen.Init(DatabaseIndex);
+end;
+
+function TfmMain.GetServerName(DBName: string): string;
+begin
+  if Pos(':', DBName) > 2 then
+    Result:= Copy(DBName, 1, Pos(':', DBName) - 1)
+  else
+    Result:= 'localhost';
+end;
+
+function TfmMain.GetServerNameNode(ServerName: string): TTreeNode;
+var
+  i: Integer;
+  Node: TTreeNode;
+begin
+  Node:= nil;
+  ServerName:= LowerCase(ServerName);
+  if tvMain.Items.Count > 0 then
+    Node:= tvMain.Items[0];
+  Result:= nil;
+  while Node <> nil do
+  begin
+    if (Node.Text <> '') and (LowerCase(Node.Text) = ServerName) then
+    begin
+      Result:= Node;
+      Break;
+    end;
+    Node:= Node.GetNextSibling;
+  end;
+end;
+
+function TfmMain.RemoveSpecialChars(AText: string): string;
+var
+  i: Integer;
+begin
+  for i:= Length(AText) to 1 do
+    if Pos(AText[i], ' !@#$%^&*()[]{}/?<>:;"|\,.~`''') > 0 then
+      System.Delete(AText, i, 1);
+  Result:= AText;
+end;
+
+procedure TfmMain.ReleaseRegisteredDatabases;
+var
+  i: Integer;
+begin
+  for i:= 0 to High(RegisteredDatabases) do
+  begin
+    RegisteredDatabases[i].IBConnection.Close;
+    RegisteredDatabases[i].SQLTrans.Free;
+    RegisteredDatabases[i].IBConnection.Free;
+  end;
+
+  RegisteredDatabases:= nil;
+
+end;
+
+procedure TfmMain.SetConnection(Index: Integer);
+begin
+  if ibConnection <> RegisteredDatabases[Index].IBConnection then
+  begin
+    ibConnection:= RegisteredDatabases[Index].IBConnection;
+    ibConnection.Close;
+    sqlTransaction:= RegisteredDatabases[Index].SQLTrans;
+    ibConnection.Transaction:= sqlTransaction;
+    SQLQuery1.DataBase:= ibConnection;
+    SQLQuery1.Transaction:= sqlTransaction;
+  end;
+end;
+
+procedure TfmMain.SetFocus;
+begin
+  if not fActivated then
+    inherited SetFocus;
+end;
+
+function TfmMain.GetNumericFieldType(FieldType, SubType, FieldLength,
+  Scale: Integer): string;
+begin
+  if SubType = 0 then
+  begin
+    case FieldType of
+        7: Result:= 'SMALLINT';
+        8: Result:= 'INTEGER';
+        16: Result:= 'BIGINT';
+    end;
+
+  end
+  else
+  begin
+    if SubType = 1 then
+      Result:= 'Numeric('
+    else
+    if SubType = 2 then
+      Result:= 'Decimal(';
+    case FieldLength of
+        4: Result:= Result + '9,';
+        8: Result:= Result + '18,';
+      else
+        Result:= Result + IntToStr(FieldLength) + ',';
+    end;
+    Result:= Result + IntToStr(Abs(Scale)) + ')';
+  end;
+end;
+
+function TfmMain.AddToSQLHistory(DatabaseTitle: string; SQLType, SQLStatement: string): Boolean;
+begin
+  try
+    Result:= OpenSQLHistory(DatabaseTitle);
+    if Result then
+    begin
+      mdsHistory.Last;
+      if (SQLType <> 'SELECT') or (mdsHistory.FieldByName('SQLStatement').AsString <> SQLStatement) then
+      begin
+        mdsHistory.AppendRecord([Now, SQLType, SQLStatement, 0]);
+        if SQLType = 'DDL' then
+          mdsHistory.SaveToFile(CurrentHistoryFile);
+      end;
+    end;
+
+  except
+  on e: exception do
+  begin
+    Result:= False;
+    ShowMessage(e.Message);
+  end;
+
+  end;
+end;
+
+function TfmMain.SaveAndCloseSQLHistory: Boolean;
+begin
+  try
+    if mdsHistory.Active then
+      mdsHistory.SaveToFile(CurrentHistoryFile);
+
+    mdsHistory.Close;
+    Result:= True;
+
+  except
+  on e: exception do
+  begin
+    Result:= False;
+    ShowMessage(e.Message)
+  end;
+
+  end;
+end;
+
+function TfmMain.OpenSQLHistory(DatabaseTitle: string): Boolean;
+var
+  AFileName: string;
+  i: Integer;
+begin
+  try
+    AFileName:= ExtractFilePath(ParamStr(0)) + LowerCase(RemoveSpecialChars(DatabaseTitle)) + '.history';
+
+    // Different opened history file
+    if mdsHistory.Active and (AFileName <> CurrentHistoryFile) then
+    begin
+      if CurrentHistoryFile <> '' then
+        mdsHistory.SaveToFile(CurrentHistoryFile);
+       mdsHistory.Close;
+    end;
+
+    if not mdsHistory.Active then
+    if FileExists(AFileName) then
+    begin
+      try
+        mdsHistory.LoadFromFile(AFileName);
+
+      except
+      on e: exception do
+        mdsHistory.SaveToFile(AFileName);
+      end;
+    end
+    else
+      mdsHistory.CreateTable;
+
+    if not mdsHistory.Active then
+      mdsHistory.Open;
+
+    if mdsHistory.RecNo > 10000 then
+    begin
+      mdsHistory.First;
+      for i:= 1 to 2 do
+        mdsHistory.Delete;
+    end;
+    CurrentHistoryFile:= AFileName;
+    Result:= True;
+
+  except
+  on e: exception do
+  begin
+    Result:= False;
+    ShowMessage(e.Message);
+  end;
+
+  end;
+end;
+
+function TfmMain.RetreiveInputParamFromSP(Body: string): string;
+var
+  i: Integer;
+  SizeStarted: Boolean;
+begin
+  SizeStarted:= False;
+  if (Pos('(', Body) > 0) and (Pos('(', Body) < Pos(')', Body)) then
+  for i:= 1 to Length(Body) do
+  begin
+    if (Body[i] = ')') and (not SizeStarted) then
+    begin
+      Result:= Trim(Copy(Body, 1, i - 1));
+      Break;
+    end;
+
+    if (Body[i] = ')') and (SizeStarted) then
+      SizeStarted:= False;
+
+    if Body[i] = '(' then
+      SizeStarted:= True;
+
+  end
+  else
+    Result:= Trim(Copy(Body, 1, Pos(')', Body) - 1));
+end;
+
+(**************  New Generator  *******************)
+
+procedure TfmMain.lmNewGenClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    InitNewGen(SelNode.Parent.OverlayIndex);
+    fmNewGen.edGenName.Clear;
+    fmNewGen.edGenName.Enabled:= True;
+    fmNewGen.cxTrigger.Checked:= False;
+    fmNewGen.ShowModal;
+  end;
+end;
+
+(************  Add New Table   ******************)
+
+procedure TfmMain.lmNewTableClick(Sender: TObject);
+var
+  Rec: TDatabaseRec;
+  SelNode: TTreeNode;
+  dbIndex: Integer;
+begin
+  SelNode:= tvMain.Selected;
+  dbIndex:= SelNode.Parent.OverlayIndex;
+  Rec:= RegisteredDatabases[dbIndex];
+
+  fmNewTable.Init(dbIndex);
+  if fmNewTable.ShowModal = mrOK then
+    if fmNewTable.cxCreateGen.Checked then // Create Auto Inc generator
+    begin
+      InitNewGen(dbIndex);
+      fmNewGen.edGenName.Text:= fmNewTable.GeneratorName;
+      fmNewGen.edGenName.Enabled:= True;
+      fmNewGen.cxTrigger.Checked:= True;
+
+      // Select table name as default in create new generator form
+      fmNewGen.cbTables.ItemIndex:= fmNewGen.cbTables.Items.IndexOf(UpperCase(Trim(fmNewTable.edNewTable.Text)));
+      fmNewGen.cbTablesChange(nil);
+      fmNewGen.gbTrigger.Enabled:= False;
+      fmNewGen.cxTrigger.Enabled:= False;
+      fmNewGen.Show;
+    end;
+end;
+
+(*************  Create new function  ******************)
+
+procedure TfmMain.lmNewUDFClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  QWindow: TfmQueryWindow;
+  AFuncName: string;
+  ModuleName, EntryPoint: string;
+begin
+  SelNode:= tvMain.Selected;
+  ModuleName:= '<modulename>';
+  EntryPoint:= '<entryname>';
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  if InputQuery('Create new function', 'Please enter new function name', AFuncName) then
+  if InputQuery('Create new function', 'Please enter module name (Library)', ModuleName) then
+  if InputQuery('Create new function', 'Please enter entry point (External function name)', EntryPoint) then
+  begin
+    QWindow:= ShowQueryWindow(SelNode.Parent.OverlayIndex, 'Create new function');
+    QWindow.meQuery.Lines.Clear;
+    QWindow.meQuery.Lines.Add('DEFINE EXTERNAL FUNCTION ' + AFuncName + ' [<datatype> | CSTRING (int)');
+    QWindow.meQuery.Lines.Add('[, <datatype> | CSTRING (int) ...]]');
+    QWindow.meQuery.Lines.Add('RETURNS {<datatype> [BY VALUE] | CSTRING (int)}');
+    QWindow.meQuery.Lines.Add('ENTRY_POINT "' + entryPoint + '"');
+    QWindow.meQuery.Lines.Add('MODULE_NAME "' + modulename + '" ;');
+    QWindow.Show;
+  end;
+end;
+
+(**********  Open Query 2 Click ************)
+
+procedure TfmMain.lmOpenQuery2Click(Sender: TObject);
+begin
+  lmOpenQueryClick(Sender);
+end;
+
+(**********  Open Query Window from Database  *************)
+
+procedure TfmMain.lmOpenQueryClick(Sender: TObject);
+var
+  QWindow: TfmQueryWindow;
+  Rec: TRegisteredDatabase;
+  Count: Integer;
+  dbIndex: Integer;
+begin
+  dbIndex:= tvMain.Selected.OverlayIndex;
+  Rec:= RegisteredDatabases[dbIndex].RegRec;
+  // Password form
+  if (Rec.Password = '') and (not tvMain.Selected.Expanded) then
+  begin
+    fmEnterPass.edPassword.Clear;
+    try
+      fmEnterPass.cbRole.Items.CommaText:= dmSysTables.GetDBObjectNames(dbIndex, 9, Count);
+    except
+    end;
+    if fmEnterPass.ShowModal = mrOk then
+    begin
+      if fmReg.TestConnection(Rec.DatabaseName, fmEnterPass.edUser.Text, fmEnterPass.edPassword.Text,
+        Rec.Charset) then
+          RegisteredDatabases[dbIndex].RegRec.Password:= fmEnterPass.edPassword.Text
+        else
+          Exit;
+    end;
+  end;
+  QWindow:= ShowQueryWindow(dbIndex, 'Query Window');
+  QWindow.Show;
+end;
+
+procedure TfmMain.lmPermissionsClick(Sender: TObject);
+var
+  dbIndex: Integer;
+  Form: TfmUserPermissions;
+  List: TStringList;
+  UserName: string;
+  i: Integer;
+  Permission: string;
+  ObjType: Integer;
+  ObjTypeName: string;
+  ObjName: string;
+begin
+  dbIndex:= tvMain.Selected.Parent.Parent.OverlayIndex;
+  UserName:= tvMain.Selected.Text;
+  List:= TStringList.Create;
+  List.CommaText:= dmSysTables.GetUserObjects(dbIndex, UserName);
+  Form:= TfmUserPermissions.Create(nil);
+  Form.Caption:= 'Permissions for: ' + UserName;
+  Form.StringGrid1.RowCount:= 1;
+  with Form do
+  for i:= 0 to List.Count - 1 do
+  begin
+    ObjName:= List[i];
+    if Pos('<G>', ObjName) = 1 then
+      Delete(ObjName, 1, 3);
+    Permission:= dmSysTables.GetObjectUserPermission(dbIndex, ObjName, UserName, ObjType);
+    StringGrid1.RowCount:= StringGrid1.RowCount + 1;
+
+    case ObjType of
+      0: ObjTypeName:= 'Table/View';
+      5: ObjTypeName:= 'Procedure';
+      13: ObjTypeName:= 'Role';
+    else
+      ObjTypeName:= IntToStr(ObjType);
+    end;
+    StringGrid1.Cells[0, i + 1]:= ObjTypeName;
+    StringGrid1.Cells[1, i + 1]:= ObjName;
+    StringGrid1.Cells[2, i + 1]:= Permission;
+  end;
+  Form.Show;
+  List.Free;
+end;
+
+(***********  Refresh Click  *************)
+
+procedure TfmMain.lmRefreshClick(Sender: TObject);
+begin
+  if tvMain.Selected.Expanded then
+    tvMain.Selected.Collapse(False);
+  tvMainExpanded(nil, tvMain.Selected)
+end;
+
+procedure TfmMain.lmRegdbClick(Sender: TObject);
+begin
+  fmReg.edDatabaseName.Text:= tvMain.Selected.Text + ':';
+  mnRegDBClick(nil);
+end;
+
+procedure TfmMain.lmRestoreClick(Sender: TObject);
+begin
+  fmBackupRestore.Init('', tvMain.Selected.Text +  ':', '', '');
+  fmBackupRestore.cbOperation.ItemIndex:= 1;
+  fmBackupRestore.cbOperation.Enabled:= False;
+  fmBackupRestore.meLog.Clear;
+  fmBackupRestore.Show;
+end;
+
+procedure TfmMain.lmRolePerManagementClick(Sender: TObject);
+var
+  fmPermissions: TfmPermissionManage;
+begin
+  fmPermissions:= TfmPermissionManage.Create(nil);
+  fmPermissions.Init(tvMain.Selected.Parent.Parent.OverlayIndex, '', tvMain.Selected.Text, 2);
+  fmPermissions.Show;
+end;
+
+procedure TfmMain.lmRolePermissionsClick(Sender: TObject);
+begin
+  lmPermissionsClick(Sender);
+end;
+
+(***********  Script Database  ************)
+
+procedure TfmMain.lmScriptDatabaseClick(Sender: TObject);
+var
+  QueryWindow: TfmQueryWindow;
+  List: TStringList;
+  dbIndex: Integer;
+begin
+  dbIndex:= tvMain.Selected.OverlayIndex;
+  QueryWindow:= ShowQueryWindow(dbIndex, 'Database Script');
+  List:= TStringList.Create;
+  try
+    Screen.Cursor:= crSQLWait;
+    Application.ProcessMessages;
+    with QueryWindow.meQuery do
+    begin
+      ClearAll;
+      Lines.Add('-- ' + tvMain.Selected.Text + ' database script. Generated on: ' + DateTimeToStr(Now) );
+
+      Lines.Add('');
+      Lines.Add('--      Roles');
+      Lines.Add('');
+      ScriptAllRoles(dbIndex, List);
+      Lines.AddStrings(List);
+
+      Lines.Add('');
+      Lines.Add('--      Functions (UDF)');
+      Lines.Add('');
+      ScriptAllFunctions(dbIndex, List);
+      List.Text:= StringReplace(List.Text, #10, #13#10, [rfReplaceAll]);
+      Lines.AddStrings(List);
+
+      Lines.Add('');
+      Lines.Add('--     Domains');
+      Lines.Add('');
+      ScriptAllDomains(dbIndex, List);
+      Lines.AddStrings(List);
+
+      Lines.Add('');
+      Lines.Add('--      Generators');
+      Lines.Add('');
+      ScriptAllGenerators(dbIndex, List);
+      Lines.AddStrings(List);
+
+      Lines.Add('');
+      Lines.Add('--      Tables');
+      ScriptAllTables(dbIndex, List);
+      Lines.AddStrings(List);
+
+      Lines.Add('');
+      Lines.Add('--      Stored Procedures');
+      Lines.Add('');
+      ScriptAllProcedureTemplates(dbIndex, List);
+      Lines.AddStrings(List);
+
+      Lines.Add('');
+      Lines.Add('/*      Views  */');
+      Lines.Add('');
+      ScriptAllViews(dbIndex, List);
+      Lines.AddStrings(List);
+
+      Lines.Add('');
+      Lines.Add('--      Triggers');
+      Lines.Add('');
+      ScriptAllTriggers(dbIndex, List);
+      Lines.AddStrings(List);
+
+      Lines.Add('');
+      Lines.Add('--      Secondary Indices');
+      Lines.Add('');
+      ScriptAllSecIndices(dbIndex, List);
+      Lines.AddStrings(List);
+
+      Lines.Add('');
+      Lines.Add('--      Constraints');
+      Lines.Add('');
+      ScriptAllConstraints(dbIndex, List);
+      Lines.AddStrings(List);
+
+      Lines.Add('');
+      Lines.Add('--      Permissions');
+      Lines.Add('');
+      ScriptAllPermissions(dbIndex, List);
+      Lines.AddStrings(List);
+      Lines.Add('');
+
+    end;
+    QueryWindow.Show;
+
+  except
+  on e: exception do
+  begin
+    Screen.Cursor:= crDefault;
+    ShowMessage(e.Message);
+  end;
+
+  end;
+  Screen.Cursor:= crDefault;
+  List.Free;
+end;
+
+(**************  Script Exception  ****************)
+
+procedure TfmMain.lmScriptExceptionClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  Script, Msg, Desc: string;
+begin
+  SelNode:= tvMain.Selected;
+  if dmSysTables.GetExceptionInfo(SelNode.Text, Msg, Desc, Script) then
+    ShowCompleteQueryWindow(SelNode.Parent.Parent.OverlayIndex, 'Script Exception ' + SelNode.Text, Script, nil);
+end;
+
+(**************  Script table as Insert stored procedure ************)
+
+procedure TfmMain.lmScriptInsertClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  QWindow: TfmQueryWindow;
+  ATableName: string;
+  i: Integer;
+  ConstraintsList: TStringList;
+  PKFieldsList: TStringList;
+  FieldLine: string;
+  FieldNames: string;
+  ParamNames: string;
+  Skipped: Boolean;
+  dbIndex: Integer;
+  LastParam: string;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    ATableName:= SelNode.Text;
+    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    QWindow:= ShowQueryWindow(dbIndex, 'Script Table as insert : ' + ATableName);
+    GetFields(dbIndex, ATableName, nil);
+    QWindow.meQuery.Lines.Clear;
+    QWindow.meQuery.Lines.Add('create procedure InsertTo' + ATableName + ' (');
+
+    // Params
+    FieldNames:= '';
+    ParamNames:= '';
+    with SQLQuery1 do
+    while not EOF do
+    begin
+      Skipped:= False;
+      if (FieldByName('Computed_Source').AsString = '') and
+          ((Pos('CHAR', Trim(FieldByName('Field_Type_Str').AsString)) = 0) or
+          (Trim(FieldByName('Field_Collation').AsString) = 'NONE') or
+          (FieldByName('Field_Collation').IsNull)) then
+      begin
+        FieldNames:= FieldNames + Trim(FieldByName('Field_Name').AsString);
+        ParamNames:= ParamNames + ':' + Trim(FieldByName('Field_Name').AsString);
+        FieldLine:= Trim(FieldByName('Field_Name').AsString) + ' ';
+        FieldLine:= FieldLine + Trim(FieldByName('Field_Type_Str').AsString);
+        if Pos('char', LowerCase(FieldByName('Field_Type_Str').AsString)) > 0 then
+          FieldLine:= FieldLine + '(' + FieldByName('Field_Length').AsString + ') ';
+      end
+      else
+        Skipped:= True;
+
+      Next;
+
+      if not Skipped then
+      begin
+        if not EOF then
+        begin
+          FieldLine:= FieldLine + ',';
+          FieldNames:= FieldNames + ', ';
+          ParamNames:= ParamNames + ', ';
+        end;
+        QWindow.meQuery.Lines.Add(FieldLine);
+      end;
+
+    end;
+    SQLQuery1.Close;
+
+    // Remote last , if any
+    if RightStr(FieldNames, 2) = ', ' then
+    begin
+      System.Delete(FieldNames, Length(FieldNames) - 1, 2);
+      System.Delete(ParamNames, Length(ParamNames) - 1, 2);
+    end;
+
+    // Remove last , if any
+    LastParam:= QWindow.meQuery.Lines[QWindow.meQuery.Lines.Count - 1];
+    if Pos(',', LastParam) > 0 then
+    begin
+      LastParam:= StringReplace(LastParam, ',', '', []);
+      QWindow.meQuery.Lines[QWindow.meQuery.Lines.Count - 1]:= LastParam;
+    end;
+
+    QWindow.meQuery.Lines.Add(')');
+    QWindow.meQuery.Lines.Add('AS');
+    QWindow.meQuery.Lines.Add('BEGIN');
+    QWindow.meQuery.Lines.Add('insert into ' + ATableName + ' (' + FieldNames + ')');
+    QWindow.meQuery.Lines.Add('values (' + ParamNames + ');');
+    QWindow.meQuery.Lines.Add('end;');
+
+    QWindow.Show;
+
+  end;
+end;
+
+(********  Script table as Create  ***********)
+
+procedure TfmMain.lmScriptTableCreateClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  QWindow: TfmQueryWindow;
+  ATableName: string;
+  dbIndex: Integer;
+  ScriptList: TStringList;
+  Line: string;
+  PKName: string;
+  ConstraintName: string;
+  List: TStringList;
+  i: Integer;
+  GenList: TStringList;
+  UserName: string;
+  ObjType: Integer;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    ATableName:= SelNode.Text;
+    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    ScriptList:= TStringList.Create;
+    ScriptTableAsCreate(dbIndex, ATableName, ScriptList);
+    QWindow:= ShowQueryWindow(dbIndex, 'Script Table as Create: ' + ATableName);
+    QWindow.meQuery.Lines.Clear;
+    QWindow.meQuery.Lines.AddStrings(ScriptList);
+
+    // Script table constraints
+    dmSysTables.sqQuery.Close;
+    SQLQuery1.Close;
+    dmSysTables.GetTableConstraints(ATableName, dmSysTables.sqQuery);
+    with dmSysTables do
+    while not sqQuery.EOF do
+    begin
+       Line:= 'alter table ' + ATableName + ' add constraint ' + sqQuery.Fields[0].AsString +
+         ' foreign key (' + sqQuery.Fields[3].AsString + ') references ' +  sqQuery.Fields[4].AsString  +
+         ' (' + dmSysTables.GetConstraintForiegnKeyFields(sqQuery.Fields[5].AsString, fmMain.SQLQuery1) + ') ';
+       if Trim(sqQuery.Fields[6].AsString) <> 'RESTRICT' then
+         Line:= Line + ' on update ' + Trim(sqQuery.Fields[6].AsString);
+       if Trim(sqQuery.Fields[7].AsString) <> 'RESTRICT' then
+         Line:= Line + ' on delete ' + Trim(sqQuery.Fields[7].AsString);
+       QWindow.meQuery.Lines.Add(Line + ';');
+       sqQuery.Next;
+    end;
+    dmSysTables.sqQuery.Close;
+    SQLQuery1.Close;
+    QWindow.meQuery.Lines.Add('');
+
+    // Script Secondary indices
+    PKName:= GetPrimaryKeyIndexName(dbIndex, ATableName, ConstraintName);
+    List:= TStringList.Create;
+    GenList:= TStringList.Create;
+
+    with dmSysTables do
+    if GetIndices(ATableName, sqQuery) then
+    with sqQuery do
+    while not EOF do
+    begin
+      if PKName <> Trim(FieldByName('RDB$Index_name').AsString) then
+      begin
+        Line:= 'create ';
+        if FieldByName('RDB$Unique_Flag').AsString = '1' then
+          Line:= Line + 'Unique ';
+        if FieldByName('RDB$Index_Type').AsString = '1' then
+          Line:= Line + 'Descending ';
+
+        Line:= Line + 'index ' + Trim(FieldByName('RDB$Index_name').AsString) + ' on ' + ATableName;
+
+        GetIndexFields(ATableName, Trim(FieldByName('RDB$Index_Name').AsString), fmMain.SQLQuery1, List);
+        Line:= Line + ' (' + List.CommaText + ') ;';
+        QWindow.meQuery.Lines.Add(Line);
+
+      end;
+      Next;
+    end;
+    QWindow.meQuery.Lines.Add('');
+    SQLQuery1.Close;
+    dmSysTables.sqQuery.Close;
+
+    // Script triggers
+    SQLQuery1.Close;
+    SQLQuery1.SQL.Text:= 'SELECT RDB$Trigger_Name, RDB$Trigger_Inactive FROM RDB$TRIGGERS WHERE RDB$SYSTEM_FLAG=0 ' +
+      'and RDB$Relation_Name = ''' + aTableName + '''';
+    SQLQuery1.Open;
+    with SQLQuery1 do
+    while not EOF do
+    begin
+      List.Clear;
+      dmSysTables.ScriptTrigger(dbIndex, Trim(SQLQuery1.Fields[0].AsString), List, True);
+      QWindow.meQuery.Lines.AddStrings(List);
+      // Search for generators
+      for i:= 0 to List.Count - 1 do
+        if Pos('gen_id', LowerCase(List[i])) > 0 then
+        begin
+          //  NEW.CITYID = GEN_ID(CItyIDGen, 1);
+          Line:= Copy(List[i], Pos('gen_id', LowerCase(List[i])), Length(List[i]));
+          System.Delete(Line, 1, Pos('(', Line));
+          Line:= Trim(Copy(Line, 1, Pos(', ', Line) - 1));
+          GenList.Add(Line);
+        end;
+
+      Next;
+    end;
+    SQLQuery1.Close;
+    QWindow.meQuery.Lines.Add('');
+
+    // Script Generators
+    for i:= 0 to GenList.Count - 1 do
+      QWindow.meQuery.Lines.Add('Create Generator ' + GenList[i] + ';');
+
+    QWindow.meQuery.Lines.Add('');
+
+    // Script permissions
+    List.CommaText:= dmSysTables.GetDBUsers(dbIndex);
+
+    for i:= 0 to List.Count - 1 do
+    begin
+      if Pos('<R>', List[i]) = 1 then
+        UserName:= Copy(List[i], 4, Length(List[i]) - 3)
+      else
+        UserName:= List[i];
+
+      ScriptObjectPermission(dbIndex, '<T>' + ATableName, UserName, ObjType, QWindow.meQuery.Lines);
+    end;
+
+
+    ScriptList.Free;
+    List.Free;
+    GenList.Free;
+    QWindow.Show;
+  end;
+end;
+
+(*****************  Script as Update table stored proc  ****************)
+
+procedure TfmMain.lmScriptUpdateClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  QWindow: TfmQueryWindow;
+  ATableName: string;
+  i: Integer;
+  PKFieldsList: TStringList;
+  FieldLine: string;
+  ParamAndValue: string;
+  AFieldName: string;
+  WhereClause: string;
+  Skipped: Boolean;
+  PKeyName: string;
+  dbIndex: Integer;
+  ConstraintName: string;
+  LastParam: string;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    ATableName:= SelNode.Text;
+    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    QWindow:= ShowQueryWindow(dbIndex, 'Script Table as update: ' + ATableName);
+    GetFields(dbIndex, ATableName, nil);
+    QWindow.meQuery.Lines.Clear;
+    QWindow.meQuery.Lines.Add('create procedure Update' + ATableName + ' (');
+
+    // Params
+    ParamAndValue:= '';
+    with SQLQuery1 do
+    while not EOF do
+    begin
+      Skipped:= False;
+      if (FieldByName('Computed_Source').AsString = '') and
+         ((Pos('CHAR', FieldByName('Field_Type_Str').AsString) = 0) or
+          (Trim(FieldByName('Field_Collation').AsString) = 'NONE') or
+          (FieldByName('Field_Collation').IsNull)) then
+      begin
+        AFieldName:= Trim(SQLQuery1.FieldByName('Field_Name').AsString);
+        ParamAndValue:= ParamAndValue + AFieldName + ' = :' + AFieldName;
+        FieldLine:= AFieldName + ' ';
+        FieldLine:= FieldLine + Trim(FieldByName('Field_Type_Str').AsString);
+        if Pos('char', LowerCase(FieldByName('Field_Type_Str').AsString)) > 0 then
+          FieldLine:= FieldLine + '(' + FieldByName('Field_Length').AsString + ') ';
+      end
+      else
+        Skipped:= True;
+      Next;
+
+      if not Skipped then
+      begin
+        if not EOF then
+        begin
+          FieldLine:= FieldLine + ',';
+          ParamAndValue:= ParamAndValue + ', ';
+        end;
+        QWindow.meQuery.Lines.Add(FieldLine);
+
+      end;
+    end;
+
+    // Remote last , if any
+    if RightStr(ParamAndValue, 2) = ', ' then
+      Delete(ParamAndValue, Length(ParamAndValue) - 1, 2);
+    SQLQuery1.Close;
+
+    // Primary Keys
+    WhereClause:= '';
+    PKFieldsList:= TStringList.Create;
+    PKeyName:= GetPrimaryKeyIndexName(dbIndex, ATableName, ConstraintName);
+    if PKeyName <> '' then
+    begin
+      GetConstraintFields(ATableName, PKeyName, PKFieldsList);
+      for i:= 0 to PKFieldsList.Count - 1 do
+      begin
+        WhereClause:= WhereClause + PKFieldsList[i] + ' = :' + PKFieldsList[i];
+        if i < PKFieldsList.Count - 1 then
+          WhereClause:= WhereClause + ' and ';
+      end;
+    end;
+
+    // Remove last , if any
+    LastParam:= QWindow.meQuery.Lines[QWindow.meQuery.Lines.Count - 1];
+    if Pos(',', LastParam) > 0 then
+    begin
+      LastParam:= StringReplace(LastParam, ',', '', []);
+      QWindow.meQuery.Lines[QWindow.meQuery.Lines.Count - 1]:= LastParam;
+    end;
+
+    QWindow.meQuery.Lines.Add(')');
+    QWindow.meQuery.Lines.Add('AS');
+    QWindow.meQuery.Lines.Add('BEGIN');
+    QWindow.meQuery.Lines.Add('update ' + ATableName);
+    QWindow.meQuery.Lines.Add('set ' + ParamAndValue);
+    QWindow.meQuery.Lines.Add('where ' + WhereClause + ';');
+    QWindow.meQuery.Lines.Add('END;');
+
+    QWindow.Show;
+
+  end;
+end;
+
+(******************  Set generator value  *********************)
+
+procedure TfmMain.lmSetGenClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  Rec: TDatabaseRec;
+  AGenName: string;
+  OrigValue: string;
+  dbIndex: Integer;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    Rec:= RegisteredDatabases[dbIndex];
+    SetConnection(dbIndex);
+
+    AGenName:= SelNode.Text;
+    SQLQuery1.Close;
+    SQLQuery1.SQL.Text:= 'select GEN_ID(' + AGenName + ', 0) from RDB$Database;';
+
+    SQLQuery1.Open;
+    OrigValue:= SQLQuery1.Fields[0].AsString;
+    SQLQuery1.Close;
+
+    ShowCompleteQueryWindow(dbIndex, 'set generator value', 'set generator ' + AGenName + ' to ' + OrigValue);
+  end;
+
+end;
+
+(*************   Sweep Database   ***********)
+
+procedure TfmMain.lmSweepClick(Sender: TObject);
+var
+  FireBirdServices: TFirebirdServices;
+  Res: Ansistring;
+  ADatabase: string;
+  dbIndex: Integer;
+  AdbName: string;
+  Lines: string;
+  s: string;
+begin
+  dbIndex:= tvMain.Selected.OverlayIndex;
+  FireBirdServices:= TFirebirdServices.Create;
+  FireBirdServices.VerboseOutput:= True;
+  with FireBirdServices, RegisteredDatabases[dbIndex] do
+  begin
+    HostName:= GetServerName(RegRec.DatabaseName);
+    AdbName:= RegRec.DatabaseName;
+    if Pos(':', AdbName) > 2 then
+      Delete(AdbName, 1, Pos(':', AdbName));
+    DBName:= AdbName;
+    UserName := RegRec.UserName;
+    Password := RegRec.Password;
+
+    try
+      AttachService;
+      StartSweep;
+      while ServiceQuery(S) do
+        Lines:= Lines + S;
+
+      ShowMessage('Sweep database: ' + AdbName + ' Completed');
+
+    except
+    on e: exception do
+    begin
+      MessageDlg('Error: ' + e.Message, mtError, [mbOK], 0);
+    end;
+    end;
+    DetachService;
+  end;
+  FireBirdServices.Free;
+
+end;
+
+
+(*************  Table management  ****************)
+
+procedure TfmMain.lmTableManageClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  dbIndex: Integer;
+  fmTableManage: TfmTableManage;
+begin
+  try
+    SelNode:= tvMain.Selected;
+
+    // Fields
+    fmTableManage:= FindCusomForm('Management of : ' + SelNode.Text, TfmTableManage) as TfmTableManage;
+    if fmTableManage = nil then
+      fmTableManage:= TfmTableManage.Create(Application);
+
+    fmTableManage.Caption:= 'Management of : ' + SelNode.Text;
+    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    fmTableManage.Init(dbIndex, SelNode.Text);
+    fmTableManage.PageControl1.TabIndex:= 0;
+    ViewTableFields(SelNode.Text, dbIndex, fmTableManage.sgFields);
+
+    // Indices
+    ShowIndicesManagement(fmTableManage, dbIndex, SelNode.Text);
+
+    // Constraints
+    FillAndShowConstraintsForm(fmTableManage, SelNode.Text, dbIndex);
+
+    // Triggers
+    fmTableManage.ViewTriggers;
+
+    // Permissions
+    fmTableManage.FillPermissions;
+
+    fmTableManage.Show;
+
+  except
+  on e: exception do
+    MessageDlg('Error while opening Table Management: ' + e.Message, mtError, [mbOk], 0);
+  end;
+end;
+
+procedure TfmMain.lmUserPermManagementClick(Sender: TObject);
+var
+  fmPermissions: TfmPermissionManage;
+begin
+  fmPermissions:= TfmPermissionManage.Create(nil);
+  fmPermissions.Init(tvMain.Selected.Parent.Parent.OverlayIndex, '', tvMain.Selected.Text, 1);
+  fmPermissions.Show;
+end;
+
+(**********  View Domain info ************)
+
+procedure TfmMain.lmViewDomainClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  ADomainName: string;
+  DomainType: string;
+  DomainSize: Integer;
+  ADomainForm: TFmViewDomain;
+  DefaultValue: string;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    ADomainName:= SelNode.Text;
+    ADomainForm:= TfmViewDomain(FindCusomForm('Domain : ' + ADomainName, TfmViewDomain));
+    if ADomainForm  = nil then
+      ADomainForm:= TfmViewDomain.Create(Application);
+
+    dmSysTables.GetDomainInfo(SelNode.Parent.Parent.OverlayIndex, ADomainName, DomainType, DomainSize, DefaultValue);
+    if Pos('default', LowerCase(DefaultValue)) = 1 then
+      DefaultValue:= Trim(Copy(DefaultValue, 8, Length(DefaultValue)));
+    if Pos('CHAR', DomainType) > 0 then
+      DomainType:= DomainType + '(' + IntToStr(DomainSize) + ')';
+
+    // Fill ViewDomain form
+    with ADomainForm do
+    begin
+      Caption:= 'Domain : ' + ADomainName;
+      edName.Caption:= ADomainName;
+      laType.Caption:= DomainType;
+      laSize.Caption:= IntToStr(DomainSize);
+      laDefault.Caption:= DefaultValue;
+    end;
+    ADomainForm.Show;
+  end;
+end;
+
+
+(********************  Get Fields  **************************)
+
+procedure TfmMain.GetFields(DatabaseIndex: Integer; ATableName: string; FieldsList: TStringList);
+var
+  Rec: TDatabaseRec;
+  FieldName: string;
+begin
+  SQLQuery1.Close;
+  Rec:= RegisteredDatabases[DatabaseIndex];
+  SetConnection(DatabaseIndex);
+  SQLQuery1.SQL.Text:= 'SELECT r.RDB$FIELD_NAME AS field_name, ' +
+      '  r.RDB$DESCRIPTION AS field_description, ' +
+      '  r.RDB$DEFAULT_SOURCE AS field_default_value, ' +
+      '  r.RDB$NULL_FLAG AS field_not_null_constraint, ' +
+      '  f.RDB$FIELD_LENGTH AS field_length, ' +
+      '  f.RDB$FIELD_PRECISION AS field_precision, ' +
+      '  f.RDB$FIELD_SCALE AS field_scale, ' +
+      '  f.RDB$FIELD_TYPE as Field_Type_Int, ' +
+      '  CASE f.RDB$FIELD_TYPE ' +
+      '    WHEN 261 THEN ''BLOB'' ' +
+      '    WHEN 14 THEN ''CHAR'' ' +
+      '    WHEN 40 THEN ''CSTRING''  ' +
+      '    WHEN 11 THEN ''D_FLOAT'' ' +
+      '    WHEN 27 THEN ''DOUBLE Precision'' ' +
+      '    WHEN 10 THEN ''FLOAT'' ' +
+      '    WHEN 16 THEN ''BIGINT'' ' +
+      '    WHEN 8 THEN ''INTEGER'' ' +
+      '    WHEN 9 THEN ''QUAD'' ' +
+      '    WHEN 7 THEN ''SMALLINT'' ' +
+      '    WHEN 12 THEN ''DATE'' ' +
+      '    WHEN 13 THEN ''TIME'' ' +
+      '    WHEN 35 THEN ''TIMESTAMP'' ' +
+      '    WHEN 37 THEN ''VARCHAR'' ' +
+      '    ELSE ''UNKNOWN'' ' +
+      '  END AS field_type_Str, ' +
+      '  f.RDB$FIELD_SUB_TYPE AS field_subtype, ' +
+      '  coll.RDB$COLLATION_NAME AS field_collation, ' +
+      '  cset.RDB$CHARACTER_SET_NAME AS field_charset, ' +
+      ' f.RDB$COMPUTED_Source AS Computed_Source ' +
+      ' FROM RDB$RELATION_FIELDS r ' +
+      ' LEFT JOIN RDB$FIELDS f ON r.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME ' +
+      ' LEFT JOIN RDB$COLLATIONS coll ON f.RDB$COLLATION_ID = coll.RDB$COLLATION_ID ' +
+      ' LEFT JOIN RDB$CHARACTER_SETS cset ON f.RDB$CHARACTER_SET_ID = cset.RDB$CHARACTER_SET_ID ' +
+      ' WHERE r.RDB$RELATION_NAME=''' + ATableName + '''  ' +
+      ' ORDER BY r.RDB$FIELD_POSITION;';
+
+    SQLQuery1.Open;
+    if FieldsList <> nil then
+    begin
+      FieldsList.Clear;
+      while not SQLQuery1.EOF do
+      begin
+        FieldName:= Trim(SQLQuery1.FieldByName('field_name').AsString);
+        if FieldsList.IndexOf(FieldName) = -1 then
+          FieldsList.Add(FieldName);
+        SQLQuery1.Next;
+      end;
+      SQLQuery1.First;
+    end;
+end;
+
+(**********  Get Stored Proc body  ****************)
+
+function TfmMain.GetStoredProcBody(DatabaseIndex: Integer; AProcName: string; var SPOwner: string): string;
+var
+  Rec: TDatabaseRec;
+  i: Integer;
+  Line: string;
+  ParamName: string;
+  FirstOutput: Boolean;
+  ParamType: Byte;
+  Seperator: Boolean;
+  BodyList: TStringList;
+begin
+  try
+    AProcName:= UpperCase(AProcName);
+    BodyList:= TStringList.Create;
+    Rec:= RegisteredDatabases[DatabaseIndex];
+    SetConnection(DatabaseIndex);
+    SQLQuery1.Close;
+    SQLQuery1.SQL.Text:= 'SELECT rdb$parameter_name, rdb$field_type, rdb$field_sub_type, '+
+      'rdb$field_length, rdb$field_scale, rdb$field_precision, '+
+      'rdb$character_length, rdb$parameter_type '+
+      'FROM rdb$procedure_parameters sp_param '+
+      'JOIN rdb$fields fld '+
+      'ON sp_param.rdb$field_source = fld.rdb$field_name '+
+      'WHERE '+
+      'sp_param.rdb$procedure_name =''' + AProcName + ''' ' +
+      'order by rdb$parameter_type, rdb$parameter_number';
+
+    SQLQuery1.Open;
+    FirstOutput:= False;
+
+      while not SQLQuery1.EOF do
+      begin
+        ParamName:= Trim(SQLQuery1.FieldByName('RDB$Parameter_Name').AsString);
+        ParamType:= SQLQuery1.FieldByName('rdb$parameter_type').AsInteger;
+        Seperator:= False;
+        // Output parameter
+        if (not FirstOutput) and (ParamType = 1) then
+        begin
+          BodyList.Add(')' + #10 + 'RETURNS (');
+          FirstOutput:= True;
+          Seperator:= True;
+        end;
+        Line:= '  ' + ParamName + '    ' +
+          GetFBTypeName(SQLQuery1.FieldByName('RDB$Field_Type').AsInteger);
+        if SQLQuery1.FieldByName('RDB$Field_Type').AsInteger = 37 then
+          Line:= Line + '(' + SQLQuery1.FieldByName('RDB$Field_Length').AsString + ')';
+
+
+        SQLQuery1.Next;
+
+        if (not SQLQuery1.EOF) then
+        if ((FirstOutput) or (SQLQuery1.FieldByName('rdb$parameter_Type').AsInteger = 0)) then
+          Line:= Line + ',';
+
+        BodyList.Add(Line);
+      end;
+
+    BodyList.Add(')');
+    BodyList.Add('AS');
+
+    SQLQuery1.Close;
+
+    // Procedure body
+    SQLQuery1.SQL.Text:= 'SELECT * FROM rdb$procedures where rdb$Procedure_name =  ''' + AProcName + '''';
+    SQLQuery1.Open;
+    SPOwner:= Trim(SQLQuery1.FieldByName('rdb$Owner_Name').AsString);
+    BodyList.Add(SQLQuery1.FieldByName('rdb$Procedure_Source').AsString);
+    SQLQuery1.Close;
+    Result:= BodyList.Text;
+    BodyList.Free;
+
+  except
+  on e: exception do
+    MessageDlg('Error while getting stored procedure information: ' + e.Message, mtError, [mbOk], 0);
+  end;
+end;
+
+(******************  Get View Info (SQL Source) ***************)
+
+function TfmMain.GetViewInfo(DatabaseIndex: Integer; AViewName: string; var Columns, Body: string): Boolean;
+var
+  Rec: TDatabaseRec;
+begin
+  Rec:= RegisteredDatabases[DatabaseIndex];
+  SetConnection(DatabaseIndex);
+
+  // View Body
+  SQLQuery1.Close;
+  SQLQuery1.SQL.Text:= 'SELECT RDB$VIEW_SOURCE ' +
+    'FROM RDB$RELATIONS ' +
+    'WHERE RDB$VIEW_SOURCE IS NOT NULL ' +
+    'AND UPPER(RDB$RELATION_NAME) = ''' + UpperCase(AViewName) + ''';';
+
+  SQLQuery1.Open;
+  Body:= SQLQuery1.Fields[0].AsString;
+
+  // View Columns
+  SQLQuery1.Close;
+  SQLQuery1.SQL.Text:= 'SELECT d.RDB$DEPENDENT_NAME AS view_name, '+
+    'r.RDB$FIELD_NAME AS field_name, '+
+    'd.RDB$DEPENDED_ON_NAME AS depended_on_table, '+
+    'd.RDB$FIELD_NAME AS depended_on_field '+
+    'FROM RDB$DEPENDENCIES d '+
+    'LEFT JOIN RDB$RELATION_FIELDS r ON d.RDB$DEPENDENT_NAME = r.RDB$RELATION_NAME '+
+    '     AND d.RDB$FIELD_NAME = r.RDB$BASE_FIELD '+
+    'WHERE UPPER(d.RDB$DEPENDENT_NAME)=''' + UpperCase(AViewName) + ''' '+
+    '  AND r.RDB$SYSTEM_FLAG = 0 '+
+    '  AND d.RDB$DEPENDENT_TYPE = 1 '+
+    'ORDER BY r.RDB$FIELD_POSITION ';
+  Columns:= '';
+  SQLQuery1.Open;
+  while not SQLQuery1.EOF do
+  begin
+    Columns:= Columns + Trim(SQLQuery1.FieldByName('Field_Name').AsString);
+    SQLQuery1.Next;
+    if not SQLQuery1.EOF then
+      Columns:= Columns + ', ';
+  end;
+  SQLQuery1.Close;
+  Result:= True;
+end;
+
+
+(************  Change Trigger activity  *************)
+
+function TfmMain.ChangeTriggerActivity(DatabaseIndex: Integer;
+  ATriggerName: string; ActiveState: Boolean): Boolean;
+var
+  Rec: TDatabaseRec;
+  ActiveStr: string;
+begin
+  try
+    Rec:= RegisteredDatabases[DatabaseIndex];
+    SetConnection(DatabaseIndex);
+
+    SQLQuery1.Close;
+    if ActiveState then
+      ActiveStr:= 'Active'
+    else
+      ActiveStr:= 'InActive';
+    SQLQuery1.SQL.Text:= 'alter trigger '+ ATriggerName + ' ' + ActiveStr;
+
+    SQLQuery1.ExecSQL;
+    Result:= True;
+    SQLTransaction.Commit;
+    AddToSQLHistory(Rec.RegRec.Title, 'DDL', SQLQuery1.SQL.Text);
+
+  except
+  on e: exception do
+  begin
+    ShowMessage('Error: ' + e.Message);
+    Result:= False;
+  end;
+  end;
+end;
+
+(***************  Get Index fields  *******************)
+
+function TfmMain.GetIndexFields(ATableName, AIndexName: string;
+  AQuery: TSQLQuery; var FieldsList: TStringList): Boolean;
+begin
+  AQuery.Close;
+  AQuery.SQL.Text:= 'SELECT RDB$INDEX_SEGMENTS.RDB$FIELD_NAME AS field_name, ' + #10 +
+     'RDB$INDICES.RDB$DESCRIPTION AS description, ' +#10 +
+     '(RDB$INDEX_SEGMENTS.RDB$FIELD_POSITION + 1) AS field_position ' +#10 +
+     'FROM RDB$INDEX_SEGMENTS ' +#10 +
+     'LEFT JOIN RDB$INDICES ON RDB$INDICES.RDB$INDEX_NAME = RDB$INDEX_SEGMENTS.RDB$INDEX_NAME ' +#10 +
+     'LEFT JOIN RDB$RELATION_CONSTRAINTS ON RDB$RELATION_CONSTRAINTS.RDB$INDEX_NAME = RDB$INDEX_SEGMENTS.RDB$INDEX_NAME ' +#10 +
+     ' WHERE UPPER(RDB$INDICES.RDB$RELATION_NAME)=''' + UpperCase(ATablename) + '''         -- table name ' +#10 +
+     '  AND UPPER(RDB$INDICES.RDB$INDEX_NAME)=''' + UpperCase(AIndexName) + ''' -- index name ' +#10 +
+     '--  AND RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_TYPE IS NULL ' +#10 +
+     'ORDER BY RDB$INDEX_SEGMENTS.RDB$FIELD_POSITION;';
+  AQuery.Open;
+  Result:= AQuery.FieldCount > 0;
+  FieldsList.Clear;
+  if Result then
+  while not AQuery.EOF do
+  begin
+    FieldsList.Add(Trim(AQuery.FieldByName('field_name').AsString));
+    AQuery.Next;
+  end;
+  if not Result then
+    AQuery.Close;
+end;
+
+(***********  Get UDF Info  ***************)
+
+function TfmMain.GetUDFInfo(DatabaseIndex: Integer; UDFName: string;
+  var ModuleName, EntryPoint, Params: string): Boolean;
+var
+  Rec: TDatabaseRec;
+begin
+  try
+    Rec:= RegisteredDatabases[DatabaseIndex];
+    SetConnection(DatabaseIndex);
+
+    SQLQuery1.Close;
+    SQLQuery1.SQL.Text:= 'SELECT * FROM RDB$FUNCTIONS WHERE RDB$FUNCTION_NAME = ''' + UDFName + '''';
+    SQLQuery1.Open;
+    ModuleName:= Trim(SQLQuery1.FieldByName('RDB$MODULE_NAME').AsString);
+    EntryPoint:= Trim(SQLQuery1.FieldByName('RDB$ENTRYPOINT').AsString);
+
+    // input Params
+    SQLQuery1.Close;
+    SQLQuery1.SQL.Text:= 'SELECT * FROM RDB$FUNCTION_ARGUMENTS where RDB$FUNCTION_Name = ''' +
+     UDFName + ''' and RDB$MECHANISM = 1';
+    SQLQuery1.Open;
+    Params:= '';
+    while not SQLQuery1.EOF do
+    begin
+      Params:= Params + #10 + GetFBTypeName(SQLQuery1.FieldByName('RDB$FIELD_TYPE').AsInteger);
+      if SQLQuery1.FieldByName('RDB$FIELD_TYPE').AsInteger in [14, 37, 40] then
+        Params:= Params + '(' + SQLQuery1.FieldByName('RDB$FIELD_LENGTH').AsString + ')';
+      SQLQuery1.Next;
+      if not SQLQuery1.EOF then
+        Params:= Params + ', ';
+    end;
+    SQLQuery1.Close;
+    Params:= Params + ')' + #10 + #10 + 'Returns ';
+
+    // Result Params
+    SQLQuery1.SQL.Text:= 'SELECT * FROM RDB$FUNCTION_ARGUMENTS where RDB$FUNCTION_Name = ''' +
+     UDFName + ''' and RDB$MECHANISM = 0';
+    SQLQuery1.Open;
+    while not SQLQuery1.EOF do
+    begin
+      Params:= Params + #10 + GetFBTypeName(SQLQuery1.FieldByName('RDB$FIELD_TYPE').AsInteger);
+      if SQLQuery1.FieldByName('RDB$FIELD_TYPE').AsInteger in [14, 37, 40] then
+        Params:= Params + '(' + SQLQuery1.FieldByName('RDB$FIELD_LENGTH').AsString + ')';
+      SQLQuery1.Next;
+      if not SQLQuery1.EOF then
+        Params:= Params + ', ';
+    end;
+    SQLQuery1.Close;
+    Result:= True;
+
+  except
+  on e: exception do
+  begin
+    ShowMessage(e.Message);
+    IBConnection.Close;
+    Result:= False;
+  end;
+
+  end;
+end;
+
+(***********  Show Query window  ************)
+
+function TfmMain.ShowQueryWindow(DatabaseIndex: Integer; ATitle: string): TfmQueryWindow;
+var
+  Rec: TDatabaseRec;
+  ATab: TTabSheet;
+  ACaption: string;
+begin
+  Rec:= RegisteredDatabases[DatabaseIndex];
+  ACaption:= Rec.RegRec.Title + ': ' + ATitle;
+  Result:= TfmQueryWindow(FindQueryWindow(ACaption));
+  if Result = nil then
+  begin
+    Result:= TfmQueryWindow.Create(Application);
+    ATab:= TTabSheet.Create(nil);
+    ATab.Parent:= PageControl1;
+    ATab.Caption:= ACaption;
+    Result.Parent:= ATab;
+    Result.Left:= 0;
+    Result.Top:= 0;
+    Result.Align:= alClient;
+  end;
+  Result.Init(DatabaseIndex);
+  Result.Caption:= ACaption;
+  Result.Parent.Show;
+  Result.BorderStyle:= bsNone;
+  OpenSQLHistory(Rec.RegRec.Title);
+  Result.Show;
+  fmMain.Show;
+end;
+
+(******* Fill Object Root, like (Tables, Views, etc)  ******)
+
+procedure TfmMain.FillObjectRoot(Node: TTreeNode);
+var
+  Rec: TRegisteredDatabase;
+  Objects: TStringList;
+  TableNode, Item, GenNode, TrigNode, ViewsNode :TTreeNode;
+  StoredProcNode, UDFNode, SysTableNode, DomainsNode, ExceptionNode: TTreeNode;
+  RoleNode, UserNode: TTreeNode;
+  i: Integer;
+  DBIndex: Integer;
+  Count: Integer;
+  ANodeText: string;
+begin
+  DBIndex:= Node.Parent.OverlayIndex;
+  Rec:= RegisteredDatabases[DBIndex].RegRec;
+  Objects:= TStringList.Create;
+
+  ANodeText:= Node.Text;
+  if Pos('(', ANodeText) > 0 then
+    ANodeText:= Trim(Copy(ANodeText, 1, Pos('(', ANodeText) - 1));
+
+  // Tables
+  if ANodeText = 'Tables' then
+  begin
+    Objects.CommaText:= dmSysTables.GetDBObjectNames(DBIndex, 1, Count);
+    TableNode:= Node;
+    Node.Text:= ANodeText + ' (' + IntToStr(Count) + ')';
+
+    TableNode.DeleteChildren;
+
+    for i:= 0 to Objects.Count - 1 do
+    begin
+      Item:= tvMain.Items.AddChild(TableNode, Objects[i]);
+      Item.ImageIndex:= 4;
+      Item.SelectedIndex:= 4;
+    end;
+
+  end
+  else
+    // Generators
+  if ANodeText = 'Generators' then
+  begin
+    GenNode:= Node;
+    Objects.CommaText:= dmSysTables.GetDBObjectNames(DBIndex, 2, Count);
+    Node.Text:= ANodeText + ' (' + IntToStr(Count) + ')';
+    GenNode.DeleteChildren;
+    for i:= 0 to Objects.Count - 1 do
+    begin
+      Item:= tvMain.Items.AddChild(GenNode, Objects[i]);
+      Item.ImageIndex:= 6;
+      Item.SelectedIndex:= 6;
+    end;
+
+  end
+  else
+    // Triggers
+  if Node.Text = 'Triggers' then
+  begin
+    TrigNode:= Node;
+    Objects.CommaText:= dmSysTables.GetDBObjectNames(DBIndex, 3, Count);
+    Node.Text:= ANodeText + ' (' + IntToStr(Count) + ')';
+    TrigNode.DeleteChildren;
+    for i:= 0 to Objects.Count - 1 do
+    begin
+      Item:= tvMain.Items.AddChild(TrigNode, Objects[i]);
+      Item.ImageIndex:= 8;
+      Item.SelectedIndex:= 8;
+    end;
+
+  end
+  else
+    // Views
+  if Node.Text = 'Views' then
+  begin
+    ViewsNode:= Node;
+    Objects.CommaText:= dmSysTables.GetDBObjectNames(DBIndex, 4, Count);
+    Node.Text:= ANodeText + ' (' + IntToStr(Count) + ')';
+    ViewsNode.DeleteChildren;
+    for i:= 0 to Objects.Count - 1 do
+    begin
+      Item:= tvMain.Items.AddChild(ViewsNode, Objects[i]);
+      Item.ImageIndex:= 10;
+      Item.SelectedIndex:= 10;
+    end;
+
+  end
+  else
+    // Stored Procedures
+  if Node.Text = 'Stored Procedures' then
+  begin
+    StoredProcNode:= Node;
+    Objects.CommaText:= dmSysTables.GetDBObjectNames(DBIndex, 5, Count);
+    Node.Text:= ANodeText + ' (' + IntToStr(Count) + ')';
+    StoredProcNode.DeleteChildren;
+    for i:= 0 to Objects.Count - 1 do
+    begin
+      Item:= tvMain.Items.AddChild(StoredProcNode, Objects[i]);
+      Item.ImageIndex:= 12;
+      Item.SelectedIndex:= 12;
+    end;
+
+  end
+  else
+    // UDF (Functions)
+  if Node.Text = 'Functions' then
+  begin
+    UDFNode:= Node;
+    Objects.CommaText:= dmSysTables.GetDBObjectNames(DBIndex, 6, Count);
+    Node.Text:= ANodeText + ' (' + IntToStr(Count) + ')';
+    UDFNode.DeleteChildren;
+    for i:= 0 to Objects.Count - 1 do
+    begin
+      Item:= tvMain.Items.AddChild(UDFNode, Objects[i]);
+      Item.ImageIndex:= 14;
+      Item.SelectedIndex:= 14;
+    end;
+
+  end
+  else
+    // System Tables
+  if Node.Text = 'System Tables' then
+  begin
+    SysTableNode:= Node;
+    Objects.CommaText:= dmSysTables.GetDBObjectNames(DBIndex, 7, Count);
+    Node.Text:= ANodeText + ' (' + IntToStr(Count) + ')';
+    SysTableNode.DeleteChildren;
+    for i:= 0 to Objects.Count - 1 do
+    begin
+      Item:= tvMain.Items.AddChild(SysTableNode, Objects[i]);
+      Item.ImageIndex:= 16;
+      Item.SelectedIndex:= 16;
+    end;
+
+  end
+  else
+    // Domains
+  if Node.Text = 'Domains' then
+  begin
+    DomainsNode:= Node;
+    Objects.CommaText:= dmSysTables.GetDBObjectNames(DBIndex, 8, Count);
+    Node.Text:= ANodeText + ' (' + IntToStr(Count) + ')';
+    DomainsNode.DeleteChildren;
+    for i:= 0 to Objects.Count - 1 do
+    begin
+      Item:= tvMain.Items.AddChild(DomainsNode, Objects[i]);
+      Item.ImageIndex:= 18;
+      Item.SelectedIndex:= 18;
+    end;
+
+  end
+  else
+    // Roles
+  if Node.Text = 'Roles' then
+  begin
+    RoleNode:= Node;
+    Objects.CommaText:= dmSysTables.GetDBObjectNames(DBIndex, 9, Count);
+    Node.Text:= ANodeText + ' (' + IntToStr(Count) + ')';
+    RoleNode.DeleteChildren;
+    for i:= 0 to Objects.Count - 1 do
+    begin
+      Item:= tvMain.Items.AddChild(RoleNode, Objects[i]);
+      Item.ImageIndex:= 20;
+      Item.SelectedIndex:= 20;
+    end;
+  end
+  else
+    // Exceptions
+  if Node.Text = 'Exceptions' then
+  begin
+    ExceptionNode:= Node;
+    Objects.CommaText:= dmSysTables.GetDBObjectNames(DBIndex, 10, Count);
+    Node.Text:= ANodeText + ' (' + IntToStr(Count) + ')';
+    ExceptionNode.DeleteChildren;
+    for i:= 0 to Objects.Count - 1 do
+    begin
+      Item:= tvMain.Items.AddChild(ExceptionNode, Objects[i]);
+      Item.ImageIndex:= 22;
+      Item.SelectedIndex:= 22;
+    end;
+  end
+  else
+    // Users
+  if Node.Text = 'Users' then
+  begin
+    UserNode:= Node;
+    Objects.CommaText:= dmSysTables.GetDBObjectNames(DBIndex, 11, Count);
+    Node.Text:= ANodeText + ' (' + IntToStr(Count) + ')';
+    UserNode.DeleteChildren;
+    for i:= 0 to Objects.Count - 1 do
+    begin
+      Item:= tvMain.Items.AddChild(UserNode, Objects[i]);
+      Item.ImageIndex:= 24;
+      Item.SelectedIndex:= 24;
+    end;
+  end;
+
+  if not Node.Expanded then
+    Node.Expand(False);
+  Objects.Free;
+
+end;
+
+(*************  Get main indices information  ******************)
+
+function TfmMain.GetIndices(ATableName: string; AQuery: TSQLQuery): Boolean;
+begin
+  AQuery.Close;
+  AQuery.SQL.Text:= 'SELECT * FROM RDB$INDICES WHERE RDB$RELATION_NAME=''' + UpperCase(ATableName) +
+    ''' AND RDB$FOREIGN_KEY IS NULL';
+  AQuery.Open;
+  Result:= AQuery.RecordCount > 0;
+  if not Result then
+    AQuery.Close;
+end;
+
+(***************  View Table Fields/ Fields Management  ***************)
+
+procedure TfmMain.ViewTableFields(ATableName: string; dbIndex: Integer;
+  AStringGrid: TStringGrid);
+var
+  Rec: TDatabaseRec;
+  QWindow: TfmQueryWindow;
+  i: Integer;
+  PKFieldsList: TStringList;
+  DefaultValue: string;
+  PKeyName: string;
+  ConstraintName: string;
+begin
+  try
+    GetFields(dbIndex, ATableName, nil);
+
+    // Fill TableInfo grid
+    AStringGrid.RowCount:= 1;
+    with AStringGrid, SQLQuery1 do
+    while not EOF do
+    begin
+      if (Pos('CHAR', Trim(FieldByName('Field_Type_Str').AsString)) = 0) or
+       (Trim(FieldByName('Field_Collation').AsString) = 'NONE') or
+       (FieldByName('Field_Collation').IsNull) then
+      begin
+        RowCount:= RowCount + 1;
+
+        // Field Name
+        Cells[1, RowCount - 1]:= Trim(FieldByName('Field_Name').AsString);
+
+        // Field Type
+        if FieldByName('Field_Type_Int').AsInteger in [7, 8, 16] then
+          Cells[2, RowCount - 1]:= GetNumericFieldType(FieldByName('Field_Type_Int').AsInteger,
+            FieldByName('Field_SubType').AsInteger, FieldByName('Field_Length').AsInteger,
+            FieldByName('Field_Scale').AsInteger)
+        else
+          Cells[2, RowCount - 1]:= Trim(FieldByName('Field_Type_Str').AsString);
+
+        // Computed fields (Calculated)
+        if FieldByName('Computed_Source').AsString <> '' then
+          Cells[2, RowCount - 1]:= FieldByName('Computed_Source').AsString;
+
+        // Field Size
+        Cells[3, RowCount - 1]:= FieldByName('Field_Length').AsString;
+
+        // Null/Not null
+        if FieldByName('field_not_null_constraint').AsString = '1' then
+          Cells[4, RowCount - 1]:= '0'
+        else
+          Cells[4, RowCount - 1]:= '1';
+
+        // Default Value
+        DefaultValue:= FieldByName('Field_Default_Value').AsString;
+        if Pos('default', DefaultValue) > 0 then
+          DefaultValue:= Trim(StringReplace(DefaultValue, 'default', '', []));
+        Cells[5, RowCount - 1]:= DefaultValue;
+
+        Cells[6, RowCount - 1]:= FieldByName('Field_Description').AsString;
+      end;
+      Next;
+
+    end;
+    SQLQuery1.Close;
+
+    // Primary Keys
+    PKFieldsList:= TStringList.Create;
+    PKeyName:= GetPrimaryKeyIndexName(dbIndex, ATableName, ConstraintName);
+    if PKeyName <> '' then
+      GetConstraintFields(ATableName, PKeyName, PKFieldsList);
+
+    with AStringGrid do
+    for i:= 1 to RowCount - 1 do
+      if PKFieldsList.IndexOf(Cells[1, i]) <> -1 then
+        Cells[0, i]:= '1'
+      else
+        Cells[0, i]:= '0';
+
+    PKFieldsList.Free;
+
+  except
+  on e: exception do
+    MessageDlg('Error while reading table fields: ' + e.Message, mtError, [mbOk], 0);
+
+  end;
+end;
+
+
+(*************   Display View  *******************)
+
+procedure TfmMain.lmDisplayViewClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  Rec: TDatabaseRec;
+  QWindow: TfmQueryWindow;
+  AViewName: string;
+  ViewBody, Columns: string;
+  dbIndex: Integer;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    Rec:= RegisteredDatabases[dbIndex];
+    AViewName:= SelNode.Text;
+
+    // Fill ViewView grid
+    fmViewView:= TfmViewView.Create(nil);
+    fmViewView.SynSQLSyn1.TableNames.CommaText:= GetTableNames(dbIndex);
+    fmViewView.Caption:= 'Display View: ' + AViewName;
+    fmViewView.edName.Caption:= AViewName;
+    GetViewInfo(SelNode.Parent.Parent.OverlayIndex, AViewName, Columns, ViewBody);
+    fmViewView.seScript.Lines.Clear;
+    fmViewView.seScript.Lines.Text:= 'create view "' + AviewName + '" (' + Columns + ')' + #13#10 + ViewBody;
+    fmViewView.Show;
+  end;
+
+end;
+
+(***************  ExpandFields: Expand table fields  ************)
+
+procedure TfmMain.lmViewFieldsClick(Sender: TObject);
+var
+  Node: TTreeNode;
+  dbIndex: Integer;
+  FieldsList: TStringList;
+  FieldTitle: string;
+  FieldNode: TTreeNode;
+  PKFieldsList: TStringList;
+  PKeyName: string;
+  ConstraintName: string;
+  AFieldName: string;
+  i: Integer;
+begin
+  try
+    Node:= tvMain.Selected;
+    dbIndex:= Node.Parent.Parent.OverlayIndex;
+    Node.DeleteChildren;
+
+    // Primary Keys
+    PKFieldsList:= TStringList.Create;
+    PKeyName:= GetPrimaryKeyIndexName(dbIndex, Node.Text, ConstraintName);
+    if PKeyName <> '' then
+      GetConstraintFields(Node.Text, PKeyName, PKFieldsList);
+
+    // Fields
+    FieldsList:= TStringList.Create;
+    GetFields(dbIndex, Node.Text, nil);
+    i:= 1;
+    with SQLQuery1 do
+    while not EOF do
+    begin
+      AFieldName:= Trim(FieldByName('Field_Name').AsString);
+      if (Pos('CHAR', Trim(FieldByName('Field_Type_Str').AsString)) = 0) or
+       (Trim(FieldByName('Field_Collation').AsString) = 'NONE') or
+       (FieldByName('Field_Collation').IsNull) then
+       begin
+        FieldTitle:= AFieldName + '   ' + Trim(FieldByName('Field_Type_str').AsString) +
+          ' ' + FieldByName('Field_Length').AsString;
+        FieldNode:= tvMain.Items.AddChild(Node, FieldTitle);
+        FieldNode.OverlayIndex:= i;
+        if PKFieldsList.IndexOf(AFieldname) <> -1 then // Primary key
+        begin
+          FieldNode.ImageIndex:= 28;
+          FieldNode.SelectedIndex:= 28;
+        end
+        else
+        begin
+          FieldNode.ImageIndex:= 27;
+          FieldNode.SelectedIndex:= 27;
+        end;
+        Inc(i);
+
+       end;
+      Next;
+    end;
+    SQLQuery1.Close;
+    Node.Expand(False);
+    PKFieldsList.Free;
+
+  except
+  on e: exception do
+    ShowMessage(E.Message);
+  end;
+
+end;
+
+
+(***************  View Generator  *****************)
+
+procedure TfmMain.lmViewGenClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  Rec: TDatabaseRec;
+  AGenName: string;
+  dbIndex: Integer;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    Rec:= RegisteredDatabases[dbIndex];
+    SQLQuery1.Close;
+    SetConnection(dbIndex);
+    AGenName:= SelNode.Text;
+    SQLQuery1.Close;
+    SQLQuery1.SQL.Text:= 'select GEN_ID(' + AGenName + ', 0) from RDB$Database;';
+
+    SQLQuery1.Open;
+
+    // Fill ViewGen form
+    fmViewGen:= TfmViewGen.Create(nil);
+    with fmViewGen do
+    begin
+      Caption:= 'Generator : ' + AGenName;
+      edGenName.Caption:= AGenName;
+      edValue.Caption:= SQLQuery1.Fields[0].AsString;
+    end;
+    fmViewGen.Show;
+  end;
+
+end;
+
+(*******************  view Stored Procedure  ****************************)
+
+procedure TfmMain.lmViewStoredProcedureClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  AProcName: string;
+  SPOwner: string;
+  spBody: string;
+  dbIndex: Integer;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    AProcName:= SelNode.Text;
+    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    SPBody:= GetStoredProcBody(dbIndex, AProcName, SPOwner);
+    // Fill SProc Parameters
+    fmViewSProc:= TfmViewSProc.Create(nil);
+    with fmViewSProc do
+    begin
+      SynSQLSyn1.TableNames.CommaText:= GetTableNames(dbIndex);
+      Caption:= 'StoredProcedure : ' + AProcName;
+      edName.Caption:= AProcName;
+      seScript.Lines.Clear;
+      seScript.Lines.Add('create procedure ' + AProcName + '(');
+      edOwner.Caption:= SPOwner;
+
+      // Procedure body
+      seScript.Lines.Text:= seScript.Lines.Text + spBody;
+
+      fmViewSProc.Show;
+    end; // with fmViewSProc
+  end;
+
+end;
+
+
+(*******************  View Trigger   **********************)
+
+procedure TfmMain.lmViewTriggerClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  ATriggerName: string;
+  Event: string;
+  TriggerEnabled: Boolean;
+  Body: string;
+  BeforeAfter: string;
+  OnTable: string;
+  TriggerPosition: Integer;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    ATriggerName:= SelNode.Text;
+    dmSysTables.GetTriggerInfo(SelNode.Parent.Parent.OverlayIndex, ATriggerName, BeforeAfter, OnTable,
+      Event, Body, TriggerEnabled, TriggerPosition);
+
+    // Fill ViewTrigger form
+    fmViewTrigger:= TfmViewTrigger.Create(nil);
+    with fmViewTrigger do
+    begin
+      Caption:= 'Trigger : ' + ATriggerName;
+      edName.Caption:= ATriggerName;
+      edOnTable.Caption:= OnTable;
+      laEvent.Caption:= Event;
+      laType.Caption:= BeforeAfter;
+      laPos.Caption:= IntToStr(TriggerPosition);
+      seScript.Lines.Text:= Body;
+      if TriggerEnabled then
+      begin
+        laEnabled.Caption:= 'Yes';
+        laEnabled.Font.Color:= clGreen;
+      end
+      else
+      begin
+        laEnabled.Caption:= 'No';
+        laEnabled.Font.Color:= clRed;
+      end;
+    end;
+    fmViewTrigger.Show;
+  end;
+
+end;
+
+(********  View UDF  **********)
+
+procedure TfmMain.lmViewUDFClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  AFuncName: string;
+  ModuleName, EntryPoint: string;
+  Params: string;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    AFuncName:= SelNode.Text;
+    if GetUDFInfo(SelNode.Parent.Parent.OverlayIndex, AFuncName, ModuleName, EntryPoint, Params) then
+    with fmUDFINfo do
+    begin
+      fmUDFInfo:= TfmUDFInfo.Create(nil);
+      Caption:= 'Function : ' + AFuncName;
+      edName.Caption:= AFuncName;
+      edModule.Caption:= ModuleName;
+      edEntry.Caption:= EntryPoint;
+      meBody.Clear;
+      meBody.Lines.Add('function ' + AFuncName + '(');
+      meBody.Lines.Add(Params);
+      fmUDFInfo.Show;
+    end; // with fmUDFInfo
+  end;
+end;
+
+(********  Create new database  ********)
+
+procedure TfmMain.mnCreateDBClick(Sender: TObject);
+begin
+  if fmCreateDB.ShowModal = mrOk then
+    LoadRegisteredDatabases;
+end;
+
+(**********  Register New database  ***********)
+
+procedure TfmMain.mnRegDBClick(Sender: TObject);
+begin
+  fmReg.NewReg:= True;
+  fmReg.bbReg.Caption:= 'Register';
+  if fmReg.ShowModal = mrOK then
+  begin
+    LoadRegisteredDatabases;
+    fmReg.SaveRegistrations;
+    LoadRegisteredDatabases;
+  end;
+end;
+
+(**********  About  ****************)
+
+procedure TfmMain.MenuItem6Click(Sender: TObject);
+begin
+  fmAbout:= TfmAbout.Create(nil);
+  fmAbout.Init;
+  fmAbout.Show;
+end;
+
+(************* Edit Registration  *************)
+
+procedure TfmMain.lmEditRegClick(Sender: TObject);
+var
+  Rec: TRegisteredDatabase;
+  SelNode: TTreeNode;
+begin
+  SelNode:= tvMain.Selected;
+  if SelNode <> nil then
+  begin
+    fmReg.NewReg:= False;
+    fmReg.bbReg.Caption:= 'Save';
+    fmreg.RecPos:= RegisteredDatabases[SelNode.OverlayIndex].Index;
+
+    Rec:= RegisteredDatabases[SelNode.OverlayIndex].OrigRegRec;
+    fmReg.edDatabaseName.Text:= Rec.DatabaseName;
+    fmReg.edTitle.Text:= Rec.Title;
+    fmReg.edUserName.Text:= Rec.UserName;
+    fmReg.edPassword.Text:= Rec.Password;
+    fmReg.cbCharset.Text:= Rec.Charset;
+    fmReg.edRole.Text:= Rec.Role;
+    fmReg.cxSavePassword.Checked:= Rec.SavePassword;
+
+    if fmReg.ShowModal = mrOK then
+    begin
+      LoadRegisteredDatabases;
+      fmReg.SaveRegistrations;
+      LoadRegisteredDatabases;
+    end;
+  end;
+end;
+
+
+(****************  Unregister database *************)
+
+procedure TfmMain.lmUnregisterDatabaseClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) and (SelNode.Parent.Parent = nil) then
+  if MessageDlg('Are you sure you want to Unregister this database', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
+  begin
+    DeleteRegistration(RegisteredDatabases[SelNode.OverlayIndex].Index);
+    LoadRegisteredDatabases;
+  end;
+  SelNode:= nil;
+end;
+
+(**********  View 1000 records  **************)
+
+procedure TfmMain.lmViewFirst1000Click(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  QWindow: TfmQueryWindow;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    QWindow:= ShowQueryWindow(SelNode.Parent.Parent.OverlayIndex, 'Select first 1000 from ' + SelNode.Text);
+    QWindow.meQuery.Lines.Text:= 'select first 1000 * from ' + SelNode.Text;
+    QWindow.bbRunClick(nil);
+    QWindow.Show;
+  end;
+end;
+
+(***********  Create New Role   ************)
+
+procedure TfmMain.lmNewRoleClick(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  QWindow: TfmQueryWindow;
+begin
+  SelNode:= tvMain.Selected;
+  if (SelNode <> nil) and (SelNode.Parent <> nil) then
+  begin
+    QWindow:= ShowQueryWindow(SelNode.Parent.OverlayIndex, 'Create new Role');
+    QWindow.meQuery.Lines.Clear;
+    QWindow.meQuery.Lines.Add('CREATE ROLE role_name;');
+    QWindow.Show;
+  end;
+end;
+
+procedure TfmMain.mnRestoreClick(Sender: TObject);
+begin
+  fmBackupRestore.Init('', '', '', '');
+  fmBackupRestore.cbOperation.ItemIndex:= 1;
+  fmBackupRestore.cbOperation.Enabled:= False;
+  fmBackupRestore.meLog.Clear;
+  fmBackupRestore.Show;
+end;
+
+procedure TfmMain.PageControl1CloseTabClicked(Sender: TObject);
+var
+  i: Integer;
+begin
+  for i:= 0 to Application.ComponentCount - 1 do
+    if Application.Components[i] is TfmQueryWindow then
+    begin
+       (Application.Components[i] as TfmQueryWindow).lmCloseTabClick(nil);
+       Break;
+    end;
+end;
+
+(*****************   Database Popup menu   ********************)
+
+procedure TfmMain.pmDatabasePopup(Sender: TObject);
+var
+  SelNode: TTreeNode;
+  Filter: Integer;
+  i: Integer;
+  ParentNodeText: string;
+  NodeText: string;
+
+begin
+  SelNode:= tvMain.Selected;
+
+  if SelNode <> nil then
+  begin
+    NodeText:= SelNode.Text;
+    if Pos('(', NodeText) > 0 then
+      NodeText:= Trim(Copy(NodeText, 1, Pos('(', NodeText) - 1));
+
+    ParentNodeText:= '';
+    if SelNode.Parent <> nil then
+      ParentNodeText:= SelNode.Parent.Text;
+    if Pos('(', ParentNodeText) > 0 then
+      ParentNodeText:= Trim(Copy(ParentNodeText, 1, Pos('(', ParentNodeText) - 1));
+
+    if (SelNode <> nil) then
+    if (SelNode.Parent = nil) then // Servers
+      Filter:= -2
+    else
+    if (SelNode.Parent.Parent = nil) then // Database
+      Filter:= 0
+    else
+    if ParentNodeText = 'Tables' then // Tables
+      Filter:= 1
+    else
+    if ParentNodeText = 'Generators' then // Generators
+      Filter:= 2
+    else
+    if ParentNodeText = 'Triggers' then // Triggers
+      Filter:= 3
+    else
+    if ParentNodeText = 'Views' then // View
+      Filter:= 4
+    else
+    if ParentNodeText = 'Stored Procedures' then // Stored Proc
+      Filter:= 5
+    else
+    if ParentNodeText = 'Functions' then // UDF
+      Filter:= 6
+    else
+    if ParentNodeText = 'System Tables' then // System Tables
+      Filter:= 7
+    else
+    if ParentNodeText = 'Domains' then // Domains
+      Filter:= 8
+    else
+    if ParentNodeText = 'Roles' then // Roles
+      Filter:= 9
+    else
+    if ParentNodeText = 'Exceptions' then // Roles
+      Filter:= 10
+    else
+    if ParentNodeText = 'Users' then // Users
+      Filter:= 111
+    else
+    if NodeText = 'Tables' then // Tables root              //  Higher level (Roots)
+      Filter:= 11
+    else
+    if NodeText = 'Generators' then // Generators root
+      Filter:= 12
+    else
+    if NodeText = 'Stored Procedures' then // Stored Proc root
+      Filter:= 15
+    else
+    if NodeText = 'Functions' then // UDF root
+      Filter:= 16
+    else
+    if NodeText = 'Views' then // Views root
+      Filter:= 14
+    else
+    if NodeText = 'Triggers' then // Triggers root
+      Filter:= 13
+    else
+    if NodeText = 'Domains' then // Domains root
+      Filter:= 18
+    else
+    if NodeText = 'Roles' then // Roles root
+      Filter:= 19
+    else
+    if NodeText = 'Exceptions' then // Exceptions
+      Filter:= 20
+    else
+    if NodeText = 'Users' then // Users
+      Filter:= 21
+    else
+    if NodeText = 'Query Window' then // Query Window
+      Filter:= 30
+    else
+      Filter:= -1;
+  end
+  else
+    Filter:= -1;
+
+
+  // Table Fields
+  if (SelNode.Level = 4) then
+  begin
+    ParentNodeText:= SelNode.Parent.Parent.Text;
+    if Pos('(', ParentNodeText) > 0 then
+      ParentNodeText:= Trim(Copy(ParentNodeText, 1, Pos('(', ParentNodeText) - 1));
+    if (ParentNodeText = 'Tables') then
+      Filter:= 112;
+  end;
+
+  // Show menu for specific filter
+  for i:= 0 to pmDatabase.Items.Count - 1 do
+    pmDatabase.Items[i].Visible:= (pmDatabase.Items[i].Tag = Filter) or
+      ((pmDatabase.Items[i].Tag = 100) and (SelNode <> nil) and (SelNode.Parent <> nil) and
+      (SelNode.Parent.Parent <> nil) and (SelNode.Parent.Parent.Parent = nil));
+
+  SelNode:= nil;
+end;
+
+
+(**********************            Double click        *********************************)
+
+procedure TfmMain.tvMainDblClick(Sender: TObject);
+var
+  QWindow: TfmQueryWindow;
+  Rec: TRegisteredDatabase;
+  Node: TTreeNode;
+  ParentText: string;
+begin
+  Node:= tvMain.Selected;
+  if Node.Level = 1 then // Database level, Fill objects
+  begin
+    // Do nothing
+  end
+  else
+  if Node.Level = 2 then // Objects Type Level
+  begin
+    if tvMain.Selected.Text = 'Query Window' then
+    begin
+      QWindow:= ShowQueryWindow(tvMain.Selected.Parent.OverlayIndex, 'Query Window');
+      QWindow.Show;
+    end
+    else  // Expand object
+    begin
+      tvMainExpanded(nil, Node);
+      Rec:= RegisteredDatabases[Node.OverlayIndex].RegRec;
+    end;
+  end
+  else
+  if Node.Level = 3 then  // Object Item Level, like some tables, procedures.
+  begin
+    ParentText:= Node.Parent.Text;
+    if Pos('(', ParentText) > 0 then
+    ParentText:= Trim(Copy(ParentText, 1, Pos('(', ParentText) - 1));
+
+    if ParentText = 'Tables' then
+    begin
+      lmViewFieldsClick(nil);
+      lmViewFirst1000Click(nil);
+    end
+    else
+    if ParentText = 'Generators' then
+      lmViewGenClick(nil)
+    else
+    if ParentText = 'Triggers' then
+      lmViewTriggerClick(nil)
+    else
+    if ParentText = 'Views' then
+      lmDisplay1000VClick(nil)
+    else
+    if ParentText = 'Stored Procedures' then
+      lmViewStoredProcedureClick(nil)
+    else
+    if ParentText = 'Functions' then
+      lmViewUDFClick(nil)
+    else
+    if ParentText = 'System Tables' then
+      lmOpenSystemTableClick(nil)
+    else
+    if ParentText = 'Domains' then
+      lmViewDomainClick(nil)
+    else
+    if ParentText = 'Roles' then
+      lmPermissionsClick(nil)
+    else
+    if ParentText = 'Exceptions' then
+      lmScriptExceptionClick(nil)
+    else
+    if ParentText = 'Users' then
+      lmPermissionsClick(nil)
+
+  end
+  else
+  if Node.Level = 4 then // Table fields (Edit)
+    lmEditFieldClick(nil)
+end;
+
+(**************    Expanded     *****************)
+
+procedure TfmMain.tvMainExpanded(Sender: TObject; Node: TTreeNode);
+var
+  Rec: TRegisteredDatabase;
+  Count: Integer;
+begin
+  if (Node.Parent <> nil) and (Node.Parent.Parent = nil) then   // Expand database
+  begin
+    Rec:= RegisteredDatabases[Node.OverlayIndex].RegRec;
+    RegisteredDatabases[Node.OverlayIndex].RegRec.LastOpened:= Now;
+    RegisteredDatabases[Node.OverlayIndex].OrigRegRec.LastOpened:= Now;
+    // Password form
+    if Rec.Password = '' then
+    begin
+      fmEnterPass.edUser.Text:= Rec.UserName;
+      fmEnterPass.cbRole.Text:= Rec.Role;
+      fmEnterPass.edPassword.Clear;
+      try
+        fmEnterPass.cbRole.Items.CommaText:= dmSysTables.GetDBObjectNames(Node.OverlayIndex, 9, Count);
+      except
+      end;
+
+      if fmEnterPass.ShowModal = mrOk then
+      begin
+        if fmReg.TestConnection(Rec.DatabaseName, fmEnterPass.edUser.Text, fmEnterPass.edPassword.Text,
+          Rec.Charset) then
+          begin
+           { Self.ibConnection.Close;
+            Self.ibConnection.UserName:= fmEnterPass.edUser.Text;
+            Self.ibConnection.Password:= fmEnterPass.edPassword.Text;}
+
+            RegisteredDatabases[Node.OverlayIndex].RegRec.UserName:= fmEnterPass.edUser.Text;
+            RegisteredDatabases[Node.OverlayIndex].RegRec.Password:= fmEnterPass.edPassword.Text;
+            RegisteredDatabases[Node.OverlayIndex].RegRec.Role:= fmEnterPass.cbRole.Text;
+            Node.Expand(False);
+          end
+          else
+          begin
+            Exit;
+          end;
+      end
+      else
+      begin
+        Node.Collapse(False);
+        Exit;
+      end;
+    end;
+  end
+  else  // Expand objects root (Tables, Procedures, etc)
+  if (Node.Parent <> nil) and (Node.Parent.Parent <> nil) and (Node.Parent.Parent.Parent = nil) and (not Node.Expanded) then
+  begin
+    if Node.HasChildren then
+    begin
+      Node.DeleteChildren;
+      Node.Text:= Trim(Copy(Node.Text, 1, Pos('(', Node.Text) - 1));
+    end;
+    FillObjectRoot(Node);
+  end;
+end;
+
+(**********************             Load databases            *********************************)
+
+function TfmMain.LoadRegisteredDatabases: Boolean;
+var
+  Rec: TRegisteredDatabase;
+  F: file of TRegisteredDatabase;
+  FileName: string;
+  MainNode, CNode: TTreeNode;
+  i: Integer;
+  AServerName: string;
+  ServerNode: TTreeNode;
+begin
+  try
+    tvMain.Items.Clear;
+    ReleaseRegisteredDatabases;
+    FileName:= ChangeFileExt(ParamStr(0), '.reg');
+    AssignFile(F, FileName);
+    if FileExists(FileName) then
+    begin
+      Reset(F);
+      i:= 0;
+      while not Eof(F) do
+      begin
+        Read(F, Rec);
+        if not Rec.Deleted then
+        begin
+          SetLength(RegisteredDatabases, Length(RegisteredDatabases) + 1);
+          with RegisteredDatabases[high(RegisteredDatabases)] do
+          begin
+            RegRec:= Rec;
+            OrigRegRec:= Rec;
+            Index:= FilePos(F) - 1;
+            IBConnection:= TIBConnection.Create(nil);
+            SQLTrans:= TSQLTransaction.Create(nil);
+            IBConnection.Transaction:= SQLTrans;
+            SQLTrans.DataBase:= IBConnection;
+            IBConnection.DatabaseName:= Rec.DatabaseName;
+            IBConnection.UserName:= Rec.UserName;
+            IBConnection.Password:= Rec.Password;
+            IBConnection.Role:= Rec.Role;
+            IBConnection.CharSet:= Rec.Charset;
+          end;
+
+          // Server node
+          AServerName:= GetServerName(Rec.DatabaseName);
+
+          ServerNode:= GetServerNameNode(AServerName);
+          if ServerNode = nil then // Add new Server node
+          begin
+            tvMain.Items.Add(nil, '');
+            ServerNode:= tvMain.Items.Add(nil, AServerName);
+            ServerNode.ImageIndex:= 25;
+            ServerNode.SelectedIndex:= 26;
+          end;
+
+          // Put databases
+          MainNode:= tvMain.Items.AddChild(ServerNode, Rec.Title);
+          MainNode.ImageIndex:= 0;
+          MainNode.SelectedIndex:= 3;
+          MainNode.OverlayIndex:= i;
+          tvMain.PopupMenu:= pmDatabase;
+
+          CNode:= tvMain.Items.AddChild(MainNode, 'Query Window');
+          CNode.ImageIndex:= 1;
+          CNode.SelectedIndex:= 1;
+          CNode:= tvMain.Items.AddChild(MainNode, 'Tables');
+          CNode.ImageIndex:= 2;
+          CNode.SelectedIndex:= 2;
+
+          CNode:= tvMain.Items.AddChild(MainNode, 'Generators');
+          CNode.ImageIndex:= 5;
+          CNode.SelectedIndex:= 5;
+
+          CNode:= tvMain.Items.AddChild(MainNode, 'Triggers');
+          CNode.ImageIndex:= 7;
+          CNode.SelectedIndex:= 7;
+
+          CNode:= tvMain.Items.AddChild(MainNode, 'Views');
+          CNode.ImageIndex:= 9;
+          CNode.SelectedIndex:= 9;
+
+          CNode:= tvMain.Items.AddChild(MainNode, 'Stored Procedures');
+          CNode.ImageIndex:= 11;
+          CNode.SelectedIndex:= 11;
+
+          CNode:= tvMain.Items.AddChild(MainNode, 'Functions');
+          CNode.ImageIndex:= 13;
+          CNode.SelectedIndex:= 13;
+
+          CNode:= tvMain.Items.AddChild(MainNode, 'System Tables');
+          CNode.ImageIndex:= 15;
+          CNode.SelectedIndex:= 15;
+
+          CNode:= tvMain.Items.AddChild(MainNode, 'Domains');
+          CNode.ImageIndex:= 17;
+          CNode.SelectedIndex:= 17;
+
+          CNode:= tvMain.Items.AddChild(MainNode, 'Roles');
+          CNode.ImageIndex:= 19;
+          CNode.SelectedIndex:= 19;
+
+          CNode:= tvMain.Items.AddChild(MainNode, 'Exceptions');
+          CNode.ImageIndex:= 21;
+          CNode.SelectedIndex:= 21;
+
+          CNode:= tvMain.Items.AddChild(MainNode, 'Users');
+          CNode.ImageIndex:= 23;
+          CNode.SelectedIndex:= 23;
+
+          Inc(i);
+
+        end;
+      end;
+      CloseFile(F);
+
+      // Add spaces at end of tree
+      tvMain.Items.Add(nil, '');
+      tvMain.Items.Add(nil, '');
+      tvMain.Items.Add(nil, '');
+    end;
+    Result:= True;
+
+  except
+  on e: exception do
+  begin
+    Result:= False;
+    ShowMessage('Error: ' + e.message);
+  end;
+  end;
+end;
+
+
+(**********************           Find QueryWindow                *********************************)
+
+function TfmMain.FindQueryWindow(ATitle: string): TComponent;
+var
+  i: Integer;
+begin
+  Result:= nil;
+  for i:= 0 to Application.ComponentCount- 1 do
+    if Application.Components[i] is TfmQueryWindow then
+      if (Application.Components[i] as TfmQueryWindow).Caption = ATitle then
+        begin
+          Result:= Application.Components[i];
+          Break;
+        end;
+end;
+
+(**********************   Find CustomForm   *********************************)
+
+function TfmMain.FindCusomForm(ATitle: string; AClass: TClass): TComponent;
+var
+  i: Integer;
+begin
+  Result:= nil;
+  for i:= 0 to Application.ComponentCount- 1 do
+    if Application.Components[i] is AClass then
+      if (Application.Components[i] as TForm).Caption = ATitle then
+        begin
+          Result:= Application.Components[i];
+          Break;
+        end;
+end;
+
+(****************  Delete Registration   *************************)
+
+function TfmMain.DeleteRegistration(Index: Integer): Boolean;
+var
+  F: file of TRegisteredDatabase;
+  Rec: TRegisteredDatabase;
+  FileName: string;
+begin
+  Result:= False;
+    FileName:= ChangeFileExt(ParamStr(0), '.reg');
+    AssignFile(F, FileName);
+    if FileExists(FileName) then
+    begin
+      FileMode:= 2;
+      Reset(F);
+      Seek(F, Index);
+      Read(F, Rec);
+      Rec.Deleted:= True;
+      Seek(F, Index);
+      Write(F, Rec);
+      CloseFile(F);
+      Result:= True;
+    end;
+end;
+
+(**************  Get Firebird Type name  *****************)
+
+function TfmMain.GetFBTypeName(Index: Integer): string;
+begin
+  case Index of
+     261 : Result:= 'BLOB';
+      14 : Result:= 'CHAR';
+      40 : Result:= 'CSTRING';
+      11 : Result:= 'D_FLOAT';
+      27 : Result:= 'DOUBLE Precision';
+      10 : Result:= 'FLOAT';
+      16 : Result:= 'INT64';
+      8  : Result:= 'INTEGER';
+      9  : Result:= 'QUAD';
+      7  : Result:= 'SMALLINT';
+      12 : Result:= 'DATE';
+      13 : Result:= 'TIME';
+      35 : Result:= 'TIMESTAMP';
+      37 : Result:= 'VARCHAR';
+  else
+    Result:= 'Unknown Type';
+  end;
+end;
+
+(*******************  Get Primary Key fields  ************************)
+
+function TfmMain.GetPrimaryKeyIndexName(DatabaseIndex: Integer; ATableName: string; var ConstraintName: string): string;
+begin
+  SQLQuery1.Close;
+  SetConnection(DatabaseIndex);
+  SQLQuery1.Close;
+  SQLQuery1.SQL.Text:= 'select RDB$Index_name, RDB$Constraint_Name from RDB$RELATION_CONSTRAINTS ' +
+    'where RDB$Relation_Name = ''' + UpperCase(ATableName) + ''' and RDB$Constraint_Type = ''PRIMARY KEY'' ';
+  SQLQuery1.Open;
+  if SQLQuery1.RecordCount > 0 then
+  begin
+    Result:= Trim(SQLQuery1.Fields[0].AsString);
+    ConstraintName:= Trim(SQLQuery1.Fields[1].AsString);
+  end
+  else
+    Result:= '';
+  SQLQuery1.Close;
+end;
+
+(*********  Get constrain fields  *********)
+
+function TfmMain.GetConstraintFields(ATableName, AIndexName: string; var List: TStringList): Boolean;
+begin
+  SQLQuery1.Close;
+  SQLQuery1.SQL.Text:= 'SELECT s.RDB$FIELD_NAME AS field_name ' +
+     'FROM RDB$INDEX_SEGMENTS s ' +
+     'LEFT JOIN RDB$INDICES i ON i.RDB$INDEX_NAME = s.RDB$INDEX_NAME ' +
+     'LEFT JOIN RDB$RELATION_CONSTRAINTS rc ON rc.RDB$INDEX_NAME = s.RDB$INDEX_NAME ' +
+     'LEFT JOIN RDB$REF_CONSTRAINTS refc ON rc.RDB$CONSTRAINT_NAME = refc.RDB$CONSTRAINT_NAME ' +
+     'LEFT JOIN RDB$RELATION_CONSTRAINTS rc2 ON rc2.RDB$CONSTRAINT_NAME = refc.RDB$CONST_NAME_UQ ' +
+     'LEFT JOIN RDB$INDICES i2 ON i2.RDB$INDEX_NAME = rc2.RDB$INDEX_NAME ' +
+     'LEFT JOIN RDB$INDEX_SEGMENTS s2 ON i2.RDB$INDEX_NAME = s2.RDB$INDEX_NAME ' +
+     '   WHERE i.RDB$RELATION_NAME=''' + UpperCase(ATableName) + '''  ' +
+      'AND rc.RDB$INDEX_NAME=''' + UpperCase(AIndexName) + ''' ' +
+      'AND rc.RDB$CONSTRAINT_TYPE IS NOT NULL ' +
+      'ORDER BY s.RDB$FIELD_POSITION';
+  List.Clear;
+  SQLQuery1.Open;
+  while not SQLQuery1.EOF do
+  begin
+    List.Add(Trim(SQLQuery1.Fields[0].AsString));
+    SQLQuery1.Next;
+  end;
+  SQLQuery1.Close;
+  Result:= List.Count > 0;
+end;
+
+
+function TfmMain.ChangeQueryToBIDirectional(DatabaseIndex: Integer; ATableName: string; sqQuery: TSQLQuery): Boolean;
+var
+  KeyList, FieldsList: TStringList;
+  PKName: string;
+  sqPrimaryKey: TSQLQuery;
+  i: Integer;
+  WhereClause: string;
+  ConstraintName: string;
+begin
+  SetConnection(DatabaseIndex);
+
+  sqQuery.UpdateSQL.Clear;
+  sqQuery.DeleteSQL.Clear;
+  sqQuery.InsertSQL.Clear;
+
+  KeyList:= TStringList.Create;
+  FieldsList:= TStringList.Create;
+  try
+    PKName:= fmMain.GetPrimaryKeyIndexName(DatabaseIndex, ATableName, ConstraintName);
+    Result:= PKName <> '';
+    if Result then
+    begin
+      sqPrimaryKey:= TSQLQuery.Create(nil);
+      sqPrimaryKey.DataBase:= IBConnection;
+      GetIndexFields(ATableName, PKName, sqPrimaryKey, KeyList);
+      GetFields(DatabaseIndex, ATableName, FieldsList);
+
+      // Update SQL
+      sqQuery.UpdateSQL.Add('update ' + ATableName + ' set ');
+      for i:= 0 to FieldsList.Count - 1 do
+        if KeyList.IndexOf(FieldsList[i]) = -1 then
+        begin
+          sqQuery.UpdateSQL.Add(FieldsList[i] + ' = :' + FieldsList[i]);
+          sqQuery.UpdateSQL.Add(',');
+        end;
+
+      sqQuery.UpdateSQL.Delete(sqQuery.UpdateSQL.Count - 1); // Delete last comma
+
+      // Key where clause
+      WhereClause:= ' where ';
+      for i:= 0 to KeyList.Count - 1 do
+      begin
+        WhereClause:= WhereClause + KeyList[i] + ' = :' + KeyList[i];
+        if i + 1 < KeyList.Count then
+          WhereClause:= WhereClause + ' and ';
+      end;
+      sqQuery.UpdateSQL.Add(WhereClause);
+
+      // Insert SQL
+      sqQuery.InsertSQL.Add('insert into ' + ATableName + ' (');
+      for i:= 0 to FieldsList.Count - 1 do
+      begin
+        sqQuery.InsertSQL.Add(FieldsList[i]);
+        if i < FieldsList.Count - 1 then
+          sqQuery.InsertSQL.Add(',')
+        else
+         sqQuery.InsertSQL.Add(') values (');
+      end;
+
+      for i:= 0 to FieldsList.Count - 1 do
+      begin
+        sqQuery.InsertSQL.Add(':' + FieldsList[i]);
+        if i < FieldsList.Count - 1 then
+          sqQuery.InsertSQL.Add(',')
+        else
+          sqQuery.InsertSQL.Add(')');
+      end;
+
+      // Delete SQL
+      sqQuery.DeleteSQL.Text:= 'delete from ' + ATableName + WhereClause;
+
+      sqPrimaryKey.Free;
+    end;
+
+  finally
+    KeyList.Free;
+    FieldsList.Free;
+  end;
+end;
+
+(********  Get table names   ********)
+
+function TfmMain.GetTableNames(dbIndex: Integer): string;
+var
+  Count: Integer;
+begin
+  Result:= dmSysTables.GetDBObjectNames(dbIndex, 1, Count);
+end;
+
+initialization
+  {$I main.lrs}
+
+end.
+

+ 184 - 0
newconstraint.lfm

@@ -0,0 +1,184 @@
+object fmNewConstraint: TfmNewConstraint
+  Left = 622
+  Height = 600
+  Top = 256
+  Width = 390
+  ActiveControl = edNewName
+  Caption = 'fmNewConstraint'
+  ClientHeight = 600
+  ClientWidth = 390
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object Label1: TLabel
+    Left = 8
+    Height = 18
+    Top = 15
+    Width = 158
+    Caption = 'New Constraint on table'
+    ParentColor = False
+  end
+  object laTable: TLabel
+    Left = 184
+    Height = 18
+    Top = 15
+    Width = 55
+    Caption = 'laTable'
+    Font.Style = [fsBold]
+    ParentColor = False
+    ParentFont = False
+  end
+  object Label6: TLabel
+    Left = 8
+    Height = 18
+    Top = 464
+    Width = 92
+    Caption = 'Update action'
+    ParentColor = False
+  end
+  object Label7: TLabel
+    Left = 8
+    Height = 18
+    Top = 503
+    Width = 88
+    Caption = 'Delete action'
+    ParentColor = False
+  end
+  object GroupBox1: TGroupBox
+    Left = 16
+    Height = 170
+    Top = 40
+    Width = 353
+    Anchors = [akTop, akLeft, akRight]
+    Caption = 'Current table'
+    ClientHeight = 151
+    ClientWidth = 349
+    TabOrder = 0
+    object Label2: TLabel
+      Left = 10
+      Height = 18
+      Top = 15
+      Width = 140
+      Caption = 'New constraint name'
+      ParentColor = False
+    end
+    object Label3: TLabel
+      Left = 10
+      Height = 18
+      Top = 47
+      Width = 58
+      Caption = 'On fields'
+      ParentColor = False
+    end
+    object edNewName: TEdit
+      Left = 166
+      Height = 27
+      Top = 7
+      Width = 137
+      TabOrder = 0
+      Text = 'edNewName'
+    end
+    object clxOnFields: TCheckListBox
+      Left = 166
+      Height = 104
+      Top = 39
+      Width = 160
+      ItemHeight = 0
+      TabOrder = 1
+      TopIndex = -1
+    end
+  end
+  object GroupBox2: TGroupBox
+    Left = 16
+    Height = 200
+    Top = 224
+    Width = 351
+    Anchors = [akTop, akLeft, akRight]
+    Caption = 'Foriegn Table'
+    ClientHeight = 181
+    ClientWidth = 347
+    TabOrder = 1
+    object Label4: TLabel
+      Left = 11
+      Height = 18
+      Top = 12
+      Width = 76
+      Caption = 'Table name'
+      ParentColor = False
+    end
+    object Label5: TLabel
+      Left = 11
+      Height = 18
+      Top = 52
+      Width = 58
+      Caption = 'On fields'
+      ParentColor = False
+    end
+    object cbTables: TComboBox
+      Left = 108
+      Height = 31
+      Top = 7
+      Width = 138
+      ItemHeight = 0
+      OnChange = cbTablesChange
+      Style = csDropDownList
+      TabOrder = 0
+    end
+    object clxForFields: TCheckListBox
+      Left = 108
+      Height = 125
+      Top = 47
+      Width = 159
+      ItemHeight = 0
+      TabOrder = 1
+      TopIndex = -1
+    end
+  end
+  object cbUpdateAction: TComboBox
+    Left = 128
+    Height = 31
+    Top = 456
+    Width = 121
+    ItemHeight = 0
+    ItemIndex = 0
+    Items.Strings = (
+      'Restrict'
+      'No Action'
+      'Cascade'
+      'Set Default'
+      'Set null'
+    )
+    Style = csDropDownList
+    TabOrder = 2
+    Text = 'Restrict'
+  end
+  object bbScript: TBitBtn
+    Left = 8
+    Height = 30
+    Top = 560
+    Width = 92
+    Caption = 'Script'
+    Color = 16249563
+    Kind = bkAll
+    ModalResult = 1
+    OnClick = bbScriptClick
+    TabOrder = 3
+  end
+  object cbDeleteAction: TComboBox
+    Left = 128
+    Height = 31
+    Top = 496
+    Width = 121
+    ItemHeight = 0
+    ItemIndex = 0
+    Items.Strings = (
+      'Restrict'
+      'No Action'
+      'Cascade'
+      'Set Default'
+      'Set null'
+    )
+    Style = csDropDownList
+    TabOrder = 4
+    Text = 'Restrict'
+  end
+end

+ 47 - 0
newconstraint.lrs

@@ -0,0 +1,47 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmNewConstraint','FORMDATA',[
+  'TPF0'#16'TfmNewConstraint'#15'fmNewConstraint'#4'Left'#3'n'#2#6'Height'#3'X'
+  +#2#3'Top'#3#0#1#5'Width'#3#134#1#13'ActiveControl'#7#9'edNewName'#7'Caption'
+  +#6#15'fmNewConstraint'#12'ClientHeight'#3'X'#2#11'ClientWidth'#3#134#1#8'Pos'
+  +'ition'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#6'TLabel'#6'Label1'
+  +#4'Left'#2#8#6'Height'#2#18#3'Top'#2#15#5'Width'#3#158#0#7'Caption'#6#23'New'
+  +' Constraint on table'#11'ParentColor'#8#0#0#6'TLabel'#7'laTable'#4'Left'#3
+  +#184#0#6'Height'#2#18#3'Top'#2#15#5'Width'#2'7'#7'Caption'#6#7'laTable'#10'F'
+  +'ont.Style'#11#6'fsBold'#0#11'ParentColor'#8#10'ParentFont'#8#0#0#6'TLabel'#6
+  +'Label6'#4'Left'#2#8#6'Height'#2#18#3'Top'#3#208#1#5'Width'#2'\'#7'Caption'#6
+  +#13'Update action'#11'ParentColor'#8#0#0#6'TLabel'#6'Label7'#4'Left'#2#8#6'H'
+  +'eight'#2#18#3'Top'#3#247#1#5'Width'#2'X'#7'Caption'#6#13'Delete action'#11
+  +'ParentColor'#8#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#2#16#6'Height'#3#170#0
+  +#3'Top'#2'('#5'Width'#3'a'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#7
+  +'Caption'#6#13'Current table'#12'ClientHeight'#3#151#0#11'ClientWidth'#3']'#1
+  +#8'TabOrder'#2#0#0#6'TLabel'#6'Label2'#4'Left'#2#10#6'Height'#2#18#3'Top'#2
+  +#15#5'Width'#3#140#0#7'Caption'#6#19'New constraint name'#11'ParentColor'#8#0
+  +#0#6'TLabel'#6'Label3'#4'Left'#2#10#6'Height'#2#18#3'Top'#2'/'#5'Width'#2':'
+  +#7'Caption'#6#9'On fields'#11'ParentColor'#8#0#0#5'TEdit'#9'edNewName'#4'Lef'
+  +'t'#3#166#0#6'Height'#2#27#3'Top'#2#7#5'Width'#3#137#0#8'TabOrder'#2#0#4'Tex'
+  +'t'#6#9'edNewName'#0#0#13'TCheckListBox'#11'clxOnFields'#4'Left'#3#166#0#6'H'
+  +'eight'#2'h'#3'Top'#2''''#5'Width'#3#160#0#10'ItemHeight'#2#0#8'TabOrder'#2#1
+  +#8'TopIndex'#2#255#0#0#0#9'TGroupBox'#9'GroupBox2'#4'Left'#2#16#6'Height'#3
+  +#200#0#3'Top'#3#224#0#5'Width'#3'_'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akR'
+  +'ight'#0#7'Caption'#6#13'Foriegn Table'#12'ClientHeight'#3#181#0#11'ClientWi'
+  +'dth'#3'['#1#8'TabOrder'#2#1#0#6'TLabel'#6'Label4'#4'Left'#2#11#6'Height'#2
+  +#18#3'Top'#2#12#5'Width'#2'L'#7'Caption'#6#10'Table name'#11'ParentColor'#8#0
+  +#0#6'TLabel'#6'Label5'#4'Left'#2#11#6'Height'#2#18#3'Top'#2'4'#5'Width'#2':'
+  +#7'Caption'#6#9'On fields'#11'ParentColor'#8#0#0#9'TComboBox'#8'cbTables'#4
+  +'Left'#2'l'#6'Height'#2#31#3'Top'#2#7#5'Width'#3#138#0#10'ItemHeight'#2#0#8
+  +'OnChange'#7#14'cbTablesChange'#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#0
+  +#0#0#13'TCheckListBox'#12'clxForFields'#4'Left'#2'l'#6'Height'#2'}'#3'Top'#2
+  +'/'#5'Width'#3#159#0#10'ItemHeight'#2#0#8'TabOrder'#2#1#8'TopIndex'#2#255#0#0
+  +#0#9'TComboBox'#14'cbUpdateAction'#4'Left'#3#128#0#6'Height'#2#31#3'Top'#3
+  +#200#1#5'Width'#2'y'#10'ItemHeight'#2#0#9'ItemIndex'#2#0#13'Items.Strings'#1
+  +#6#8'Restrict'#6#9'No Action'#6#7'Cascade'#6#11'Set Default'#6#8'Set null'#0
+  +#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#2#4'Text'#6#8'Restrict'#0#0#7'T'
+  +'BitBtn'#8'bbScript'#4'Left'#2#8#6'Height'#2#30#3'Top'#3'0'#2#5'Width'#2'\'#7
+  +'Caption'#6#6'Script'#5'Color'#4#219#242#247#0#4'Kind'#7#5'bkAll'#11'ModalRe'
+  +'sult'#2#1#7'OnClick'#7#13'bbScriptClick'#8'TabOrder'#2#3#0#0#9'TComboBox'#14
+  +'cbDeleteAction'#4'Left'#3#128#0#6'Height'#2#31#3'Top'#3#240#1#5'Width'#2'y'
+  +#10'ItemHeight'#2#0#9'ItemIndex'#2#0#13'Items.Strings'#1#6#8'Restrict'#6#9'N'
+  +'o Action'#6#7'Cascade'#6#11'Set Default'#6#8'Set null'#0#5'Style'#7#14'csDr'
+  +'opDownList'#8'TabOrder'#2#4#4'Text'#6#8'Restrict'#0#0#0
+]);

+ 100 - 0
newconstraint.pas

@@ -0,0 +1,100 @@
+unit NewConstraint;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+  StdCtrls, Buttons, CheckLst, QueryWindow;
+
+type
+
+  { TfmNewConstraint }
+
+  TfmNewConstraint = class(TForm)
+    bbScript: TBitBtn;
+    cbUpdateAction: TComboBox;
+    cbTables: TComboBox;
+    clxForFields: TCheckListBox;
+    clxOnFields: TCheckListBox;
+    edNewName: TEdit;
+    cbDeleteAction: TComboBox;
+    GroupBox1: TGroupBox;
+    GroupBox2: TGroupBox;
+    Label1: TLabel;
+    Label2: TLabel;
+    Label3: TLabel;
+    Label4: TLabel;
+    Label5: TLabel;
+    Label6: TLabel;
+    Label7: TLabel;
+    laTable: TLabel;
+    procedure bbScriptClick(Sender: TObject);
+    procedure cbTablesChange(Sender: TObject);
+  private
+    { private declarations }
+  public
+    DatabaseIndex: Integer;
+    QWindow: TfmQueryWindow;
+    { public declarations }
+  end; 
+
+var
+  fmNewConstraint: TfmNewConstraint;
+
+implementation
+
+uses main;
+
+{ TfmNewConstraint }
+
+procedure TfmNewConstraint.cbTablesChange(Sender: TObject);
+var
+  FieldsList: TStringList;
+begin
+  // Get foriegn table fields
+  FieldsList:= TStringList.Create;
+  fmMain.GetFields(DatabaseIndex, cbTables.Text, FieldsList);
+  clxForFields.Clear;
+  clxForFields.Items.AddStrings(FieldsList);
+  FieldsList.Free;
+  fmMain.SQLQuery1.Close;
+end;
+
+procedure TfmNewConstraint.bbScriptClick(Sender: TObject);
+var
+  CurrFields, ForFields: string;
+  i: Integer;
+begin
+  CurrFields:= '';
+  for i:= 0 to clxOnFields.Count - 1 do
+    if clxOnFields.Checked[i] then
+      CurrFields:= CurrFields + clxOnFields.Items[i] + ', ';
+  if CurrFields <> '' then
+    Delete(CurrFields, Length(CurrFields) - 1, 2);
+
+  ForFields:= '';
+  for i:= 0 to clxForFields.Count - 1 do
+    if clxForFields.Checked[i] then
+      ForFields:= ForFields + clxForFields.Items[i] + ', ';
+  if ForFields <> '' then
+    Delete(ForFields, Length(ForFields) - 1, 2);
+
+  QWindow:= fmMain.ShowQueryWindow(DatabaseIndex, 'new constraint on table : ' + laTable.Caption);
+  QWindow.meQuery.Lines.Text:= 'alter table ' + laTable.Caption + ' ADD CONSTRAINT ' + edNewName.Text;
+  QWindow.meQuery.Lines.Add(' foreign key (' + CurrFields + ') ');
+  QWindow.meQuery.Lines.Add(' references ' + cbTables.Text + ' (' + ForFields + ') ');
+  if cbUpdateAction.Text <> 'Restrict' then
+    QWindow.meQuery.Lines.Add(' on update ' + cbUpdateAction.Text + ' ');
+  if cbDeleteAction.Text <> 'Restrict' then
+    QWindow.meQuery.Lines.Add(' on delete ' + cbDeleteAction.Text + ' ');
+
+  fmMain.Show;
+end;
+
+initialization
+  {$I newconstraint.lrs}
+
+end.
+

+ 115 - 0
newdomain.lfm

@@ -0,0 +1,115 @@
+object fmNewDomain: TfmNewDomain
+  Left = 330
+  Height = 241
+  Top = 216
+  Width = 378
+  ActiveControl = edName
+  BorderIcons = [biSystemMenu]
+  BorderStyle = bsDialog
+  Caption = 'Create New domain'
+  ClientHeight = 241
+  ClientWidth = 378
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object Label1: TLabel
+    Left = 14
+    Height = 18
+    Top = 22
+    Width = 126
+    Caption = 'New Domain name'
+    ParentColor = False
+  end
+  object Label2: TLabel
+    Left = 16
+    Height = 18
+    Top = 57
+    Width = 31
+    Caption = 'Type'
+    ParentColor = False
+  end
+  object Label3: TLabel
+    Left = 18
+    Height = 18
+    Top = 96
+    Width = 28
+    Caption = 'Size'
+    ParentColor = False
+  end
+  object Label4: TLabel
+    Left = 18
+    Height = 18
+    Top = 136
+    Width = 89
+    Caption = 'Default value'
+    ParentColor = False
+  end
+  object edName: TEdit
+    Left = 156
+    Height = 27
+    Top = 22
+    Width = 148
+    TabOrder = 0
+  end
+  object cbType: TComboBox
+    Left = 156
+    Height = 29
+    Top = 57
+    Width = 148
+    ItemHeight = 0
+    Items.Strings = (
+      'SMALLINT'
+      'INTEGER'
+      'VARCHAR'
+      'DOUBLE'
+      'FLOAT'
+      'CHAR'
+      'DATE'
+      'TIME'
+      'TIMESTAMP'
+      'CSTRING'
+      'D_FLOAT'
+      'INT64'
+      'QUAD'
+      'BLOB'
+    )
+    TabOrder = 1
+  end
+  object seSize: TSpinEdit
+    Left = 156
+    Height = 27
+    Top = 96
+    Width = 50
+    TabOrder = 2
+  end
+  object BitBtn1: TBitBtn
+    Left = 16
+    Height = 30
+    Top = 192
+    Width = 88
+    Caption = 'Script'
+    Color = 16249563
+    Default = True
+    Kind = bkOK
+    ModalResult = 1
+    TabOrder = 3
+  end
+  object BitBtn2: TBitBtn
+    Left = 111
+    Height = 30
+    Top = 192
+    Width = 90
+    Cancel = True
+    Caption = 'Cancel'
+    Color = 16249563
+    Kind = bkCancel
+    ModalResult = 2
+    TabOrder = 4
+  end
+  object edDefault: TEdit
+    Left = 155
+    Height = 27
+    Top = 136
+    Width = 205
+    TabOrder = 5
+  end
+end

+ 29 - 0
newdomain.lrs

@@ -0,0 +1,29 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmNewDomain','FORMDATA',[
+  'TPF0'#12'TfmNewDomain'#11'fmNewDomain'#4'Left'#3'J'#1#6'Height'#3#241#0#3'To'
+  +'p'#3#216#0#5'Width'#3'z'#1#13'ActiveControl'#7#6'edName'#11'BorderIcons'#11
+  +#12'biSystemMenu'#0#11'BorderStyle'#7#8'bsDialog'#7'Caption'#6#17'Create New'
+  +' domain'#12'ClientHeight'#3#241#0#11'ClientWidth'#3'z'#1#8'Position'#7#14'p'
+  +'oScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#6'TLabel'#6'Label1'#4'Left'#2#14
+  +#6'Height'#2#18#3'Top'#2#22#5'Width'#2'~'#7'Caption'#6#15'New Domain name'#11
+  +'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#16#6'Height'#2#18#3'Top'#2
+  +'9'#5'Width'#2#31#7'Caption'#6#4'Type'#11'ParentColor'#8#0#0#6'TLabel'#6'Lab'
+  +'el3'#4'Left'#2#18#6'Height'#2#18#3'Top'#2'`'#5'Width'#2#28#7'Caption'#6#4'S'
+  +'ize'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#2#18#6'Height'#2#18#3
+  +'Top'#3#136#0#5'Width'#2'Y'#7'Caption'#6#13'Default value'#11'ParentColor'#8
+  +#0#0#5'TEdit'#6'edName'#4'Left'#3#156#0#6'Height'#2#27#3'Top'#2#22#5'Width'#3
+  +#148#0#8'TabOrder'#2#0#0#0#9'TComboBox'#6'cbType'#4'Left'#3#156#0#6'Height'#2
+  +#29#3'Top'#2'9'#5'Width'#3#148#0#10'ItemHeight'#2#0#13'Items.Strings'#1#6#8
+  +'SMALLINT'#6#7'INTEGER'#6#7'VARCHAR'#6#6'DOUBLE'#6#5'FLOAT'#6#4'CHAR'#6#4'DA'
+  +'TE'#6#4'TIME'#6#9'TIMESTAMP'#6#7'CSTRING'#6#7'D_FLOAT'#6#5'INT64'#6#4'QUAD'
+  +#6#4'BLOB'#0#8'TabOrder'#2#1#0#0#9'TSpinEdit'#6'seSize'#4'Left'#3#156#0#6'He'
+  +'ight'#2#27#3'Top'#2'`'#5'Width'#2'2'#8'TabOrder'#2#2#0#0#7'TBitBtn'#7'BitBt'
+  +'n1'#4'Left'#2#16#6'Height'#2#30#3'Top'#3#192#0#5'Width'#2'X'#7'Caption'#6#6
+  +'Script'#5'Color'#4#219#242#247#0#7'Default'#9#4'Kind'#7#4'bkOK'#11'ModalRes'
+  +'ult'#2#1#8'TabOrder'#2#3#0#0#7'TBitBtn'#7'BitBtn2'#4'Left'#2'o'#6'Height'#2
+  +#30#3'Top'#3#192#0#5'Width'#2'Z'#6'Cancel'#9#7'Caption'#6#6'Cancel'#5'Color'
+  +#4#219#242#247#0#4'Kind'#7#8'bkCancel'#11'ModalResult'#2#2#8'TabOrder'#2#4#0
+  +#0#5'TEdit'#9'edDefault'#4'Left'#3#155#0#6'Height'#2#27#3'Top'#3#136#0#5'Wid'
+  +'th'#3#205#0#8'TabOrder'#2#5#0#0#0
+]);

+ 52 - 0
newdomain.pas

@@ -0,0 +1,52 @@
+unit NewDomain;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+  StdCtrls, Spin, Buttons;
+
+type
+
+  { TfmNewDomain }
+
+  TfmNewDomain = class(TForm)
+    BitBtn1: TBitBtn;
+    BitBtn2: TBitBtn;
+    cbType: TComboBox;
+    edDefault: TEdit;
+    edName: TEdit;
+    Label1: TLabel;
+    Label2: TLabel;
+    Label3: TLabel;
+    Label4: TLabel;
+    seSize: TSpinEdit;
+  private
+    { private declarations }
+  public
+    { public declarations }
+    procedure Init;
+  end; 
+
+var
+  fmNewDomain: TfmNewDomain;
+
+implementation
+
+{ TfmNewDomain }
+
+procedure TfmNewDomain.Init;
+begin
+  edName.Clear;
+  cbType.ItemIndex:= -1;
+  edDefault.Clear;
+  seSize.Value:= 0;
+end;
+
+initialization
+  {$I newdomain.lrs}
+
+end.
+

+ 132 - 0
neweditfield.lfm

@@ -0,0 +1,132 @@
+object fmNewEditField: TfmNewEditField
+  Left = 639
+  Height = 336
+  Top = 391
+  Width = 320
+  ActiveControl = edFieldName
+  BorderIcons = [biSystemMenu]
+  BorderStyle = bsDialog
+  Caption = 'fmNewEditField'
+  ClientHeight = 336
+  ClientWidth = 320
+  OnClose = FormClose
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object Label1: TLabel
+    Left = 10
+    Height = 18
+    Top = 14
+    Width = 77
+    Caption = 'Field Name'
+    ParentColor = False
+  end
+  object Label2: TLabel
+    Left = 8
+    Height = 18
+    Top = 48
+    Width = 69
+    Caption = 'Field Type'
+    ParentColor = False
+  end
+  object Label3: TLabel
+    Left = 10
+    Height = 18
+    Top = 81
+    Width = 28
+    Caption = 'Size'
+    ParentColor = False
+  end
+  object Label4: TLabel
+    Left = 10
+    Height = 18
+    Top = 116
+    Width = 77
+    Caption = 'Field Order'
+    ParentColor = False
+  end
+  object Label5: TLabel
+    Left = 8
+    Height = 18
+    Top = 192
+    Width = 92
+    Caption = 'Default Value'
+    ParentColor = False
+  end
+  object edFieldName: TEdit
+    Left = 101
+    Height = 27
+    Top = 12
+    Width = 139
+    TabOrder = 0
+  end
+  object cbType: TComboBox
+    Left = 101
+    Height = 31
+    Top = 40
+    Width = 139
+    Color = 16249563
+    ItemHeight = 0
+    OnChange = cbTypeChange
+    Style = csDropDownList
+    TabOrder = 1
+  end
+  object seSize: TSpinEdit
+    Left = 101
+    Height = 27
+    Top = 77
+    Width = 50
+    MaxValue = 10000
+    TabOrder = 2
+  end
+  object cxAllowNull: TCheckBox
+    Left = 8
+    Height = 22
+    Top = 152
+    Width = 92
+    Caption = 'Allow Null'
+    Checked = True
+    State = cbChecked
+    TabOrder = 4
+  end
+  object bbAdd: TBitBtn
+    Left = 10
+    Height = 30
+    Top = 288
+    Width = 75
+    Caption = 'Add'
+    Color = 16249563
+    OnClick = bbAddClick
+    TabOrder = 5
+  end
+  object seOrder: TSpinEdit
+    Left = 101
+    Height = 27
+    Top = 112
+    Width = 50
+    MaxValue = 10000
+    TabOrder = 3
+    Value = 1
+  end
+  object edDefault: TEdit
+    Left = 112
+    Height = 27
+    Top = 186
+    Width = 116
+    TabOrder = 6
+  end
+  object Label6: TLabel
+    Left = 10
+    Height = 18
+    Top = 232
+    Width = 115
+    Caption = 'Field Description'
+    ParentColor = False
+  end
+  object edDescription: TEdit
+    Left = 10
+    Height = 27
+    Top = 250
+    Width = 294
+    TabOrder = 7
+  end
+end

+ 34 - 0
neweditfield.lrs

@@ -0,0 +1,34 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmNewEditField','FORMDATA',[
+  'TPF0'#15'TfmNewEditField'#14'fmNewEditField'#4'Left'#3#127#2#6'Height'#3'P'#1
+  +#3'Top'#3#135#1#5'Width'#3'@'#1#13'ActiveControl'#7#11'edFieldName'#11'Borde'
+  +'rIcons'#11#12'biSystemMenu'#0#11'BorderStyle'#7#8'bsDialog'#7'Caption'#6#14
+  +'fmNewEditField'#12'ClientHeight'#3'P'#1#11'ClientWidth'#3'@'#1#7'OnClose'#7
+  +#9'FormClose'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#6
+  +'TLabel'#6'Label1'#4'Left'#2#10#6'Height'#2#18#3'Top'#2#14#5'Width'#2'M'#7'C'
+  +'aption'#6#10'Field Name'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2
+  +#8#6'Height'#2#18#3'Top'#2'0'#5'Width'#2'E'#7'Caption'#6#10'Field Type'#11'P'
+  +'arentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2#10#6'Height'#2#18#3'Top'#2
+  +'Q'#5'Width'#2#28#7'Caption'#6#4'Size'#11'ParentColor'#8#0#0#6'TLabel'#6'Lab'
+  +'el4'#4'Left'#2#10#6'Height'#2#18#3'Top'#2't'#5'Width'#2'M'#7'Caption'#6#11
+  +'Field Order'#11'ParentColor'#8#0#0#6'TLabel'#6'Label5'#4'Left'#2#8#6'Height'
+  +#2#18#3'Top'#3#192#0#5'Width'#2'\'#7'Caption'#6#13'Default Value'#11'ParentC'
+  +'olor'#8#0#0#5'TEdit'#11'edFieldName'#4'Left'#2'e'#6'Height'#2#27#3'Top'#2#12
+  +#5'Width'#3#139#0#8'TabOrder'#2#0#0#0#9'TComboBox'#6'cbType'#4'Left'#2'e'#6
+  +'Height'#2#31#3'Top'#2'('#5'Width'#3#139#0#5'Color'#4#219#242#247#0#10'ItemH'
+  +'eight'#2#0#8'OnChange'#7#12'cbTypeChange'#5'Style'#7#14'csDropDownList'#8'T'
+  +'abOrder'#2#1#0#0#9'TSpinEdit'#6'seSize'#4'Left'#2'e'#6'Height'#2#27#3'Top'#2
+  +'M'#5'Width'#2'2'#8'MaxValue'#3#16''''#8'TabOrder'#2#2#0#0#9'TCheckBox'#11'c'
+  +'xAllowNull'#4'Left'#2#8#6'Height'#2#22#3'Top'#3#152#0#5'Width'#2'\'#7'Capti'
+  +'on'#6#10'Allow Null'#7'Checked'#9#5'State'#7#9'cbChecked'#8'TabOrder'#2#4#0
+  +#0#7'TBitBtn'#5'bbAdd'#4'Left'#2#10#6'Height'#2#30#3'Top'#3' '#1#5'Width'#2
+  +'K'#7'Caption'#6#3'Add'#5'Color'#4#219#242#247#0#7'OnClick'#7#10'bbAddClick'
+  +#8'TabOrder'#2#5#0#0#9'TSpinEdit'#7'seOrder'#4'Left'#2'e'#6'Height'#2#27#3'T'
+  +'op'#2'p'#5'Width'#2'2'#8'MaxValue'#3#16''''#8'TabOrder'#2#3#5'Value'#2#1#0#0
+  +#5'TEdit'#9'edDefault'#4'Left'#2'p'#6'Height'#2#27#3'Top'#3#186#0#5'Width'#2
+  +'t'#8'TabOrder'#2#6#0#0#6'TLabel'#6'Label6'#4'Left'#2#10#6'Height'#2#18#3'To'
+  +'p'#3#232#0#5'Width'#2's'#7'Caption'#6#17'Field Description'#11'ParentColor'
+  +#8#0#0#5'TEdit'#13'edDescription'#4'Left'#2#10#6'Height'#2#27#3'Top'#3#250#0
+  +#5'Width'#3'&'#1#8'TabOrder'#2#7#0#0#0
+]);

+ 210 - 0
neweditfield.pas

@@ -0,0 +1,210 @@
+unit NewEditField;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+  StdCtrls, Spin, Buttons;
+
+type
+  TFormMode = (foNew, foEdit);
+
+  { TfmNewEditField }
+
+  TfmNewEditField = class(TForm)
+    bbAdd: TBitBtn;
+    cbType: TComboBox;
+    cxAllowNull: TCheckBox;
+    edDescription: TEdit;
+    edFieldName: TEdit;
+    edDefault: TEdit;
+    Label1: TLabel;
+    Label2: TLabel;
+    Label3: TLabel;
+    Label4: TLabel;
+    Label5: TLabel;
+    Label6: TLabel;
+    seSize: TSpinEdit;
+    seOrder: TSpinEdit;
+    procedure bbAddClick(Sender: TObject);
+    procedure cbTypeChange(Sender: TObject);
+    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
+  private
+    fdbIndex: Integer;
+    fTableName: string;
+    fRefreshButton: TBitBtn;
+  public
+    fFormMode: TFormMode;
+    OldFieldName: string;
+    OldFieldType: string;
+    OldFieldSize: Integer;
+    OldAllowNull: Boolean;
+    OldOrder: Integer;
+    OldDefault: string;
+    OldDesciption: string;
+    procedure Init(dbIndex: Integer; TableName: string; FormMode: TFormMode;
+      FieldName, FieldType, DefaultValue, Description: string; FSize, FOrder: Integer; AllowNull: Boolean; RefreshButton: TBitBtn);
+
+    { public declarations }
+  end; 
+
+var
+  fmNewEditField: TfmNewEditField;
+
+implementation
+
+{ TfmNewEditField }
+
+uses Main, SysTables;
+
+procedure TfmNewEditField.bbAddClick(Sender: TObject);
+var
+  Line: string;
+  Nullflag: string;
+  Clk: TNotifyEvent;
+begin
+  if fRefreshButton = nil then
+   clk:= nil
+  else
+    clk:= fRefreshButton.OnClick;
+
+  if fFormMode = foNew then  // New field
+  begin
+    Line:= cbType.Text;
+    if Pos('CHAR', Line) > 0 then
+      Line:= Line + '(' + IntToStr(seSize.Value) + ')';
+
+    if not cxAllowNull.Checked then
+      Line:= Line + ' not null';
+
+    if Trim(edDefault.Text) <> '' then
+    begin
+      if (Pos('CHAR', cbType.Text) > 0) and (Pos('''', edDefault.Text) = 0) then
+        Line:= Line + ' default ''' + edDefault.Text + ''''
+      else
+        Line:= Line + ' default ' + edDefault.Text;
+    end;
+    fmMain.ShowCompleteQueryWindow(fdbIndex, 'Add new field on Table: ' + fTableName,
+      'ALTER TABLE ' + fTableName + ' ADD ' + edFieldName.Text + ' ' + Line, Clk);
+  end
+  else  // Upate
+  begin
+    Line:= '';
+    // Check name change
+    if UpperCase(Trim(edFieldName.Text)) <> OldFieldName then
+      Line:= 'ALTER TABLE ' + fTableName + ' ALTER ' + OldFieldName + ' TO ' +
+      edFieldName.Text + ';' + #10;
+
+    // check type/size change
+    if (cbType.Text <> OldFieldType) or (seSize.Value <> OldFieldSize) then
+    begin
+      Line:= Line + 'ALTER TABLE ' + fTableName + ' ALTER ' + UpperCase(Trim(edFieldName.Text))
+        + ' TYPE ' + cbType.Text;
+
+      if Pos('CHAR', Line) > 0 then
+        Line:= Line + '(' + IntToStr(seSize.Value) + ');' + #10;
+    end;
+
+    // Field Order
+    if seOrder.Value <> OldOrder then
+    begin
+      Line:= Line + 'ALTER TABLE ' + fTableName + ' ALTER ' + edFieldName.Text + ' POSITION ' +
+        IntToStr(seOrder.Value) + ';' + #10;
+    end;
+
+    // Allow Null
+    if cxAllowNull.Checked <> OldAllowNull then
+    begin
+      if cxAllowNull.Checked then
+        NullFlag:= 'NULL'
+      else
+        NullFlag:= '1';
+        Line:= Line + 'UPDATE RDB$RELATION_FIELDS SET RDB$NULL_FLAG = ' + NullFlag + #10 +
+          'WHERE RDB$FIELD_NAME = ''' + UpperCase(Trim(edFieldName.Text)) + ''' AND RDB$RELATION_NAME = ''' +
+          fTableName + '''' + #10;
+    end;
+
+    // Default value
+    if edDefault.Text <> OldDefault then
+    begin
+      Line:= Line + 'UPDATE RDB$RELATION_FIELDS set RDB$Default_Source = ''' + edDefault.Text +
+        '''  where RDB$FIELD_NAME = ''' + UpperCase(Trim(edFieldName.Text)) +
+        ''' and RDB$RELATION_NAME = ''' + fTableName + ''';' + #10;
+    end;
+
+    // Description
+    if edDescription.Text <> OldDesciption then
+    begin
+      Line:= Line + 'UPDATE RDB$RELATION_FIELDS set RDB$DESCRIPTION = ''' + edDescription.Text +
+        '''  where RDB$FIELD_NAME = ''' + UpperCase(Trim(edFieldName.Text)) +
+        ''' and RDB$RELATION_NAME = ''' + fTableName + ''';' + #10;
+    end;
+
+    if Line <> '' then
+      fmMain.ShowCompleteQueryWindow(fdbIndex, 'Edit field: ' + OldFieldName, Line, clk);
+  end;
+  Close;
+end;
+
+procedure TfmNewEditField.cbTypeChange(Sender: TObject);
+begin
+  seSize.Value:= dmSysTables.GetDefaultTypeSize(fdbIndex, cbType.Text);
+end;
+
+procedure TfmNewEditField.FormClose(Sender: TObject;
+  var CloseAction: TCloseAction);
+begin
+  CloseAction:= caFree;
+end;
+
+procedure TfmNewEditField.Init(dbIndex: Integer; TableName: string; FormMode: TFormMode;
+  FieldName, FieldType, DefaultValue, Description: string; FSize, FOrder: Integer; AllowNull: Boolean;
+  RefreshButton: TBitBtn);
+begin
+  cbType.Clear;
+  // Add Basic types
+  dmSysTables.GetBasicTypes(cbType.Items);
+
+  // Add Domain types
+  dmSysTables.GetDomainTypes(dbIndex, cbType.Items);
+
+  fdbIndex:= dbIndex;
+  fTableName:= TableName;
+  fFormMode:= FormMode;
+  fRefreshButton:= RefreshButton;
+
+  OldFieldName:= FieldName;
+  OldFieldSize:= FSize;
+  OldFieldType:= FieldType;
+  OldAllowNull:= AllowNull;
+  OldOrder:= FOrder;
+  OldDefault:= DefaultValue;
+  OldDesciption:= Description;
+
+  edFieldName.Text:= OldFieldName;
+  seSize.Value:= OldFieldSize;
+  cbType.Text:= OldFieldType;
+  cxAllowNull.Checked:= OldAllowNull;
+  seOrder.Value:= OldOrder;
+  edDefault.Text:= OldDefault;
+  edDescription.Text:= OldDesciption;
+  if FormMode = foEdit then
+  begin
+    bbAdd.Caption:= 'Update';
+    Caption:= 'Edit field: ' + FieldName + ' on : ' + TableName;
+  end
+  else
+  begin
+    bbAdd.Caption:= 'Add';
+    Caption:= 'Add new in : ' + TableName;
+  end;
+
+end;
+
+initialization
+  {$I neweditfield.lrs}
+
+end.
+

+ 143 - 0
newgen.lfm

@@ -0,0 +1,143 @@
+object fmNewGen: TfmNewGen
+  Left = 362
+  Height = 495
+  Top = 201
+  Width = 542
+  ActiveControl = edGenName
+  Caption = 'Create New Generator'
+  ClientHeight = 495
+  ClientWidth = 542
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object Label1: TLabel
+    Left = 5
+    Height = 18
+    Top = 23
+    Width = 109
+    Caption = 'Generator Name'
+    ParentColor = False
+  end
+  object edGenName: TEdit
+    Left = 128
+    Height = 27
+    Top = 16
+    Width = 168
+    TabOrder = 0
+  end
+  object bbCreateGen: TBitBtn
+    Left = 8
+    Height = 30
+    Top = 82
+    Width = 160
+    Anchors = [akLeft, akBottom]
+    Caption = 'Create Generator'
+    Color = 16249563
+    Kind = bkAll
+    OnClick = bbCreateGenClick
+    TabOrder = 1
+  end
+  object BitBtn1: TBitBtn
+    Left = 416
+    Height = 30
+    Top = 464
+    Width = 99
+    Anchors = [akLeft, akBottom]
+    Caption = '&Close'
+    Color = 16249563
+    Kind = bkClose
+    TabOrder = 2
+  end
+  object cxTrigger: TCheckBox
+    Left = 14
+    Height = 22
+    Top = 112
+    Width = 115
+    Caption = 'Create Trigger'
+    OnChange = cxTriggerChange
+    TabOrder = 3
+  end
+  object gbTrigger: TGroupBox
+    Left = 16
+    Height = 319
+    Top = 135
+    Width = 502
+    Anchors = [akTop, akLeft, akRight, akBottom]
+    Caption = 'Trigger for generator'
+    ClientHeight = 300
+    ClientWidth = 498
+    Enabled = False
+    TabOrder = 4
+    object Label2: TLabel
+      Left = 6
+      Height = 18
+      Top = 10
+      Width = 56
+      Caption = 'On table'
+      ParentColor = False
+    end
+    object Label3: TLabel
+      Left = 9
+      Height = 18
+      Top = 53
+      Width = 32
+      Caption = 'Field'
+      ParentColor = False
+    end
+    object cbTables: TComboBox
+      Left = 86
+      Height = 31
+      Top = 7
+      Width = 152
+      ItemHeight = 0
+      OnChange = cbTablesChange
+      Style = csDropDownList
+      TabOrder = 0
+    end
+    object cbFields: TComboBox
+      Left = 87
+      Height = 31
+      Top = 48
+      Width = 151
+      ItemHeight = 0
+      Style = csDropDownList
+      TabOrder = 1
+    end
+    object BitBtn2: TBitBtn
+      Left = 6
+      Height = 30
+      Top = 94
+      Width = 75
+      Caption = 'Script'
+      Color = 16249563
+      OnClick = BitBtn2Click
+      TabOrder = 2
+    end
+    object bbCreateTrigger: TBitBtn
+      Left = 5
+      Height = 30
+      Top = 267
+      Width = 131
+      Caption = 'Create Trigger'
+      Color = 16249563
+      OnClick = bbCreateTriggerClick
+      TabOrder = 3
+    end
+    object meSQL: TMemo
+      Left = 6
+      Height = 139
+      Top = 126
+      Width = 477
+      Anchors = [akTop, akLeft, akRight, akBottom]
+      ScrollBars = ssBoth
+      TabOrder = 4
+    end
+  end
+  object SQLQuery1: TSQLQuery
+    IndexName = 'DEFAULT_ORDER'
+    AutoCalcFields = False
+    ReadOnly = False
+    Params = <>
+    left = 316
+    top = 176
+  end
+end

+ 40 - 0
newgen.lrs

@@ -0,0 +1,40 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmNewGen','FORMDATA',[
+  'TPF0'#9'TfmNewGen'#8'fmNewGen'#4'Left'#3'j'#1#6'Height'#3#239#1#3'Top'#3#201
+  +#0#5'Width'#3#30#2#13'ActiveControl'#7#9'edGenName'#7'Caption'#6#20'Create N'
+  +'ew Generator'#12'ClientHeight'#3#239#1#11'ClientWidth'#3#30#2#8'Position'#7
+  +#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#6'TLabel'#6'Label1'#4'Left'
+  +#2#5#6'Height'#2#18#3'Top'#2#23#5'Width'#2'm'#7'Caption'#6#14'Generator Name'
+  +#11'ParentColor'#8#0#0#5'TEdit'#9'edGenName'#4'Left'#3#128#0#6'Height'#2#27#3
+  +'Top'#2#16#5'Width'#3#168#0#8'TabOrder'#2#0#0#0#7'TBitBtn'#11'bbCreateGen'#4
+  +'Left'#2#8#6'Height'#2#30#3'Top'#2'R'#5'Width'#3#160#0#7'Anchors'#11#6'akLef'
+  +'t'#8'akBottom'#0#7'Caption'#6#16'Create Generator'#5'Color'#4#219#242#247#0
+  +#4'Kind'#7#5'bkAll'#7'OnClick'#7#16'bbCreateGenClick'#8'TabOrder'#2#1#0#0#7
+  +'TBitBtn'#7'BitBtn1'#4'Left'#3#160#1#6'Height'#2#30#3'Top'#3#208#1#5'Width'#2
+  +'c'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#6'&Close'#5'Color'#4
+  +#219#242#247#0#4'Kind'#7#7'bkClose'#8'TabOrder'#2#2#0#0#9'TCheckBox'#9'cxTri'
+  +'gger'#4'Left'#2#14#6'Height'#2#22#3'Top'#2'p'#5'Width'#2's'#7'Caption'#6#14
+  +'Create Trigger'#8'OnChange'#7#15'cxTriggerChange'#8'TabOrder'#2#3#0#0#9'TGr'
+  +'oupBox'#9'gbTrigger'#4'Left'#2#16#6'Height'#3'?'#1#3'Top'#3#135#0#5'Width'#3
+  +#246#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#7'Caption'#6
+  +#21'Trigger for generator'#12'ClientHeight'#3','#1#11'ClientWidth'#3#242#1#7
+  +'Enabled'#8#8'TabOrder'#2#4#0#6'TLabel'#6'Label2'#4'Left'#2#6#6'Height'#2#18
+  +#3'Top'#2#10#5'Width'#2'8'#7'Caption'#6#8'On table'#11'ParentColor'#8#0#0#6
+  +'TLabel'#6'Label3'#4'Left'#2#9#6'Height'#2#18#3'Top'#2'5'#5'Width'#2' '#7'Ca'
+  +'ption'#6#5'Field'#11'ParentColor'#8#0#0#9'TComboBox'#8'cbTables'#4'Left'#2
+  +'V'#6'Height'#2#31#3'Top'#2#7#5'Width'#3#152#0#10'ItemHeight'#2#0#8'OnChange'
+  +#7#14'cbTablesChange'#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#0#0#0#9'TC'
+  +'omboBox'#8'cbFields'#4'Left'#2'W'#6'Height'#2#31#3'Top'#2'0'#5'Width'#3#151
+  +#0#10'ItemHeight'#2#0#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#1#0#0#7'TB'
+  +'itBtn'#7'BitBtn2'#4'Left'#2#6#6'Height'#2#30#3'Top'#2'^'#5'Width'#2'K'#7'Ca'
+  +'ption'#6#6'Script'#5'Color'#4#219#242#247#0#7'OnClick'#7#12'BitBtn2Click'#8
+  +'TabOrder'#2#2#0#0#7'TBitBtn'#15'bbCreateTrigger'#4'Left'#2#5#6'Height'#2#30
+  +#3'Top'#3#11#1#5'Width'#3#131#0#7'Caption'#6#14'Create Trigger'#5'Color'#4
+  +#219#242#247#0#7'OnClick'#7#20'bbCreateTriggerClick'#8'TabOrder'#2#3#0#0#5'T'
+  +'Memo'#5'meSQL'#4'Left'#2#6#6'Height'#3#139#0#3'Top'#2'~'#5'Width'#3#221#1#7
+  +'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#10'ScrollBars'#7#6
+  +'ssBoth'#8'TabOrder'#2#4#0#0#0#9'TSQLQuery'#9'SQLQuery1'#9'IndexName'#6#13'D'
+  +'EFAULT_ORDER'#14'AutoCalcFields'#8#8'ReadOnly'#8#6'Params'#14#0#4'left'#3'<'
+  +#1#3'top'#3#176#0#0#0#0
+]);

+ 141 - 0
newgen.pas

@@ -0,0 +1,141 @@
+unit NewGen;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, IBConnection, sqldb, FileUtil, LResources, Forms, Controls,
+  Graphics, Dialogs, StdCtrls, Buttons;
+
+type
+
+  { TfmNewGen }
+
+  TfmNewGen = class(TForm)
+    bbCreateGen: TBitBtn;
+    BitBtn1: TBitBtn;
+    BitBtn2: TBitBtn;
+    bbCreateTrigger: TBitBtn;
+    cbTables: TComboBox;
+    cbFields: TComboBox;
+    cxTrigger: TCheckBox;
+    edGenName: TEdit;
+    gbTrigger: TGroupBox;
+    Label1: TLabel;
+    Label2: TLabel;
+    Label3: TLabel;
+    meSQL: TMemo;
+    SQLQuery1: TSQLQuery;
+    procedure bbCreateGenClick(Sender: TObject);
+    procedure BitBtn2Click(Sender: TObject);
+    procedure bbCreateTriggerClick(Sender: TObject);
+    procedure cbTablesChange(Sender: TObject);
+    procedure cxTriggerChange(Sender: TObject);
+  private
+    { private declarations }
+    ibConnection: TIBConnection;
+    SQLTrans: TSQLTransaction;
+  public
+    DatabaseIndex: Integer;
+    procedure Init(dbIndex: Integer);
+    { public declarations }
+  end; 
+
+var
+  fmNewGen: TfmNewGen;
+
+implementation
+
+{ TfmNewGen }
+
+uses main;
+
+procedure TfmNewGen.bbCreateGenClick(Sender: TObject);
+begin
+  if Trim(edGenName.Text) <> '' then
+  begin
+    SQLQuery1.SQL.Text:= 'create generator ' + edGenName.Text;
+    SQLQuery1.ExecSQL;
+    SQLTrans.Commit;
+    fmMain.AddToSQLHistory(fmMain.RegisteredDatabases[DatabaseIndex].RegRec.Title, 'DDL', SQLQuery1.SQL.Text);
+    MessageDlg('Generator ' + edGenName.Text + ' has been created successfully', mtInformation, [mbOK], 0);
+    gbTrigger.Enabled:= True;
+    cxTrigger.Enabled:= True;
+  end
+  else
+    MessageDlg('You should write Generator name', mtError, [mbOK], 0);
+end;
+
+procedure TfmNewGen.BitBtn2Click(Sender: TObject);
+begin
+  if (cbTables.ItemIndex = -1) or (cbFields.ItemIndex = -1) then
+    MessageDlg('You should select a table and a field', mtError, [mbOk], 0)
+  else
+  if Trim(edGenName.Text) = '' then
+    MessageDlg('You should enter generator name', mtError, [mbOK], 0)
+  else
+  begin
+    meSQL.Clear;
+    meSQL.Lines.Add('CREATE TRIGGER ' + Trim(edGenName.Text) + ' FOR ' + cbTables.Text);
+    meSQL.Lines.Add('ACTIVE BEFORE INSERT POSITION 0 ');
+    meSQL.Lines.Add('AS BEGIN ');
+    meSQL.Lines.Add('IF (NEW.' + cbFields.Text + ' IS NULL OR NEW.' + cbFields.Text + ' = 0) THEN ');
+    meSQL.Lines.Add('  NEW.' + cbFields.Text + ' = GEN_ID(' + edGenName.Text + ', 1);');
+    meSQL.Lines.Add('END');
+    bbCreateTrigger.Enabled:= True;
+  end;
+end;
+
+procedure TfmNewGen.bbCreateTriggerClick(Sender: TObject);
+begin
+  SQLQuery1.SQL.Text:= meSQL.Lines.Text;
+  SQLQuery1.ExecSQL;
+  SQLTrans.Commit;
+  fmMain.AddToSQLHistory(fmMain.RegisteredDatabases[DatabaseIndex].RegRec.Title, 'DDL', SQLQuery1.SQL.Text);
+  MessageDlg('Auto Increment Trigger has been created successfully for the table ' + cbTables.Text,
+    mtInformation, [mbOK], 0);
+  ModalResult:= mrOK;
+end;
+
+procedure TfmNewGen.cbTablesChange(Sender: TObject);
+var
+  FType: string;
+begin
+  if cbTables.ItemIndex <> -1 then
+  begin
+    fmMain.GetFields(DatabaseIndex, cbTables.Text, nil);
+    cbFields.Clear;
+    while not fmMain.SQLQuery1.EOF do
+    begin
+      FType:= Trim(fmMain.SQLQuery1.FieldByName('Field_Type_Str').AsString);
+      if (FType = 'INTEGER') or (FType = 'INT64') or (FType = 'SMALLINT') then
+        cbFields.Items.Add(Trim(fmMain.SQLQuery1.FieldByName('Field_Name').AsString));
+      fmMain.SQLQuery1.Next;
+    end;
+    fmMain.SQLQuery1.Close;
+
+  end;
+end;
+
+procedure TfmNewGen.cxTriggerChange(Sender: TObject);
+begin
+  gbTrigger.Enabled:= cxTrigger.Checked;
+end;
+
+procedure TfmNewGen.Init(dbIndex: Integer);
+begin
+  DatabaseIndex:= dbIndex;
+  ibConnection:= fmMain.RegisteredDatabases[dbIndex].IBConnection;
+  SQLTrans:= fmMain.RegisteredDatabases[dbIndex].SQLTrans;;
+  SQLQuery1.DataBase:= ibConnection;
+  cxTrigger.Checked:= False;
+  bbCreateTrigger.Enabled:= False;
+  meSQL.Clear;
+end;
+
+initialization
+  {$I newgen.lrs}
+
+end.
+

+ 881 - 0
newtable.lfm

@@ -0,0 +1,881 @@
+object fmNewTable: TfmNewTable
+  Left = 532
+  Height = 550
+  Top = 302
+  Width = 573
+  ActiveControl = edNewTable
+  Caption = 'New Table'
+  ClientHeight = 550
+  ClientWidth = 573
+  OnClose = FormClose
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object Label1: TLabel
+    Left = 5
+    Height = 18
+    Top = 14
+    Width = 109
+    Caption = 'New Table name'
+    ParentColor = False
+  end
+  object edNewTable: TEdit
+    Left = 127
+    Height = 27
+    Top = 8
+    Width = 153
+    TabOrder = 0
+  end
+  object StringGrid1: TStringGrid
+    Left = 8
+    Height = 224
+    Top = 59
+    Width = 554
+    Anchors = [akTop, akLeft, akRight, akBottom]
+    ColCount = 6
+    Columns = <    
+      item
+        Title.Caption = 'Field Name'
+        Width = 100
+      end    
+      item
+        Title.Caption = 'Data Type'
+        Width = 120
+      end    
+      item
+        Title.Caption = 'Size'
+      end    
+      item
+        ButtonStyle = cbsCheckboxColumn
+        Title.Caption = 'Allow Null'
+        Width = 90
+      end    
+      item
+        ButtonStyle = cbsCheckboxColumn
+        Title.Caption = 'P-Key'
+        Title.Color = 11458779
+        Title.Font.Color = 16582668
+      end    
+      item
+        Title.Caption = 'Default Value'
+        Width = 120
+      end>
+    FixedColor = 14539471
+    FixedCols = 0
+    Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing, goSmoothScroll]
+    RowCount = 3
+    TabOrder = 1
+    OnEditingDone = StringGrid1EditingDone
+    OnKeyUp = StringGrid1KeyUp
+    OnMouseUp = StringGrid1MouseUp
+    OnPickListSelect = StringGrid1PickListSelect
+  end
+  object bbCreate: TBitBtn
+    Left = 9
+    Height = 30
+    Top = 504
+    Width = 118
+    Anchors = [akLeft, akBottom]
+    Caption = 'Create'
+    Color = 16249563
+    Enabled = False
+    Kind = bkYes
+    OnClick = bbCreateClick
+    TabOrder = 2
+  end
+  object BitBtn2: TBitBtn
+    Left = 150
+    Height = 30
+    Top = 504
+    Width = 96
+    Anchors = [akLeft, akBottom]
+    Cancel = True
+    Caption = 'Cancel'
+    Color = 16249563
+    Kind = bkCancel
+    ModalResult = 2
+    TabOrder = 3
+  end
+  object bbScript: TBitBtn
+    Left = 9
+    Height = 30
+    Top = 296
+    Width = 118
+    Anchors = [akLeft, akBottom]
+    Caption = 'Script'
+    Color = 16249563
+    Default = True
+    Kind = bkYes
+    OnClick = bbScriptClick
+    TabOrder = 4
+  end
+  object cxCreateGen: TCheckBox
+    Left = 156
+    Height = 22
+    Top = 301
+    Width = 193
+    Anchors = [akLeft, akBottom]
+    Caption = 'Create Auto Inc Generator'
+    TabOrder = 5
+  end
+  inline syScript: TSynEdit
+    Left = 10
+    Height = 168
+    Top = 335
+    Width = 554
+    Anchors = [akLeft, akRight, akBottom]
+    Font.Height = -13
+    Font.Name = 'Courier New'
+    Font.Pitch = fpFixed
+    Font.Quality = fqNonAntialiased
+    ParentColor = False
+    ParentFont = False
+    TabOrder = 6
+    Gutter.Width = 57
+    Gutter.MouseActions = <    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbLeft
+        ClickCount = ccAny
+        ClickDir = cdDown
+        Command = 13
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbRight
+        ClickCount = ccSingle
+        ClickDir = cdUp
+        Command = 12
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end>
+    RightGutter.Width = 0
+    RightGutter.MouseActions = <    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbLeft
+        ClickCount = ccAny
+        ClickDir = cdDown
+        Command = 13
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbRight
+        ClickCount = ccSingle
+        ClickDir = cdUp
+        Command = 12
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end>
+    Highlighter = SynSQLSyn1
+    Keystrokes = <    
+      item
+        Command = ecUp
+        ShortCut = 38
+      end    
+      item
+        Command = ecSelUp
+        ShortCut = 8230
+      end    
+      item
+        Command = ecScrollUp
+        ShortCut = 16422
+      end    
+      item
+        Command = ecDown
+        ShortCut = 40
+      end    
+      item
+        Command = ecSelDown
+        ShortCut = 8232
+      end    
+      item
+        Command = ecScrollDown
+        ShortCut = 16424
+      end    
+      item
+        Command = ecLeft
+        ShortCut = 37
+      end    
+      item
+        Command = ecSelLeft
+        ShortCut = 8229
+      end    
+      item
+        Command = ecWordLeft
+        ShortCut = 16421
+      end    
+      item
+        Command = ecSelWordLeft
+        ShortCut = 24613
+      end    
+      item
+        Command = ecRight
+        ShortCut = 39
+      end    
+      item
+        Command = ecSelRight
+        ShortCut = 8231
+      end    
+      item
+        Command = ecWordRight
+        ShortCut = 16423
+      end    
+      item
+        Command = ecSelWordRight
+        ShortCut = 24615
+      end    
+      item
+        Command = ecPageDown
+        ShortCut = 34
+      end    
+      item
+        Command = ecSelPageDown
+        ShortCut = 8226
+      end    
+      item
+        Command = ecPageBottom
+        ShortCut = 16418
+      end    
+      item
+        Command = ecSelPageBottom
+        ShortCut = 24610
+      end    
+      item
+        Command = ecPageUp
+        ShortCut = 33
+      end    
+      item
+        Command = ecSelPageUp
+        ShortCut = 8225
+      end    
+      item
+        Command = ecPageTop
+        ShortCut = 16417
+      end    
+      item
+        Command = ecSelPageTop
+        ShortCut = 24609
+      end    
+      item
+        Command = ecLineStart
+        ShortCut = 36
+      end    
+      item
+        Command = ecSelLineStart
+        ShortCut = 8228
+      end    
+      item
+        Command = ecEditorTop
+        ShortCut = 16420
+      end    
+      item
+        Command = ecSelEditorTop
+        ShortCut = 24612
+      end    
+      item
+        Command = ecLineEnd
+        ShortCut = 35
+      end    
+      item
+        Command = ecSelLineEnd
+        ShortCut = 8227
+      end    
+      item
+        Command = ecEditorBottom
+        ShortCut = 16419
+      end    
+      item
+        Command = ecSelEditorBottom
+        ShortCut = 24611
+      end    
+      item
+        Command = ecToggleMode
+        ShortCut = 45
+      end    
+      item
+        Command = ecCopy
+        ShortCut = 16429
+      end    
+      item
+        Command = ecPaste
+        ShortCut = 8237
+      end    
+      item
+        Command = ecDeleteChar
+        ShortCut = 46
+      end    
+      item
+        Command = ecCut
+        ShortCut = 8238
+      end    
+      item
+        Command = ecDeleteLastChar
+        ShortCut = 8
+      end    
+      item
+        Command = ecDeleteLastChar
+        ShortCut = 8200
+      end    
+      item
+        Command = ecDeleteLastWord
+        ShortCut = 16392
+      end    
+      item
+        Command = ecUndo
+        ShortCut = 32776
+      end    
+      item
+        Command = ecRedo
+        ShortCut = 40968
+      end    
+      item
+        Command = ecLineBreak
+        ShortCut = 13
+      end    
+      item
+        Command = ecSelectAll
+        ShortCut = 16449
+      end    
+      item
+        Command = ecCopy
+        ShortCut = 16451
+      end    
+      item
+        Command = ecBlockIndent
+        ShortCut = 24649
+      end    
+      item
+        Command = ecLineBreak
+        ShortCut = 16461
+      end    
+      item
+        Command = ecInsertLine
+        ShortCut = 16462
+      end    
+      item
+        Command = ecDeleteWord
+        ShortCut = 16468
+      end    
+      item
+        Command = ecBlockUnindent
+        ShortCut = 24661
+      end    
+      item
+        Command = ecPaste
+        ShortCut = 16470
+      end    
+      item
+        Command = ecCut
+        ShortCut = 16472
+      end    
+      item
+        Command = ecDeleteLine
+        ShortCut = 16473
+      end    
+      item
+        Command = ecDeleteEOL
+        ShortCut = 24665
+      end    
+      item
+        Command = ecUndo
+        ShortCut = 16474
+      end    
+      item
+        Command = ecRedo
+        ShortCut = 24666
+      end    
+      item
+        Command = ecGotoMarker0
+        ShortCut = 16432
+      end    
+      item
+        Command = ecGotoMarker1
+        ShortCut = 16433
+      end    
+      item
+        Command = ecGotoMarker2
+        ShortCut = 16434
+      end    
+      item
+        Command = ecGotoMarker3
+        ShortCut = 16435
+      end    
+      item
+        Command = ecGotoMarker4
+        ShortCut = 16436
+      end    
+      item
+        Command = ecGotoMarker5
+        ShortCut = 16437
+      end    
+      item
+        Command = ecGotoMarker6
+        ShortCut = 16438
+      end    
+      item
+        Command = ecGotoMarker7
+        ShortCut = 16439
+      end    
+      item
+        Command = ecGotoMarker8
+        ShortCut = 16440
+      end    
+      item
+        Command = ecGotoMarker9
+        ShortCut = 16441
+      end    
+      item
+        Command = ecSetMarker0
+        ShortCut = 24624
+      end    
+      item
+        Command = ecSetMarker1
+        ShortCut = 24625
+      end    
+      item
+        Command = ecSetMarker2
+        ShortCut = 24626
+      end    
+      item
+        Command = ecSetMarker3
+        ShortCut = 24627
+      end    
+      item
+        Command = ecSetMarker4
+        ShortCut = 24628
+      end    
+      item
+        Command = ecSetMarker5
+        ShortCut = 24629
+      end    
+      item
+        Command = ecSetMarker6
+        ShortCut = 24630
+      end    
+      item
+        Command = ecSetMarker7
+        ShortCut = 24631
+      end    
+      item
+        Command = ecSetMarker8
+        ShortCut = 24632
+      end    
+      item
+        Command = ecSetMarker9
+        ShortCut = 24633
+      end    
+      item
+        Command = EcFoldLevel1
+        ShortCut = 41009
+      end    
+      item
+        Command = EcFoldLevel2
+        ShortCut = 41010
+      end    
+      item
+        Command = EcFoldLevel1
+        ShortCut = 41011
+      end    
+      item
+        Command = EcFoldLevel1
+        ShortCut = 41012
+      end    
+      item
+        Command = EcFoldLevel1
+        ShortCut = 41013
+      end    
+      item
+        Command = EcFoldLevel6
+        ShortCut = 41014
+      end    
+      item
+        Command = EcFoldLevel7
+        ShortCut = 41015
+      end    
+      item
+        Command = EcFoldLevel8
+        ShortCut = 41016
+      end    
+      item
+        Command = EcFoldLevel9
+        ShortCut = 41017
+      end    
+      item
+        Command = EcFoldLevel0
+        ShortCut = 41008
+      end    
+      item
+        Command = EcFoldCurrent
+        ShortCut = 41005
+      end    
+      item
+        Command = EcUnFoldCurrent
+        ShortCut = 41003
+      end    
+      item
+        Command = EcToggleMarkupWord
+        ShortCut = 32845
+      end    
+      item
+        Command = ecNormalSelect
+        ShortCut = 24654
+      end    
+      item
+        Command = ecColumnSelect
+        ShortCut = 24643
+      end    
+      item
+        Command = ecLineSelect
+        ShortCut = 24652
+      end    
+      item
+        Command = ecTab
+        ShortCut = 9
+      end    
+      item
+        Command = ecShiftTab
+        ShortCut = 8201
+      end    
+      item
+        Command = ecMatchBracket
+        ShortCut = 24642
+      end    
+      item
+        Command = ecColSelUp
+        ShortCut = 40998
+      end    
+      item
+        Command = ecColSelDown
+        ShortCut = 41000
+      end    
+      item
+        Command = ecColSelLeft
+        ShortCut = 40997
+      end    
+      item
+        Command = ecColSelRight
+        ShortCut = 40999
+      end    
+      item
+        Command = ecColSelPageDown
+        ShortCut = 40994
+      end    
+      item
+        Command = ecColSelPageBottom
+        ShortCut = 57378
+      end    
+      item
+        Command = ecColSelPageUp
+        ShortCut = 40993
+      end    
+      item
+        Command = ecColSelPageTop
+        ShortCut = 57377
+      end    
+      item
+        Command = ecColSelLineStart
+        ShortCut = 40996
+      end    
+      item
+        Command = ecColSelLineEnd
+        ShortCut = 40995
+      end    
+      item
+        Command = ecColSelEditorTop
+        ShortCut = 57380
+      end    
+      item
+        Command = ecColSelEditorBottom
+        ShortCut = 57379
+      end>
+    MouseActions = <    
+      item
+        Shift = []
+        ShiftMask = [ssShift, ssAlt]
+        Button = mbLeft
+        ClickCount = ccSingle
+        ClickDir = cdDown
+        Command = 1
+        MoveCaret = True
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = [ssShift]
+        ShiftMask = [ssShift, ssAlt]
+        Button = mbLeft
+        ClickCount = ccSingle
+        ClickDir = cdDown
+        Command = 1
+        MoveCaret = True
+        Option = 1
+        Priority = 0
+      end    
+      item
+        Shift = [ssAlt]
+        ShiftMask = [ssShift, ssAlt]
+        Button = mbLeft
+        ClickCount = ccSingle
+        ClickDir = cdDown
+        Command = 3
+        MoveCaret = True
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = [ssShift, ssAlt]
+        ShiftMask = [ssShift, ssAlt]
+        Button = mbLeft
+        ClickCount = ccSingle
+        ClickDir = cdDown
+        Command = 3
+        MoveCaret = True
+        Option = 1
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbRight
+        ClickCount = ccSingle
+        ClickDir = cdUp
+        Command = 12
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbLeft
+        ClickCount = ccDouble
+        ClickDir = cdDown
+        Command = 6
+        MoveCaret = True
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbLeft
+        ClickCount = ccTriple
+        ClickDir = cdDown
+        Command = 7
+        MoveCaret = True
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbLeft
+        ClickCount = ccQuad
+        ClickDir = cdDown
+        Command = 8
+        MoveCaret = True
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbMiddle
+        ClickCount = ccSingle
+        ClickDir = cdDown
+        Command = 10
+        MoveCaret = True
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = [ssCtrl]
+        ShiftMask = [ssShift, ssAlt, ssCtrl]
+        Button = mbLeft
+        ClickCount = ccSingle
+        ClickDir = cdUp
+        Command = 11
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end>
+    MouseSelActions = <    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbLeft
+        ClickCount = ccSingle
+        ClickDir = cdDown
+        Command = 9
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end>
+    BracketHighlightStyle = sbhsBoth
+    inline TSynGutterPartList
+      object TSynGutterMarks
+        Width = 24
+      end
+      object TSynGutterLineNumber
+        Width = 17
+        MouseActions = <>
+        MarkupInfo.Background = clBtnFace
+        MarkupInfo.Foreground = clNone
+        DigitCount = 2
+        ShowOnlyLineNumbersMultiplesOf = 1
+        ZeroStart = False
+        LeadingZeros = False
+      end
+      object TSynGutterChanges
+        Width = 4
+        ModifiedColor = 59900
+        SavedColor = clGreen
+      end
+      object TSynGutterSeparator
+        Width = 2
+      end
+      object TSynGutterCodeFolding
+        MouseActions = <        
+          item
+            Shift = []
+            ShiftMask = []
+            Button = mbRight
+            ClickCount = ccSingle
+            ClickDir = cdUp
+            Command = 16
+            MoveCaret = False
+            Option = 0
+            Priority = 0
+          end        
+          item
+            Shift = []
+            ShiftMask = [ssShift]
+            Button = mbMiddle
+            ClickCount = ccAny
+            ClickDir = cdDown
+            Command = 14
+            MoveCaret = False
+            Option = 0
+            Priority = 0
+          end        
+          item
+            Shift = [ssShift]
+            ShiftMask = [ssShift]
+            Button = mbMiddle
+            ClickCount = ccAny
+            ClickDir = cdDown
+            Command = 14
+            MoveCaret = False
+            Option = 1
+            Priority = 0
+          end        
+          item
+            Shift = []
+            ShiftMask = []
+            Button = mbLeft
+            ClickCount = ccAny
+            ClickDir = cdDown
+            Command = 0
+            MoveCaret = False
+            Option = 0
+            Priority = 0
+          end>
+        MarkupInfo.Background = clNone
+        MarkupInfo.Foreground = clGray
+        MouseActionsExpanded = <        
+          item
+            Shift = []
+            ShiftMask = []
+            Button = mbLeft
+            ClickCount = ccAny
+            ClickDir = cdDown
+            Command = 14
+            MoveCaret = False
+            Option = 0
+            Priority = 0
+          end>
+        MouseActionsCollapsed = <        
+          item
+            Shift = [ssCtrl]
+            ShiftMask = [ssCtrl]
+            Button = mbLeft
+            ClickCount = ccAny
+            ClickDir = cdDown
+            Command = 15
+            MoveCaret = False
+            Option = 0
+            Priority = 0
+          end        
+          item
+            Shift = []
+            ShiftMask = [ssCtrl]
+            Button = mbLeft
+            ClickCount = ccAny
+            ClickDir = cdDown
+            Command = 15
+            MoveCaret = False
+            Option = 1
+            Priority = 0
+          end>
+      end
+    end
+  end
+  object SQLQuery1: TSQLQuery
+    IndexName = 'DEFAULT_ORDER'
+    AutoCalcFields = False
+    ReadOnly = False
+    Params = <>
+    left = 344
+    top = 256
+  end
+  object SynAutoComplete1: TSynAutoComplete
+    AutoCompleteList.Strings = (
+      'select'
+      'table'
+      'order'
+      'update'
+      'set'
+      'create'
+      'delete'
+    )
+    EndOfTokenChr = '()[].'
+    Editor = syScript
+    ShortCut = 8224
+    left = 286
+    top = 504
+  end
+  object SynSQLSyn1: TSynSQLSyn
+    DefaultFilter = 'SQL Files (*.sql)|*.sql'
+    Enabled = False
+    CommentAttri.FrameEdges = sfeAround
+    DataTypeAttri.FrameEdges = sfeAround
+    DefaultPackageAttri.FrameEdges = sfeAround
+    ExceptionAttri.FrameEdges = sfeAround
+    FunctionAttri.FrameEdges = sfeAround
+    IdentifierAttri.FrameEdges = sfeAround
+    KeyAttri.FrameEdges = sfeAround
+    NumberAttri.FrameEdges = sfeAround
+    PLSQLAttri.FrameEdges = sfeAround
+    SpaceAttri.FrameEdges = sfeAround
+    SQLPlusAttri.FrameEdges = sfeAround
+    StringAttri.FrameEdges = sfeAround
+    SymbolAttri.FrameEdges = sfeAround
+    TableNameAttri.FrameEdges = sfeAround
+    VariableAttri.FrameEdges = sfeAround
+    SQLDialect = sqlSybase
+    left = 362
+    top = 504
+  end
+end

+ 195 - 0
newtable.lrs

@@ -0,0 +1,195 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmNewTable','FORMDATA',[
+  'TPF0'#11'TfmNewTable'#10'fmNewTable'#4'Left'#3#20#2#6'Height'#3'&'#2#3'Top'#3
+  +'.'#1#5'Width'#3'='#2#13'ActiveControl'#7#10'edNewTable'#7'Caption'#6#9'New '
+  +'Table'#12'ClientHeight'#3'&'#2#11'ClientWidth'#3'='#2#7'OnClose'#7#9'FormCl'
+  +'ose'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#6'TLabel'
+  +#6'Label1'#4'Left'#2#5#6'Height'#2#18#3'Top'#2#14#5'Width'#2'm'#7'Caption'#6
+  +#14'New Table name'#11'ParentColor'#8#0#0#5'TEdit'#10'edNewTable'#4'Left'#2
+  +#127#6'Height'#2#27#3'Top'#2#8#5'Width'#3#153#0#8'TabOrder'#2#0#0#0#11'TStri'
+  +'ngGrid'#11'StringGrid1'#4'Left'#2#8#6'Height'#3#224#0#3'Top'#2';'#5'Width'#3
+  +'*'#2#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#8'ColCount'#2
+  +#6#7'Columns'#14#1#13'Title.Caption'#6#10'Field Name'#5'Width'#2'd'#0#1#13'T'
+  +'itle.Caption'#6#9'Data Type'#5'Width'#2'x'#0#1#13'Title.Caption'#6#4'Size'#0
+  +#1#11'ButtonStyle'#7#17'cbsCheckboxColumn'#13'Title.Caption'#6#10'Allow Null'
+  +#5'Width'#2'Z'#0#1#11'ButtonStyle'#7#17'cbsCheckboxColumn'#13'Title.Caption'
+  +#6#5'P-Key'#11'Title.Color'#4#219#216#174#0#16'Title.Font.Color'#4#12#8#253#0
+  +#0#1#13'Title.Caption'#6#13'Default Value'#5'Width'#2'x'#0#0#10'FixedColor'#4
+  +#207#218#221#0#9'FixedCols'#2#0#7'Options'#11#15'goFixedVertLine'#15'goFixed'
+  +'HorzLine'#10'goVertLine'#10'goHorzLine'#13'goRangeSelect'#9'goEditing'#14'g'
+  +'oSmoothScroll'#0#8'RowCount'#2#3#8'TabOrder'#2#1#13'OnEditingDone'#7#22'Str'
+  +'ingGrid1EditingDone'#7'OnKeyUp'#7#16'StringGrid1KeyUp'#9'OnMouseUp'#7#18'St'
+  +'ringGrid1MouseUp'#16'OnPickListSelect'#7#25'StringGrid1PickListSelect'#0#0#7
+  +'TBitBtn'#8'bbCreate'#4'Left'#2#9#6'Height'#2#30#3'Top'#3#248#1#5'Width'#2'v'
+  +#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#6'Create'#5'Color'#4#219
+  +#242#247#0#7'Enabled'#8#4'Kind'#7#5'bkYes'#7'OnClick'#7#13'bbCreateClick'#8
+  +'TabOrder'#2#2#0#0#7'TBitBtn'#7'BitBtn2'#4'Left'#3#150#0#6'Height'#2#30#3'To'
+  +'p'#3#248#1#5'Width'#2'`'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#6'Cancel'#9#7
+  +'Caption'#6#6'Cancel'#5'Color'#4#219#242#247#0#4'Kind'#7#8'bkCancel'#11'Moda'
+  +'lResult'#2#2#8'TabOrder'#2#3#0#0#7'TBitBtn'#8'bbScript'#4'Left'#2#9#6'Heigh'
+  +'t'#2#30#3'Top'#3'('#1#5'Width'#2'v'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7
+  +'Caption'#6#6'Script'#5'Color'#4#219#242#247#0#7'Default'#9#4'Kind'#7#5'bkYe'
+  +'s'#7'OnClick'#7#13'bbScriptClick'#8'TabOrder'#2#4#0#0#9'TCheckBox'#11'cxCre'
+  +'ateGen'#4'Left'#3#156#0#6'Height'#2#22#3'Top'#3'-'#1#5'Width'#3#193#0#7'Anc'
+  +'hors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#25'Create Auto Inc Generator'
+  +#8'TabOrder'#2#5#0#0#244#8'TSynEdit'#8'syScript'#4'Left'#2#10#6'Height'#3#168
+  +#0#3'Top'#3'O'#1#5'Width'#3'*'#2#7'Anchors'#11#6'akLeft'#7'akRight'#8'akBott'
+  +'om'#0#11'Font.Height'#2#243#9'Font.Name'#6#11'Courier New'#10'Font.Pitch'#7
+  +#7'fpFixed'#12'Font.Quality'#7#16'fqNonAntialiased'#11'ParentColor'#8#10'Par'
+  +'entFont'#8#8'TabOrder'#2#6#12'Gutter.Width'#2'9'#19'Gutter.MouseActions'#14
+  +#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5
+  +'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#13#9'MoveCaret'#8#6'Option'#2#0
+  +#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#7'mbRight'
+  +#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2#12#9'MoveCa'
+  +'ret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#17'RightGutter.Width'#2#0#24'Right'
+  +'Gutter.MouseActions'#14#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbL'
+  +'eft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#13#9'Mo'
+  +'veCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0
+  +#6'Button'#7#7'mbRight'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7
+  +'Command'#2#12#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#11'Highlight'
+  +'er'#7#10'SynSQLSyn1'#10'Keystrokes'#14#1#7'Command'#7#4'ecUp'#8'ShortCut'#2
+  +'&'#0#1#7'Command'#7#7'ecSelUp'#8'ShortCut'#3'& '#0#1#7'Command'#7#10'ecScro'
+  +'llUp'#8'ShortCut'#3'&@'#0#1#7'Command'#7#6'ecDown'#8'ShortCut'#2'('#0#1#7'C'
+  +'ommand'#7#9'ecSelDown'#8'ShortCut'#3'( '#0#1#7'Command'#7#12'ecScrollDown'#8
+  +'ShortCut'#3'(@'#0#1#7'Command'#7#6'ecLeft'#8'ShortCut'#2'%'#0#1#7'Command'#7
+  +#9'ecSelLeft'#8'ShortCut'#3'% '#0#1#7'Command'#7#10'ecWordLeft'#8'ShortCut'#3
+  +'%@'#0#1#7'Command'#7#13'ecSelWordLeft'#8'ShortCut'#3'%`'#0#1#7'Command'#7#7
+  +'ecRight'#8'ShortCut'#2''''#0#1#7'Command'#7#10'ecSelRight'#8'ShortCut'#3''''
+  +' '#0#1#7'Command'#7#11'ecWordRight'#8'ShortCut'#3'''@'#0#1#7'Command'#7#14
+  +'ecSelWordRight'#8'ShortCut'#3'''`'#0#1#7'Command'#7#10'ecPageDown'#8'ShortC'
+  +'ut'#2'"'#0#1#7'Command'#7#13'ecSelPageDown'#8'ShortCut'#3'" '#0#1#7'Command'
+  +#7#12'ecPageBottom'#8'ShortCut'#3'"@'#0#1#7'Command'#7#15'ecSelPageBottom'#8
+  +'ShortCut'#3'"`'#0#1#7'Command'#7#8'ecPageUp'#8'ShortCut'#2'!'#0#1#7'Command'
+  +#7#11'ecSelPageUp'#8'ShortCut'#3'! '#0#1#7'Command'#7#9'ecPageTop'#8'ShortCu'
+  +'t'#3'!@'#0#1#7'Command'#7#12'ecSelPageTop'#8'ShortCut'#3'!`'#0#1#7'Command'
+  +#7#11'ecLineStart'#8'ShortCut'#2'$'#0#1#7'Command'#7#14'ecSelLineStart'#8'Sh'
+  +'ortCut'#3'$ '#0#1#7'Command'#7#11'ecEditorTop'#8'ShortCut'#3'$@'#0#1#7'Comm'
+  ,'and'#7#14'ecSelEditorTop'#8'ShortCut'#3'$`'#0#1#7'Command'#7#9'ecLineEnd'#8
+  +'ShortCut'#2'#'#0#1#7'Command'#7#12'ecSelLineEnd'#8'ShortCut'#3'# '#0#1#7'Co'
+  +'mmand'#7#14'ecEditorBottom'#8'ShortCut'#3'#@'#0#1#7'Command'#7#17'ecSelEdit'
+  +'orBottom'#8'ShortCut'#3'#`'#0#1#7'Command'#7#12'ecToggleMode'#8'ShortCut'#2
+  +'-'#0#1#7'Command'#7#6'ecCopy'#8'ShortCut'#3'-@'#0#1#7'Command'#7#7'ecPaste'
+  +#8'ShortCut'#3'- '#0#1#7'Command'#7#12'ecDeleteChar'#8'ShortCut'#2'.'#0#1#7
+  +'Command'#7#5'ecCut'#8'ShortCut'#3'. '#0#1#7'Command'#7#16'ecDeleteLastChar'
+  +#8'ShortCut'#2#8#0#1#7'Command'#7#16'ecDeleteLastChar'#8'ShortCut'#3#8' '#0#1
+  +#7'Command'#7#16'ecDeleteLastWord'#8'ShortCut'#3#8'@'#0#1#7'Command'#7#6'ecU'
+  +'ndo'#8'ShortCut'#4#8#128#0#0#0#1#7'Command'#7#6'ecRedo'#8'ShortCut'#4#8#160
+  +#0#0#0#1#7'Command'#7#11'ecLineBreak'#8'ShortCut'#2#13#0#1#7'Command'#7#11'e'
+  +'cSelectAll'#8'ShortCut'#3'A@'#0#1#7'Command'#7#6'ecCopy'#8'ShortCut'#3'C@'#0
+  +#1#7'Command'#7#13'ecBlockIndent'#8'ShortCut'#3'I`'#0#1#7'Command'#7#11'ecLi'
+  +'neBreak'#8'ShortCut'#3'M@'#0#1#7'Command'#7#12'ecInsertLine'#8'ShortCut'#3
+  +'N@'#0#1#7'Command'#7#12'ecDeleteWord'#8'ShortCut'#3'T@'#0#1#7'Command'#7#15
+  +'ecBlockUnindent'#8'ShortCut'#3'U`'#0#1#7'Command'#7#7'ecPaste'#8'ShortCut'#3
+  +'V@'#0#1#7'Command'#7#5'ecCut'#8'ShortCut'#3'X@'#0#1#7'Command'#7#12'ecDelet'
+  +'eLine'#8'ShortCut'#3'Y@'#0#1#7'Command'#7#11'ecDeleteEOL'#8'ShortCut'#3'Y`'
+  +#0#1#7'Command'#7#6'ecUndo'#8'ShortCut'#3'Z@'#0#1#7'Command'#7#6'ecRedo'#8'S'
+  +'hortCut'#3'Z`'#0#1#7'Command'#7#13'ecGotoMarker0'#8'ShortCut'#3'0@'#0#1#7'C'
+  +'ommand'#7#13'ecGotoMarker1'#8'ShortCut'#3'1@'#0#1#7'Command'#7#13'ecGotoMar'
+  +'ker2'#8'ShortCut'#3'2@'#0#1#7'Command'#7#13'ecGotoMarker3'#8'ShortCut'#3'3@'
+  +#0#1#7'Command'#7#13'ecGotoMarker4'#8'ShortCut'#3'4@'#0#1#7'Command'#7#13'ec'
+  +'GotoMarker5'#8'ShortCut'#3'5@'#0#1#7'Command'#7#13'ecGotoMarker6'#8'ShortCu'
+  +'t'#3'6@'#0#1#7'Command'#7#13'ecGotoMarker7'#8'ShortCut'#3'7@'#0#1#7'Command'
+  +#7#13'ecGotoMarker8'#8'ShortCut'#3'8@'#0#1#7'Command'#7#13'ecGotoMarker9'#8
+  +'ShortCut'#3'9@'#0#1#7'Command'#7#12'ecSetMarker0'#8'ShortCut'#3'0`'#0#1#7'C'
+  +'ommand'#7#12'ecSetMarker1'#8'ShortCut'#3'1`'#0#1#7'Command'#7#12'ecSetMarke'
+  +'r2'#8'ShortCut'#3'2`'#0#1#7'Command'#7#12'ecSetMarker3'#8'ShortCut'#3'3`'#0
+  +#1#7'Command'#7#12'ecSetMarker4'#8'ShortCut'#3'4`'#0#1#7'Command'#7#12'ecSet'
+  +'Marker5'#8'ShortCut'#3'5`'#0#1#7'Command'#7#12'ecSetMarker6'#8'ShortCut'#3
+  +'6`'#0#1#7'Command'#7#12'ecSetMarker7'#8'ShortCut'#3'7`'#0#1#7'Command'#7#12
+  +'ecSetMarker8'#8'ShortCut'#3'8`'#0#1#7'Command'#7#12'ecSetMarker9'#8'ShortCu'
+  +'t'#3'9`'#0#1#7'Command'#7#12'EcFoldLevel1'#8'ShortCut'#4'1'#160#0#0#0#1#7'C'
+  +'ommand'#7#12'EcFoldLevel2'#8'ShortCut'#4'2'#160#0#0#0#1#7'Command'#7#12'EcF'
+  +'oldLevel1'#8'ShortCut'#4'3'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel1'#8'Sho'
+  +'rtCut'#4'4'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel1'#8'ShortCut'#4'5'#160#0
+  +#0#0#1#7'Command'#7#12'EcFoldLevel6'#8'ShortCut'#4'6'#160#0#0#0#1#7'Command'
+  +#7#12'EcFoldLevel7'#8'ShortCut'#4'7'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel'
+  +'8'#8'ShortCut'#4'8'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel9'#8'ShortCut'#4
+  +'9'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel0'#8'ShortCut'#4'0'#160#0#0#0#1#7
+  +'Command'#7#13'EcFoldCurrent'#8'ShortCut'#4'-'#160#0#0#0#1#7'Command'#7#15'E'
+  +'cUnFoldCurrent'#8'ShortCut'#4'+'#160#0#0#0#1#7'Command'#7#18'EcToggleMarkup'
+  +'Word'#8'ShortCut'#4'M'#128#0#0#0#1#7'Command'#7#14'ecNormalSelect'#8'ShortC'
+  +'ut'#3'N`'#0#1#7'Command'#7#14'ecColumnSelect'#8'ShortCut'#3'C`'#0#1#7'Comma'
+  +'nd'#7#12'ecLineSelect'#8'ShortCut'#3'L`'#0#1#7'Command'#7#5'ecTab'#8'ShortC'
+  +'ut'#2#9#0#1#7'Command'#7#10'ecShiftTab'#8'ShortCut'#3#9' '#0#1#7'Command'#7
+  +#14'ecMatchBracket'#8'ShortCut'#3'B`'#0#1#7'Command'#7#10'ecColSelUp'#8'Shor'
+  +'tCut'#4'&'#160#0#0#0#1#7'Command'#7#12'ecColSelDown'#8'ShortCut'#4'('#160#0
+  +#0#0#1#7'Command'#7#12'ecColSelLeft'#8'ShortCut'#4'%'#160#0#0#0#1#7'Command'
+  +#7#13'ecColSelRight'#8'ShortCut'#4''''#160#0#0#0#1#7'Command'#7#16'ecColSelP'
+  +'ageDown'#8'ShortCut'#4'"'#160#0#0#0#1#7'Command'#7#18'ecColSelPageBottom'#8
+  +'ShortCut'#4'"'#224#0#0#0#1#7'Command'#7#14'ecColSelPageUp'#8'ShortCut'#4'!'
+  +#160#0#0#0#1#7'Command'#7#15'ecColSelPageTop'#8'ShortCut'#4'!'#224#0#0#0#1#7
+  +'Command'#7#17'ecColSelLineStart'#8'ShortCut'#4'$'#160#0#0#0#1#7'Command'#7
+  +#15'ecColSelLineEnd'#8'ShortCut'#4'#'#160#0#0#0#1#7'Command'#7#17'ecColSelEd'
+  +'itorTop'#8'ShortCut'#4'$'#224#0#0#0#1#7'Command'#7#20'ecColSelEditorBottom'
+  +#8'ShortCut'#4'#'#224#0#0#0#0#12'MouseActions'#14#1#5'Shift'#11#0#9'ShiftMas'
+  +'k'#11#7'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSing'
+  +'le'#8'ClickDir'#7#6'cdDown'#7'Command'#2#1#9'MoveCaret'#9#6'Option'#2#0#8'P'
+  +'riority'#2#0#0#1#5'Shift'#11#7'ssShift'#0#9'ShiftMask'#11#7'ssShift'#5'ssAl'
+  +'t'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdD'
+  +'own'#7'Command'#2#1#9'MoveCaret'#9#6'Option'#2#1#8'Priority'#2#0#0#1#5'Shif'
+  +'t'#11#5'ssAlt'#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbLeft'
+  ,#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#3#9'MoveC'
+  +'aret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#7'ssShift'#5'ssAlt'#0
+  +#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7
+  +#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#3#9'MoveCaret'#9#6'Option'
+  +#2#1#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#7'mbRig'
+  +'ht'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2#12#9'Mo'
+  +'veCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0
+  +#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccDouble'#8'ClickDir'#7#6'cdDown'#7
+  +'Command'#2#6#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0
+  +#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccTriple'#8'Clic'
+  +'kDir'#7#6'cdDown'#7'Command'#2#7#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2
+  +#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7
+  +#6'ccQuad'#8'ClickDir'#7#6'cdDown'#7'Command'#2#8#9'MoveCaret'#9#6'Option'#2
+  +#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#8'mbMiddl'
+  +'e'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#10#9'M'
+  +'oveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#6'ssCtrl'#0#9'Shi'
+  +'ftMask'#11#7'ssShift'#5'ssAlt'#6'ssCtrl'#0#6'Button'#7#6'mbLeft'#10'ClickCo'
+  +'unt'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2#11#9'MoveCaret'#8#6'O'
+  +'ption'#2#0#8'Priority'#2#0#0#0#15'MouseSelActions'#14#1#5'Shift'#11#0#9'Shi'
+  +'ftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'
+  +#7#6'cdDown'#7'Command'#2#9#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0
+  +#21'BracketHighlightStyle'#7#8'sbhsBoth'#0#244#18'TSynGutterPartList'#0#0#15
+  +'TSynGutterMarks'#0#5'Width'#2#24#0#0#20'TSynGutterLineNumber'#0#5'Width'#2
+  +#17#12'MouseActions'#14#0#21'MarkupInfo.Background'#7#9'clBtnFace'#21'Markup'
+  +'Info.Foreground'#7#6'clNone'#10'DigitCount'#2#2#30'ShowOnlyLineNumbersMulti'
+  +'plesOf'#2#1#9'ZeroStart'#8#12'LeadingZeros'#8#0#0#17'TSynGutterChanges'#0#5
+  +'Width'#2#4#13'ModifiedColor'#4#252#233#0#0#10'SavedColor'#7#7'clGreen'#0#0
+  +#19'TSynGutterSeparator'#0#5'Width'#2#2#0#0#21'TSynGutterCodeFolding'#0#12'M'
+  +'ouseActions'#14#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#7'mbRight'#10
+  +'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2#16#9'MoveCaret'
+  +#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#7'ssShift'
+  +#0#6'Button'#7#8'mbMiddle'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'
+  +#7'Command'#2#14#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11
+  +#7'ssShift'#0#9'ShiftMask'#11#7'ssShift'#0#6'Button'#7#8'mbMiddle'#10'ClickC'
+  +'ount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#14#9'MoveCaret'#8#6'O'
+  +'ption'#2#1#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6
+  +'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#0#9
+  +'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#21'MarkupInfo.Background'#7#6
+  +'clNone'#21'MarkupInfo.Foreground'#7#6'clGray'#20'MouseActionsExpanded'#14#1
+  +#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'cc'
+  +'Any'#8'ClickDir'#7#6'cdDown'#7'Command'#2#14#9'MoveCaret'#8#6'Option'#2#0#8
+  +'Priority'#2#0#0#0#21'MouseActionsCollapsed'#14#1#5'Shift'#11#6'ssCtrl'#0#9
+  +'ShiftMask'#11#6'ssCtrl'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8
+  +'ClickDir'#7#6'cdDown'#7'Command'#2#15#9'MoveCaret'#8#6'Option'#2#0#8'Priori'
+  +'ty'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#6'ssCtrl'#0#6'Button'#7#6'mbLeft'
+  +#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#15#9'MoveCar'
+  +'et'#8#6'Option'#2#1#8'Priority'#2#0#0#0#0#0#0#0#9'TSQLQuery'#9'SQLQuery1'#9
+  +'IndexName'#6#13'DEFAULT_ORDER'#14'AutoCalcFields'#8#8'ReadOnly'#8#6'Params'
+  +#14#0#4'left'#3'X'#1#3'top'#3#0#1#0#0#16'TSynAutoComplete'#16'SynAutoComplet'
+  +'e1'#24'AutoCompleteList.Strings'#1#6#6'select'#6#5'table'#6#5'order'#6#6'up'
+  +'date'#6#3'set'#6#6'create'#6#6'delete'#0#13'EndOfTokenChr'#6#5'()[].'#6'Edi'
+  +'tor'#7#8'syScript'#8'ShortCut'#3'  '#4'left'#3#30#1#3'top'#3#248#1#0#0#10'T'
+  +'SynSQLSyn'#10'SynSQLSyn1'#13'DefaultFilter'#6#23'SQL Files (*.sql)|*.sql'#7
+  +'Enabled'#8#23'CommentAttri.FrameEdges'#7#9'sfeAround'#24'DataTypeAttri.Fram'
+  +'eEdges'#7#9'sfeAround'#30'DefaultPackageAttri.FrameEdges'#7#9'sfeAround'#25
+  +'ExceptionAttri.FrameEdges'#7#9'sfeAround'#24'FunctionAttri.FrameEdges'#7#9
+  +'sfeAround'#26'IdentifierAttri.FrameEdges'#7#9'sfeAround'#19'KeyAttri.FrameE'
+  +'dges'#7#9'sfeAround'#22'NumberAttri.FrameEdges'#7#9'sfeAround'#21'PLSQLAttr'
+  +'i.FrameEdges'#7#9'sfeAround'#21'SpaceAttri.FrameEdges'#7#9'sfeAround'#23'SQ'
+  +'LPlusAttri.FrameEdges'#7#9'sfeAround'#22'StringAttri.FrameEdges'#7#9'sfeAro'
+  +'und'#22'SymbolAttri.FrameEdges'#7#9'sfeAround'#25'TableNameAttri.FrameEdges'
+  +#7#9'sfeAround'#24'VariableAttri.FrameEdges'#7#9'sfeAround'#10'SQLDialect'#7
+  +#9'sqlSybase'#4'left'#3'j'#1#3'top'#3#248#1#0#0#0
+]);

+ 241 - 0
newtable.pas

@@ -0,0 +1,241 @@
+unit NewTable;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, IBConnection, sqldb, FileUtil, LResources, Forms, Controls,
+  Graphics, Dialogs, StdCtrls, Grids, Buttons, SynEdit, SynCompletion,
+  SynHighlighterSQL;
+
+type
+
+  { TfmNewTable }
+
+  TfmNewTable = class(TForm)
+    bbCreate: TBitBtn;
+    bbScript: TBitBtn;
+    BitBtn2: TBitBtn;
+    cxCreateGen: TCheckBox;
+    edNewTable: TEdit;
+    Label1: TLabel;
+    SQLQuery1: TSQLQuery;
+    StringGrid1: TStringGrid;
+    SynAutoComplete1: TSynAutoComplete;
+    syScript: TSynEdit;
+    SynSQLSyn1: TSynSQLSyn;
+    procedure bbCreateClick(Sender: TObject);
+    procedure bbScriptClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
+    procedure StringGrid1ChangeBounds(Sender: TObject);
+    procedure StringGrid1EditingDone(Sender: TObject);
+    procedure StringGrid1KeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    function GenerateCreateSQL: string;
+    procedure Init(dbIndex: Integer);
+    procedure StringGrid1PickListSelect(Sender: TObject);
+  private
+    fdbIndex: Integer;
+    { private declarations }
+  public
+    GeneratorName: string;
+    { public declarations }
+  end; 
+
+var
+  fmNewTable: TfmNewTable;
+
+implementation
+
+{ TfmNewTable }
+
+uses SysTables, Main;
+
+
+function TfmNewTable.GenerateCreateSQL: string;
+var
+  i: Integer;
+  FieldLine: string;
+  FieldType: string;
+  PKey: string;
+begin
+  Result:= 'create table ' + edNewTable.Text + ' (' + #10;
+  for i:= 1 to StringGrid1.RowCount - 1 do
+    if Trim(StringGrid1.Cells[0, i]) <> '' then
+    begin
+      FieldLine:= StringGrid1.Cells[0, i]; // Field Name
+      FieldType:= StringGrid1.Cells[1, i];
+      FieldLine:= FieldLine + ' ' + FieldType;
+
+      // Char size
+      if (LowerCase(FieldType) = 'varchar') or (LowerCase(FieldType) = 'char') then
+      begin
+        FieldLine:= FieldLine + '(' + StringGrid1.Cells[2, i] + ')';
+      end;
+
+      // Allow Null
+      if StringGrid1.Cells[3, i] = '0' then
+        FieldLine:= FieldLine + ' not null ';
+
+      // Primary Key
+      if StringGrid1.Cells[4, i] = '1' then
+      begin
+        PKey:= PKey + StringGrid1.Cells[0, i] + ',';
+        GeneratorName:= Trim(edNewTable.Text) + '_' + StringGrid1.Cells[0, i] + '_Gen';
+      end;
+      // Default value
+      if Trim(StringGrid1.Cells[5, i]) <> '' then
+      begin
+        if (Pos('CHAR', FieldType) > 0) and (Pos('''', StringGrid1.Cells[5, i]) = 0) then
+          FieldLine:= FieldLine + ' default ''' + StringGrid1.Cells[5, i] + ''''
+        else
+          FieldLine:= FieldLine + ' default ' + StringGrid1.Cells[5, i];
+      end;
+
+      if (StringGrid1.RowCount > i + 1) and (Trim(stringGrid1.Cells[0, i + 1]) <> '') then
+        FieldLine:= FieldLine + ',' + #10;
+      Result:= Result + FieldLine;
+    end;
+
+  // Set Primary key
+  if PKey <> '' then
+  begin
+    Delete(PKey, Length(PKey), 1);
+    Result:= Result + ', ' + #10 + ' primary key (' + PKey + ') ' + #10;
+  end;
+  Result:= Result + ');';
+end;
+
+procedure TfmNewTable.Init(dbIndex: Integer);
+var
+  i: Integer;
+begin
+  fdbIndex:= dbIndex;
+  edNewTable.Clear;
+  bbCreate.Enabled:= False;
+  cxCreateGen.Checked:= False;
+  StringGrid1.RowCount:= 3;
+  syScript.Lines.Clear;
+  SQLQuery1.DataBase:= fmMain.RegisteredDatabases[dbIndex].IBConnection;
+
+  StringGrid1.Columns[1].PickList.Clear;
+  // Add Basic types
+  dmSysTables.GetBasicTypes(StringGrid1.Columns[1].PickList);
+
+  // Add Domain types
+  dmSysTables.GetDomainTypes(dbIndex, StringGrid1.Columns[1].PickList);
+  for i:= 1 to StringGrid1.RowCount - 1 do
+  begin
+    StringGrid1.Cells[0, i]:= '';
+    StringGrid1.Cells[1, i]:= '';
+    StringGrid1.Cells[2, i]:= '';
+    StringGrid1.Cells[3, i]:= '1';
+    StringGrid1.Cells[4, i]:= '0';
+  end;
+end;
+
+procedure TfmNewTable.StringGrid1PickListSelect(Sender: TObject);
+var
+  SelType: string;
+begin
+  if (StringGrid1.Col = 1) then
+  begin
+    SelType:= StringGrid1.Cells[1, StringGrid1.Row];
+    StringGrid1.Cells[2, StringGrid1.Row]:= IntToStr(dmSysTables.GetDefaultTypeSize(fdbIndex, SelType));
+  end;
+end;
+
+procedure TfmNewTable.StringGrid1EditingDone(Sender: TObject);
+var
+  SelType: string;
+begin
+//  if (StringGrid1.Col = 1) and (Trim(StringGrid1.Cells[2, StringGrid1.Row]) = '') then
+//  begin
+//    SelType:= StringGrid1.Cells[1, StringGrid1.Row];
+//    StringGrid1.Cells[2, StringGrid1.Row]:= IntToStr(dmSysTables.GetDefaultTypeSize(fdbIndex, SelType));
+//  end;
+
+end;
+
+procedure TfmNewTable.bbCreateClick(Sender: TObject);
+begin
+  StringGrid1.Row:= 1;
+  if (Trim(edNewTable.Text) <> '') then
+  begin
+    SQLQuery1.Close;
+    SQLQuery1.SQL.Text:= syScript.Lines.Text;
+    SQLQuery1.ExecSQL;
+    fmMain.RegisteredDatabases[fdbIndex].SQLTrans.Commit;
+    fmMain.AddToSQLHistory(fmMain.RegisteredDatabases[fdbIndex].RegRec.Title, 'DDL', syScript.Lines.Text);
+    MessageDlg('Table ' + edNewTable.Text + ' has been created successfully', mtInformation, [mbOk], 0);
+    ModalResult:= mrOK;
+  end
+  else
+    MessageDlg('You should enter new table name', mtError, [mbOK], 0);
+end;
+
+procedure TfmNewTable.bbScriptClick(Sender: TObject);
+begin
+  syScript.Lines.Text:= GenerateCreateSQL;
+  bbCreate.Enabled:= True;
+end;
+
+procedure TfmNewTable.FormClose(Sender: TObject; var CloseAction: TCloseAction);
+begin
+  StringGrid1.Row:= 1;
+end;
+
+procedure TfmNewTable.StringGrid1ChangeBounds(Sender: TObject);
+begin
+
+end;
+
+
+procedure TfmNewTable.StringGrid1KeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if Key = 40 then // Key down
+    if Trim(StringGrid1.Cells[0, StringGrid1.RowCount - 1]) <> '' then
+    begin
+      StringGrid1.RowCount:= StringGrid1.RowCount + 1;
+      StringGrid1.Row:= StringGrid1.RowCount - 1;
+      StringGrid1.Cells[3, StringGrid1.Row]:= '1';
+      StringGrid1.Cells[4, StringGrid1.Row]:= '0';
+    end;
+  if Key = 45 then // Insert
+  begin
+    StringGrid1.InsertColRow(False, StringGrid1.Row);
+  end
+  else
+  if Key = 46 then // Delete
+  begin
+    if StringGrid1.RowCount > 1 then
+      StringGrid1.DeleteColRow(False, StringGrid1.Row);
+  end;
+end;
+
+procedure TfmNewTable.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  // Primary Key checked
+  if (StringGrid1.Col = 4) and (StringGrid1.Cells[4, StringGrid1.Row] = '0') then
+  begin
+    StringGrid1.Cells[3, StringGrid1.Row]:= '0'; // Uncheck Allow null
+    StringGrid1.Cells[5, StringGrid1.Row]:= ''; // Remove default value
+  end;
+
+  // Allow Null checked
+  if (StringGrid1.Col = 3) and (StringGrid1.Cells[3, StringGrid1.Row] = '1') then
+  begin
+    StringGrid1.Cells[5, StringGrid1.Row]:= ''; // Remove default value
+  end;
+end;
+
+initialization
+  {$I newtable.lrs}
+
+end.
+

+ 314 - 0
permissionmanage.lfm

@@ -0,0 +1,314 @@
+object fmPermissionManage: TfmPermissionManage
+  Left = 474
+  Height = 361
+  Top = 204
+  Width = 523
+  Caption = 'Permission Management'
+  ClientHeight = 361
+  ClientWidth = 523
+  OnClose = FormClose
+  Position = poScreenCenter
+  LCLVersion = '0.9.30'
+  object PageControl1: TPageControl
+    Left = 0
+    Height = 361
+    Top = 0
+    Width = 523
+    ActivePage = tsTables
+    Align = alClient
+    TabIndex = 0
+    TabOrder = 0
+    object tsTables: TTabSheet
+      Caption = 'Tables'
+      ClientHeight = 334
+      ClientWidth = 521
+      object Label1: TLabel
+        Left = 12
+        Height = 18
+        Top = 10
+        Width = 67
+        Caption = 'User/Role'
+        ParentColor = False
+      end
+      object Label2: TLabel
+        Left = 14
+        Height = 18
+        Top = 95
+        Width = 37
+        Caption = 'Table'
+        ParentColor = False
+      end
+      object cbTables: TComboBox
+        Left = 18
+        Height = 31
+        Top = 124
+        Width = 156
+        ItemHeight = 0
+        OnChange = cbTablesChange
+        Style = csDropDownList
+        TabOrder = 0
+      end
+      object Label3: TLabel
+        Left = 308
+        Height = 18
+        Top = 10
+        Width = 83
+        Caption = 'Permissions'
+        ParentColor = False
+      end
+      object cxSelect: TCheckBox
+        Left = 317
+        Height = 22
+        Top = 86
+        Width = 65
+        Caption = 'Select'
+        TabOrder = 1
+      end
+      object cxInsert: TCheckBox
+        Left = 318
+        Height = 22
+        Top = 138
+        Width = 63
+        Caption = 'Insert'
+        TabOrder = 2
+      end
+      object cxUpdate: TCheckBox
+        Left = 317
+        Height = 22
+        Top = 183
+        Width = 74
+        Caption = 'Update'
+        TabOrder = 3
+      end
+      object cxDelete: TCheckBox
+        Left = 317
+        Height = 22
+        Top = 236
+        Width = 68
+        Caption = 'Delete'
+        TabOrder = 4
+      end
+      object cxReferences: TCheckBox
+        Left = 318
+        Height = 22
+        Top = 287
+        Width = 99
+        Caption = 'References'
+        TabOrder = 5
+      end
+      object bbApplyTable: TBitBtn
+        Left = 6
+        Height = 30
+        Top = 287
+        Width = 75
+        Caption = 'Apply'
+        Kind = bkOK
+        OnClick = bbApplyTableClick
+        TabOrder = 6
+      end
+      object cbUsers: TComboBox
+        Left = 18
+        Height = 29
+        Top = 34
+        Width = 156
+        ItemHeight = 0
+        OnChange = cbTablesChange
+        TabOrder = 7
+      end
+      object cxSelectGrant: TCheckBox
+        Left = 345
+        Height = 22
+        Top = 102
+        Width = 97
+        Caption = 'With Grant'
+        TabOrder = 8
+      end
+      object cxInsertGrant: TCheckBox
+        Left = 345
+        Height = 22
+        Top = 154
+        Width = 97
+        Caption = 'With Grant'
+        TabOrder = 9
+      end
+      object cxUpdateGrant: TCheckBox
+        Left = 345
+        Height = 22
+        Top = 202
+        Width = 97
+        Caption = 'With Grant'
+        TabOrder = 10
+      end
+      object cxDeleteGrant: TCheckBox
+        Left = 342
+        Height = 22
+        Top = 253
+        Width = 97
+        Caption = 'With Grant'
+        TabOrder = 11
+      end
+      object cxReferencesGrant: TCheckBox
+        Left = 345
+        Height = 22
+        Top = 305
+        Width = 97
+        Caption = 'With Grant'
+        TabOrder = 12
+      end
+      object cxAll: TCheckBox
+        Left = 318
+        Height = 22
+        Top = 34
+        Width = 45
+        Caption = 'All'
+        Font.Style = [fsBold]
+        ParentFont = False
+        TabOrder = 13
+      end
+      object cxAllGrant: TCheckBox
+        Left = 345
+        Height = 22
+        Top = 49
+        Width = 102
+        Caption = 'With Grant'
+        Font.Style = [fsBold]
+        ParentFont = False
+        TabOrder = 14
+      end
+    end
+    object tsProcedures: TTabSheet
+      Caption = 'Procedures'
+      ClientHeight = 334
+      ClientWidth = 521
+      object Label4: TLabel
+        Left = 12
+        Height = 18
+        Top = 10
+        Width = 63
+        Caption = 'User/Role'
+        ParentColor = False
+      end
+      object cbProcUsers: TComboBox
+        Left = 18
+        Height = 29
+        Top = 34
+        Width = 156
+        ItemHeight = 0
+        OnChange = cbProcUsersChange
+        TabOrder = 0
+      end
+      object Label5: TLabel
+        Left = 230
+        Height = 18
+        Top = 11
+        Width = 80
+        Caption = 'Permissions'
+        ParentColor = False
+      end
+      object clbProcedures: TCheckListBox
+        Left = 246
+        Height = 236
+        Top = 39
+        Width = 211
+        Anchors = [akTop, akLeft, akBottom]
+        ItemHeight = 0
+        OnClick = clbProceduresClick
+        OnKeyUp = clbProceduresKeyUp
+        TabOrder = 1
+        TopIndex = -1
+      end
+      object bbApplyProc: TBitBtn
+        Left = 13
+        Height = 30
+        Top = 275
+        Width = 75
+        Caption = 'Apply'
+        Kind = bkOK
+        OnClick = bbApplyProcClick
+        TabOrder = 2
+      end
+      object cxProcGrant: TCheckBox
+        Left = 246
+        Height = 22
+        Top = 287
+        Width = 94
+        Anchors = [akLeft, akBottom]
+        Caption = 'With Grant'
+        OnChange = cxProcGrantChange
+        TabOrder = 3
+      end
+    end
+    object tsRoles: TTabSheet
+      Caption = 'Roles'
+      ClientHeight = 334
+      ClientWidth = 521
+      object Label6: TLabel
+        Left = 12
+        Height = 18
+        Top = 10
+        Width = 31
+        Caption = 'User'
+        ParentColor = False
+      end
+      object cbRolesUser: TComboBox
+        Left = 18
+        Height = 29
+        Top = 34
+        Width = 156
+        ItemHeight = 0
+        OnChange = cbRolesUserChange
+        TabOrder = 0
+      end
+      object Label7: TLabel
+        Left = 230
+        Height = 18
+        Top = 11
+        Width = 80
+        Caption = 'Permissions'
+        ParentColor = False
+      end
+      object bbApplyRoles: TBitBtn
+        Left = 12
+        Height = 30
+        Top = 283
+        Width = 75
+        Caption = 'Apply'
+        Default = True
+        Kind = bkOK
+        OnClick = bbApplyRolesClick
+        TabOrder = 1
+      end
+      object clbRoles: TCheckListBox
+        Left = 246
+        Height = 241
+        Top = 39
+        Width = 211
+        Anchors = [akTop, akLeft, akBottom]
+        ItemHeight = 0
+        OnClick = clbRolesClick
+        OnKeyUp = clbRolesKeyUp
+        TabOrder = 2
+        TopIndex = -1
+      end
+      object BitBtn1: TBitBtn
+        Left = 99
+        Height = 30
+        Top = 283
+        Width = 75
+        Caption = 'Refresh'
+        OnClick = BitBtn1Click
+        TabOrder = 3
+      end
+      object cxRoleGrant: TCheckBox
+        Left = 246
+        Height = 22
+        Top = 295
+        Width = 100
+        Anchors = [akLeft, akBottom]
+        Caption = 'With Admin'
+        OnChange = cxRoleGrantChange
+        TabOrder = 4
+      end
+    end
+  end
+end

+ 79 - 0
permissionmanage.lrs

@@ -0,0 +1,79 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmPermissionManage','FORMDATA',[
+  'TPF0'#19'TfmPermissionManage'#18'fmPermissionManage'#4'Left'#3#218#1#6'Heigh'
+  +'t'#3'i'#1#3'Top'#3#204#0#5'Width'#3#11#2#7'Caption'#6#21'Permission Managem'
+  +'ent'#12'ClientHeight'#3'i'#1#11'ClientWidth'#3#11#2#7'OnClose'#7#9'FormClos'
+  +'e'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.30'#0#12'TPageCo'
+  +'ntrol'#12'PageControl1'#4'Left'#2#0#6'Height'#3'i'#1#3'Top'#2#0#5'Width'#3
+  +#11#2#10'ActivePage'#7#8'tsTables'#5'Align'#7#8'alClient'#8'TabIndex'#2#0#8
+  +'TabOrder'#2#0#0#9'TTabSheet'#8'tsTables'#7'Caption'#6#6'Tables'#12'ClientHe'
+  +'ight'#3'N'#1#11'ClientWidth'#3#9#2#0#6'TLabel'#6'Label1'#4'Left'#2#12#6'Hei'
+  +'ght'#2#18#3'Top'#2#10#5'Width'#2'C'#7'Caption'#6#9'User/Role'#11'ParentColo'
+  +'r'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#14#6'Height'#2#18#3'Top'#2'_'#5'Widt'
+  +'h'#2'%'#7'Caption'#6#5'Table'#11'ParentColor'#8#0#0#9'TComboBox'#8'cbTables'
+  +#4'Left'#2#18#6'Height'#2#31#3'Top'#2'|'#5'Width'#3#156#0#10'ItemHeight'#2#0
+  +#8'OnChange'#7#14'cbTablesChange'#5'Style'#7#14'csDropDownList'#8'TabOrder'#2
+  +#0#0#0#6'TLabel'#6'Label3'#4'Left'#3'4'#1#6'Height'#2#18#3'Top'#2#10#5'Width'
+  +#2'S'#7'Caption'#6#11'Permissions'#11'ParentColor'#8#0#0#9'TCheckBox'#8'cxSe'
+  +'lect'#4'Left'#3'='#1#6'Height'#2#22#3'Top'#2'V'#5'Width'#2'A'#7'Caption'#6#6
+  +'Select'#8'TabOrder'#2#1#0#0#9'TCheckBox'#8'cxInsert'#4'Left'#3'>'#1#6'Heigh'
+  +'t'#2#22#3'Top'#3#138#0#5'Width'#2'?'#7'Caption'#6#6'Insert'#8'TabOrder'#2#2
+  +#0#0#9'TCheckBox'#8'cxUpdate'#4'Left'#3'='#1#6'Height'#2#22#3'Top'#3#183#0#5
+  +'Width'#2'J'#7'Caption'#6#6'Update'#8'TabOrder'#2#3#0#0#9'TCheckBox'#8'cxDel'
+  +'ete'#4'Left'#3'='#1#6'Height'#2#22#3'Top'#3#236#0#5'Width'#2'D'#7'Caption'#6
+  +#6'Delete'#8'TabOrder'#2#4#0#0#9'TCheckBox'#12'cxReferences'#4'Left'#3'>'#1#6
+  +'Height'#2#22#3'Top'#3#31#1#5'Width'#2'c'#7'Caption'#6#10'References'#8'TabO'
+  +'rder'#2#5#0#0#7'TBitBtn'#12'bbApplyTable'#4'Left'#2#6#6'Height'#2#30#3'Top'
+  +#3#31#1#5'Width'#2'K'#7'Caption'#6#5'Apply'#4'Kind'#7#4'bkOK'#7'OnClick'#7#17
+  +'bbApplyTableClick'#8'TabOrder'#2#6#0#0#9'TComboBox'#7'cbUsers'#4'Left'#2#18
+  +#6'Height'#2#29#3'Top'#2'"'#5'Width'#3#156#0#10'ItemHeight'#2#0#8'OnChange'#7
+  +#14'cbTablesChange'#8'TabOrder'#2#7#0#0#9'TCheckBox'#13'cxSelectGrant'#4'Lef'
+  +'t'#3'Y'#1#6'Height'#2#22#3'Top'#2'f'#5'Width'#2'a'#7'Caption'#6#10'With Gra'
+  +'nt'#8'TabOrder'#2#8#0#0#9'TCheckBox'#13'cxInsertGrant'#4'Left'#3'Y'#1#6'Hei'
+  +'ght'#2#22#3'Top'#3#154#0#5'Width'#2'a'#7'Caption'#6#10'With Grant'#8'TabOrd'
+  +'er'#2#9#0#0#9'TCheckBox'#13'cxUpdateGrant'#4'Left'#3'Y'#1#6'Height'#2#22#3
+  +'Top'#3#202#0#5'Width'#2'a'#7'Caption'#6#10'With Grant'#8'TabOrder'#2#10#0#0
+  +#9'TCheckBox'#13'cxDeleteGrant'#4'Left'#3'V'#1#6'Height'#2#22#3'Top'#3#253#0
+  +#5'Width'#2'a'#7'Caption'#6#10'With Grant'#8'TabOrder'#2#11#0#0#9'TCheckBox'
+  +#17'cxReferencesGrant'#4'Left'#3'Y'#1#6'Height'#2#22#3'Top'#3'1'#1#5'Width'#2
+  +'a'#7'Caption'#6#10'With Grant'#8'TabOrder'#2#12#0#0#9'TCheckBox'#5'cxAll'#4
+  +'Left'#3'>'#1#6'Height'#2#22#3'Top'#2'"'#5'Width'#2'-'#7'Caption'#6#3'All'#10
+  +'Font.Style'#11#6'fsBold'#0#10'ParentFont'#8#8'TabOrder'#2#13#0#0#9'TCheckBo'
+  +'x'#10'cxAllGrant'#4'Left'#3'Y'#1#6'Height'#2#22#3'Top'#2'1'#5'Width'#2'f'#7
+  +'Caption'#6#10'With Grant'#10'Font.Style'#11#6'fsBold'#0#10'ParentFont'#8#8
+  +'TabOrder'#2#14#0#0#0#9'TTabSheet'#12'tsProcedures'#7'Caption'#6#10'Procedur'
+  +'es'#12'ClientHeight'#3'N'#1#11'ClientWidth'#3#9#2#0#6'TLabel'#6'Label4'#4'L'
+  +'eft'#2#12#6'Height'#2#18#3'Top'#2#10#5'Width'#2'?'#7'Caption'#6#9'User/Role'
+  +#11'ParentColor'#8#0#0#9'TComboBox'#11'cbProcUsers'#4'Left'#2#18#6'Height'#2
+  +#29#3'Top'#2'"'#5'Width'#3#156#0#10'ItemHeight'#2#0#8'OnChange'#7#17'cbProcU'
+  +'sersChange'#8'TabOrder'#2#0#0#0#6'TLabel'#6'Label5'#4'Left'#3#230#0#6'Heigh'
+  +'t'#2#18#3'Top'#2#11#5'Width'#2'P'#7'Caption'#6#11'Permissions'#11'ParentCol'
+  +'or'#8#0#0#13'TCheckListBox'#13'clbProcedures'#4'Left'#3#246#0#6'Height'#3
+  +#236#0#3'Top'#2''''#5'Width'#3#211#0#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBo'
+  +'ttom'#0#10'ItemHeight'#2#0#7'OnClick'#7#18'clbProceduresClick'#7'OnKeyUp'#7
+  +#18'clbProceduresKeyUp'#8'TabOrder'#2#1#8'TopIndex'#2#255#0#0#7'TBitBtn'#11
+  +'bbApplyProc'#4'Left'#2#13#6'Height'#2#30#3'Top'#3#19#1#5'Width'#2'K'#7'Capt'
+  +'ion'#6#5'Apply'#4'Kind'#7#4'bkOK'#7'OnClick'#7#16'bbApplyProcClick'#8'TabOr'
+  +'der'#2#2#0#0#9'TCheckBox'#11'cxProcGrant'#4'Left'#3#246#0#6'Height'#2#22#3
+  +'Top'#3#31#1#5'Width'#2'^'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6
+  +#10'With Grant'#8'OnChange'#7#17'cxProcGrantChange'#8'TabOrder'#2#3#0#0#0#9
+  +'TTabSheet'#7'tsRoles'#7'Caption'#6#5'Roles'#12'ClientHeight'#3'N'#1#11'Clie'
+  +'ntWidth'#3#9#2#0#6'TLabel'#6'Label6'#4'Left'#2#12#6'Height'#2#18#3'Top'#2#10
+  +#5'Width'#2#31#7'Caption'#6#4'User'#11'ParentColor'#8#0#0#9'TComboBox'#11'cb'
+  +'RolesUser'#4'Left'#2#18#6'Height'#2#29#3'Top'#2'"'#5'Width'#3#156#0#10'Item'
+  +'Height'#2#0#8'OnChange'#7#17'cbRolesUserChange'#8'TabOrder'#2#0#0#0#6'TLabe'
+  +'l'#6'Label7'#4'Left'#3#230#0#6'Height'#2#18#3'Top'#2#11#5'Width'#2'P'#7'Cap'
+  +'tion'#6#11'Permissions'#11'ParentColor'#8#0#0#7'TBitBtn'#12'bbApplyRoles'#4
+  ,'Left'#2#12#6'Height'#2#30#3'Top'#3#27#1#5'Width'#2'K'#7'Caption'#6#5'Apply'
+  +#7'Default'#9#4'Kind'#7#4'bkOK'#7'OnClick'#7#17'bbApplyRolesClick'#8'TabOrde'
+  +'r'#2#1#0#0#13'TCheckListBox'#8'clbRoles'#4'Left'#3#246#0#6'Height'#3#241#0#3
+  +'Top'#2''''#5'Width'#3#211#0#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBottom'#0
+  +#10'ItemHeight'#2#0#7'OnClick'#7#13'clbRolesClick'#7'OnKeyUp'#7#13'clbRolesK'
+  +'eyUp'#8'TabOrder'#2#2#8'TopIndex'#2#255#0#0#7'TBitBtn'#7'BitBtn1'#4'Left'#2
+  +'c'#6'Height'#2#30#3'Top'#3#27#1#5'Width'#2'K'#7'Caption'#6#7'Refresh'#7'OnC'
+  +'lick'#7#12'BitBtn1Click'#8'TabOrder'#2#3#0#0#9'TCheckBox'#11'cxRoleGrant'#4
+  +'Left'#3#246#0#6'Height'#2#22#3'Top'#3''''#1#5'Width'#2'd'#7'Anchors'#11#6'a'
+  +'kLeft'#8'akBottom'#0#7'Caption'#6#10'With Admin'#8'OnChange'#7#17'cxRoleGra'
+  +'ntChange'#8'TabOrder'#2#4#0#0#0#0#0
+]);

+ 450 - 0
permissionmanage.pas

@@ -0,0 +1,450 @@
+unit PermissionManage;
+
+{$mode objfpc}
+
+interface
+
+uses
+  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+  ComCtrls, StdCtrls, Buttons, CheckLst;
+
+type
+
+  { TfmPermissionManage }
+
+  TfmPermissionManage = class(TForm)
+    bbApplyRoles: TBitBtn;
+    bbApplyTable: TBitBtn;
+    bbApplyProc: TBitBtn;
+    BitBtn1: TBitBtn;
+    cbRolesUser: TComboBox;
+    cbTables: TComboBox;
+    cbUsers: TComboBox;
+    cbProcUsers: TComboBox;
+    cxProcGrant: TCheckBox;
+    clbProcedures: TCheckListBox;
+    clbRoles: TCheckListBox;
+    cxRoleGrant: TCheckBox;
+    cxSelect: TCheckBox;
+    cxInsert: TCheckBox;
+    cxDelete: TCheckBox;
+    cxReferences: TCheckBox;
+    cxAll: TCheckBox;
+    cxSelectGrant: TCheckBox;
+    cxInsertGrant: TCheckBox;
+    cxAllGrant: TCheckBox;
+    cxUpdateGrant: TCheckBox;
+    cxDeleteGrant: TCheckBox;
+    cxReferencesGrant: TCheckBox;
+    cxUpdate: TCheckBox;
+    Label1: TLabel;
+    Label2: TLabel;
+    Label3: TLabel;
+    Label4: TLabel;
+    Label5: TLabel;
+    Label6: TLabel;
+    Label7: TLabel;
+    PageControl1: TPageControl;
+    tsRoles: TTabSheet;
+    tsProcedures: TTabSheet;
+    tsTables: TTabSheet;
+    procedure bbApplyProcClick(Sender: TObject);
+    procedure bbApplyRolesClick(Sender: TObject);
+    procedure bbApplyTableClick(Sender: TObject);
+    procedure BitBtn1Click(Sender: TObject);
+    procedure cbProcUsersChange(Sender: TObject);
+    procedure cbRolesUserChange(Sender: TObject);
+    procedure cbTablesChange(Sender: TObject);
+    procedure clbProceduresClick(Sender: TObject);
+    procedure clbProceduresKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure clbRolesClick(Sender: TObject);
+    procedure clbRolesKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
+    procedure cxProcGrantChange(Sender: TObject);
+    procedure cxRoleGrantChange(Sender: TObject);
+    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
+  private
+    fdbIndex: Integer;
+    ProcList: TStringList;
+    RoleList: TStringList;
+    ProcGrant: array of Boolean;
+    OrigProcGrant: array of Boolean;
+    RoleGrant: array of Boolean;
+    OrigRoleGrant: array of Boolean;
+    fOnCommitProcedure: TNotifyEvent;
+    procedure UpdatePermissions;
+    procedure UpdateProcPermissions;
+    procedure UpdateRolePermissions;
+    procedure ComposeTablePermissionSQL(OptionName: string; Grant, WithGrant: Boolean; var List: TStringList);
+  public
+    procedure Init(dbIndex: integer; ATableName, AUserName: string; UserType: Integer;
+      OnCommitProcedure: TNotifyEvent = nil);
+    { public declarations }
+  end;
+
+var
+  fmPermissionManage: TfmPermissionManage;
+
+implementation
+
+{ TfmPermissionManage }
+
+uses SysTables, main;
+
+procedure TfmPermissionManage.FormClose(Sender: TObject; var CloseAction: TCloseAction);
+begin
+  ProcList.Free;
+  RoleList.Free;
+  CloseAction:= caFree;
+  SetLength(ProcGrant, 0);
+  SetLength(OrigProcGrant, 0);
+end;
+
+procedure TfmPermissionManage.UpdatePermissions;
+var
+  Permissions: string;
+  ObjType: Integer;
+begin
+  if (cbUsers.Text <> '') and (cbTables.Text <> '') then
+  begin;
+    Permissions := dmSysTables.GetObjectUserPermission(fdbIndex, cbTables.Text, cbUsers.Text, ObjType);
+    cxAll.Checked:= False;
+    cxAllGrant.Checked:= False;
+
+    cxSelect.Checked := Pos('S', Permissions) > 0;
+    cxInsert.Checked := Pos('I', Permissions) > 0;
+    cxUpdate.Checked := Pos('U', Permissions) > 0;
+    cxDelete.Checked := Pos('D', Permissions) > 0;
+    cxReferences.Checked:= Pos('R', Permissions) > 0;
+
+    cxSelectGrant.Checked:= Pos('SG', Permissions) > 0;;
+    cxInsertGrant.Checked:= Pos('IG', Permissions) > 0;;
+    cxUpdateGrant.Checked:= Pos('UG', Permissions) > 0;;
+    cxDeleteGrant.Checked:= Pos('DG', Permissions) > 0;;
+    cxReferencesGrant.Checked:= Pos('RG', Permissions) > 0;;
+  end;
+
+end;
+
+procedure TfmPermissionManage.UpdateProcPermissions;
+var
+  i: Integer;
+  Index: Integer;
+  ObjName: string;
+  ProcIndex: Integer;
+begin
+  clbProcedures.Clear;
+  if cbProcUsers.Text <> '' then
+  begin
+    clbProcedures.Items.CommaText:= dmSysTables.GetDBObjectsForPermissions(fdbIndex, 5);
+    ProcList:= TStringList.Create;
+    ProcList.CommaText:= dmSysTables.GetUserObjects(fdbIndex, cbProcUsers.Text, 5);
+    SetLength(ProcGrant, clbProcedures.Count);
+    SetLength(OrigProcGrant, clbProcedures.Count);
+    for i:= 0 to ProcList.Count - 1 do
+    begin
+      ObjName:= ProcList[i];
+      if Pos('<G>', ObjName) = 1 then
+      begin
+        Delete(ObjName, 1, 3);
+        ProcList[i]:= ObjName;
+        ProcIndex:= clbProcedures.Items.IndexOf(ObjName);
+        if ProcIndex <> -1 then
+        begin
+          ProcGrant[ProcIndex]:= True;
+          OrigProcGrant[ProcIndex]:= True;
+        end;
+      end;
+
+      Index:= clbProcedures.Items.IndexOf(ObjName);
+      if Index <> -1 then
+        clbProcedures.Checked[Index]:= True;
+    end;
+
+  end;
+end;
+
+procedure TfmPermissionManage.UpdateRolePermissions;
+var
+  i: Integer;
+  Index: Integer;
+  RoleIndex: Integer;
+  Count: Integer;
+  ObjName: string;
+begin
+  clbRoles.Clear;
+  if cbRolesUser.Text <> '' then
+  begin
+    clbRoles.Items.CommaText:= dmSysTables.GetDBObjectNames(fdbIndex, 9, Count);
+    RoleList:= TStringList.Create;
+    RoleList.CommaText:= dmSysTables.GetUserObjects(fdbIndex, cbRolesUser.Text, 13);
+    SetLength(RoleGrant, clbRoles.Count);
+    SetLength(OrigRoleGrant, clbRoles.Count);
+    for i:= 0 to RoleList.Count - 1 do
+    begin
+      ObjName:= RoleList[i];
+      if Pos('<G>', ObjName) = 1 then
+      begin
+        Delete(ObjName, 1, 3);
+        RoleList[i]:= ObjName;
+        RoleIndex:= clbRoles.Items.IndexOf(ObjName);
+        if RoleIndex <> -1 then
+        begin
+          RoleGrant[RoleIndex]:= True;
+          OrigRoleGrant[RoleIndex]:= True;
+        end;
+      end;
+      Index:= clbRoles.Items.IndexOf(RoleList[i]);
+      if Index <> -1 then
+        clbRoles.Checked[Index]:= True;
+    end;
+
+  end;
+
+end;
+
+procedure TfmPermissionManage.ComposeTablePermissionSQL(OptionName: string; Grant, WithGrant: Boolean;
+  var List: TStringList);
+var
+  Line: string;
+  ToFrom: string;
+  Command: string;
+begin
+  if Grant then
+  begin
+    ToFrom:= ' to ';
+    Command:= 'grant ';
+  end
+  else
+  begin
+    ToFrom:= ' from ';
+    Command:= 'revoke ';
+  end;
+
+  Line:= Command +  OptionName + ' on ' + cbTables.Text + ToFrom + cbUsers.Text;
+  if Grant and WithGrant then
+      Line:= Line + ' with grant option';
+
+  Line:= Line + ';';
+
+  List.Add(Line);
+end;
+
+procedure TfmPermissionManage.bbApplyTableClick(Sender: TObject);
+var
+  List: TStringList;
+begin
+  if (cbUsers.Text <> '') and (cbTables.ItemIndex <> -1) then
+  begin
+    List:= TStringList.Create;
+
+    if cxAll.Checked then
+      ComposeTablePermissionSQL('All', cxAll.Checked, cxAllGrant.Checked, List)
+    else
+    begin
+      ComposeTablePermissionSQL('Select', cxSelect.Checked, cxSelectGrant.Checked, List);
+      ComposeTablePermissionSQL('Insert', cxInsert.Checked, cxInsertGrant.Checked, List);
+      ComposeTablePermissionSQL('Update', cxUpdate.Checked, cxUpdateGrant.Checked, List);
+      ComposeTablePermissionSQL('Delete', cxDelete.Checked, cxDeleteGrant.Checked, List);
+      ComposeTablePermissionSQL('References', cxReferences.Checked, cxReferencesGrant.Checked, List);
+    end;
+
+    fmMain.ShowCompleteQueryWindow(fdbIndex, 'Edit Permission for: ' + cbTables.Text, List.Text, fOnCommitProcedure);
+    List.Free;
+    Close;
+  end
+  else
+    ShowMessage('You should enter user/role and a table');
+end;
+
+procedure TfmPermissionManage.BitBtn1Click(Sender: TObject);
+begin
+  UpdateRolePermissions;
+end;
+
+procedure TfmPermissionManage.bbApplyProcClick(Sender: TObject);
+var
+  List: TStringList;
+  i: Integer;
+  Line: string;
+begin
+  if Trim(cbProcUsers.Text) <> '' then
+  begin
+    List:= TStringList.Create;
+    For i:= 0 to clbProcedures.Items.Count - 1 do
+    begin
+      if clbProcedures.Checked[i] and
+        ((ProcList.IndexOf(clbProcedures.Items[i]) = -1) or (ProcGrant[i] and (not OrigProcGrant[i]))) then // Grant this proc
+        begin
+          Line:= 'grant execute on procedure ' + clbProcedures.Items[i] + ' to ' + cbProcUsers.Text;
+          if ProcGrant[i] then
+            Line:= Line + ' with grant option';
+          List.Add(Line + ';');
+
+        end;
+
+      if (not clbProcedures.Checked[i]) and (ProcList.IndexOf(clbProcedures.Items[i]) <> -1) then // Remove this proc
+        List.Add('Revoke execute on procedure ' + clbProcedures.Items[i] + ' from ' + cbProcUsers.Text + ';');
+    end;
+    if List.Count > 0 then
+    begin
+      fmMain.ShowCompleteQueryWindow(fdbIndex, 'Edit Permission for: ' + cbProcUsers.Text, List.Text, fOnCommitProcedure);
+      List.Free;
+      Close;
+    end
+    else
+      ShowMessage('There is no change');
+  end;
+end;
+
+procedure TfmPermissionManage.bbApplyRolesClick(Sender: TObject);
+var
+  List: TStringList;
+  i: Integer;
+  Line: string;
+begin
+  if Trim(cbRolesUser.Text) <> '' then
+  begin
+    List:= TStringList.Create;
+    For i:= 0 to clbRoles.Items.Count - 1 do
+    begin
+      if clbRoles.Checked[i] and
+        ((RoleList.IndexOf(clbRoles.Items[i]) = -1) or (RoleGrant[i] and (not OrigRoleGrant[i]))) then // Grant this Role
+      begin
+        Line:= 'grant ' + clbRoles.Items[i] + ' to ' + cbRolesUser.Text;
+        if RoleGrant[i] then
+          Line:= Line + ' with admin option';
+        List.Add(Line + ';');
+      end;
+
+      if (not clbRoles.Checked[i]) and (RoleList.IndexOf(clbRoles.Items[i]) <> -1) then // Remove this Role
+        List.Add('Revoke ' + clbRoles.Items[i] + ' from ' + cbRolesUser.Text + ';');
+    end;
+
+    if List.Count > 0 then
+    begin
+      fmMain.ShowCompleteQueryWindow(fdbIndex, 'Edit Permission for: ' + cbRolesUser.Text, List.Text, fOnCommitProcedure);
+      List.Free;
+      Close;
+    end
+    else
+      ShowMessage('There is no change');
+  end;
+
+end;
+
+procedure TfmPermissionManage.cbProcUsersChange(Sender: TObject);
+begin
+  UPdateProcPermissions;
+end;
+
+procedure TfmPermissionManage.cbRolesUserChange(Sender: TObject);
+begin
+  UpdateRolePermissions;
+end;
+
+procedure TfmPermissionManage.cbTablesChange(Sender: TObject);
+begin
+  UpdatePermissions;
+end;
+
+procedure TfmPermissionManage.clbProceduresClick(Sender: TObject);
+var
+  Index: Integer;
+  ProcIndex: Integer;
+begin
+  Index:= clbProcedures.ItemIndex;
+  if Index <> -1 then
+  begin
+    cxProcGrant.Checked:= ProcGrant[Index];
+    cxProcGrant.Caption:= 'With Grant for ' + clbProcedures.Items[Index];
+  end;
+end;
+
+procedure TfmPermissionManage.clbProceduresKeyUp(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  clbProceduresClick(nil);
+end;
+
+procedure TfmPermissionManage.clbRolesClick(Sender: TObject);
+var
+  Index: Integer;
+  RoleIndex: Integer;
+begin
+  Index:= clbRoles.ItemIndex;
+  if Index <> -1 then
+  begin
+    cxRoleGrant.Checked:= RoleGrant[Index];
+    cxRoleGrant.Caption:= 'With Admin for ' + clbRoles.Items[Index];
+  end;
+end;
+
+procedure TfmPermissionManage.clbRolesKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  clbRolesClick(nil);
+end;
+
+procedure TfmPermissionManage.cxProcGrantChange(Sender: TObject);
+var
+  Index, ProcIndex: Integer;
+begin
+  Index:= clbProcedures.ItemIndex;
+  if Index <> -1 then
+    ProcGrant[Index]:= cxProcGrant.Checked;
+end;
+
+procedure TfmPermissionManage.cxRoleGrantChange(Sender: TObject);
+var
+  Index, RoleIndex: Integer;
+begin
+  Index:= clbRoles.ItemIndex;
+  if Index <> -1 then
+    RoleGrant[Index]:= cxRoleGrant.Checked;
+end;
+
+procedure TfmPermissionManage.Init(dbIndex: integer; ATableName, AUserName: string; UserType: Integer;
+  OnCommitProcedure: TNotifyEvent = nil);
+var
+  Count: integer;
+  StoredProcs: string;
+begin
+  fOnCommitProcedure:= OnCommitProcedure;
+  ProcList:= TStringList.Create;
+  RoleList:= TStringList.Create;
+
+  PageControl1.ActivePageIndex:= 0;
+  fdbIndex := dbIndex;
+  cbUsers.Text := AUserName;
+  cbTables.Items.CommaText:= dmSysTables.GetDBObjectNames(dbIndex, 1, Count);
+  cbTables.Text:= ATableName;
+  cbProcUsers.Text:= AUserName;
+
+  cbUsers.Items.CommaText:= dmSysTables.GetDBObjectNames(dbIndex, 9, Count) + ',' +
+    dmSysTables.GetDBObjectNames(dbIndex, 11, Count);
+  cbProcUsers.Items.CommaText:= cbUsers.Items.CommaText;
+
+  // Update table permissions
+  UpdatePermissions;
+
+  // stored procedures
+  UPdateProcPermissions;
+
+  // Roles
+  clbRoles.Clear;
+  cbRolesUser.Clear;
+
+  if UserType = 1 then
+  begin
+    cbRolesUser.Text:= AUserName;
+    UpdateRolePermissions;
+  end;
+  cbRolesUser.Items.CommaText:= dmSysTables.GetDBObjectNames(dbIndex, 11, Count);
+end;
+
+initialization
+  {$I permissionmanage.lrs}
+
+end.
+

+ 2431 - 0
querywindow.lfm

@@ -0,0 +1,2431 @@
+object fmQueryWindow: TfmQueryWindow
+  Left = 801
+  Height = 601
+  Top = 166
+  Width = 720
+  ActiveControl = Panel1
+  Caption = 'fmQueryWindow'
+  ClientHeight = 599
+  ClientWidth = 720
+  Color = clCream
+  Menu = MainMenu1
+  OnClose = FormClose
+  OnShow = FormShow
+  PopupMenu = pmTab
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object Panel1: TPanel
+    Left = 0
+    Height = 31
+    Top = 0
+    Width = 720
+    Align = alTop
+    ClientHeight = 27
+    ClientWidth = 716
+    TabOrder = 1
+    object bbClose: TBitBtn
+      Left = 687
+      Height = 22
+      Top = 1
+      Width = 27
+      Anchors = [akTop, akRight]
+      Caption = 'x'
+      Color = 16249563
+      OnClick = lmCloseTabClick
+      TabOrder = 0
+    end
+    object ToolBar1: TToolBar
+      Left = 1
+      Height = 29
+      Top = 1
+      Width = 684
+      Align = alNone
+      Anchors = [akTop, akLeft, akRight]
+      Caption = 'ToolBar1'
+      Images = imTools
+      TabOrder = 1
+      object tbNew: TToolButton
+        Left = 1
+        Hint = 'Open New SQL Query Window'
+        Top = 2
+        ImageIndex = 0
+        OnClick = tbNewClick
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object tbOpen: TToolButton
+        Left = 37
+        Hint = 'Open SQL file'
+        Top = 2
+        Caption = 'tbOpen'
+        ImageIndex = 1
+        OnClick = tbOpenClick
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object tbSave: TToolButton
+        Left = 73
+        Hint = 'Save SQL to file'
+        Top = 2
+        Caption = 'tbSave'
+        ImageIndex = 2
+        OnClick = tbSaveClick
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object ToolButton1: TToolButton
+        Left = 109
+        Top = 2
+        Width = 10
+        Caption = 'ToolButton1'
+        Style = tbsSeparator
+      end
+      object tbRun: TToolButton
+        Left = 119
+        Hint = 'Run Query (F5)'
+        Top = 2
+        ImageIndex = 3
+        OnClick = tbRunClick
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object tbCommit: TToolButton
+        Left = 165
+        Hint = 'Commit Transaction'
+        Top = 2
+        Caption = 'tbCommit'
+        ImageIndex = 4
+        OnClick = tbCommitClick
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object tbRollback: TToolButton
+        Left = 201
+        Hint = 'Rollback Transaction'
+        Top = 2
+        Caption = 'tbRollback'
+        ImageIndex = 5
+        OnClick = tbRollbackClick
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object ToolButton2: TToolButton
+        Left = 155
+        Top = 2
+        Width = 10
+        Caption = 'ToolButton2'
+        Style = tbsSeparator
+      end
+      object ToolButton3: TToolButton
+        Left = 237
+        Top = 2
+        Width = 10
+        Caption = 'ToolButton3'
+        Style = tbsSeparator
+      end
+      object tbHistory: TToolButton
+        Left = 247
+        Hint = 'SQL History'
+        Top = 2
+        Caption = 'tbHistory'
+        ImageIndex = 6
+        OnClick = tbHistoryClick
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object ToolButton5: TToolButton
+        Left = 283
+        Top = 2
+        Width = 5
+        Caption = 'ToolButton5'
+        Style = tbsDivider
+      end
+      object tbMenu: TToolButton
+        Left = 288
+        Hint = 'Menu'
+        Top = 2
+        Caption = 'tbMenu'
+        ImageIndex = 7
+        OnClick = tbMenuClick
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object ToolButton6: TToolButton
+        Left = 324
+        Top = 2
+        Width = 5
+        Caption = 'ToolButton6'
+        Style = tbsDivider
+      end
+    end
+  end
+  object Splitter1: TSplitter
+    Cursor = crVSplit
+    Left = 0
+    Height = 12
+    Top = 301
+    Width = 720
+    Align = alTop
+    ResizeAnchor = akTop
+  end
+  object Panel2: TPanel
+    Left = 0
+    Height = 286
+    Top = 313
+    Width = 720
+    Align = alClient
+    ClientHeight = 282
+    ClientWidth = 716
+    TabOrder = 3
+    object PageControl1: TPageControl
+      Left = 1
+      Height = 280
+      Top = 1
+      Width = 714
+      Align = alClient
+      Images = imTabs
+      TabOrder = 0
+    end
+  end
+  inline meQuery: TSynEdit
+    Left = 0
+    Height = 270
+    Top = 31
+    Width = 720
+    Align = alTop
+    BlockIndent = 3
+    Font.Height = -16
+    Font.Name = 'Courier New'
+    Font.Pitch = fpFixed
+    Font.Quality = fqNonAntialiased
+    ParentColor = False
+    ParentFont = False
+    PopupMenu = pmMemo
+    TabOrder = 0
+    BorderStyle = bsNone
+    Gutter.Color = 16183798
+    Gutter.Width = 61
+    Gutter.MouseActions = <    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbLeft
+        ClickCount = ccAny
+        ClickDir = cdDown
+        Command = 13
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbRight
+        ClickCount = ccSingle
+        ClickDir = cdUp
+        Command = 12
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end>
+    RightGutter.Width = 0
+    RightGutter.MouseActions = <    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbLeft
+        ClickCount = ccAny
+        ClickDir = cdDown
+        Command = 13
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbRight
+        ClickCount = ccSingle
+        ClickDir = cdUp
+        Command = 12
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end>
+    Highlighter = SynSQLSyn1
+    Keystrokes = <    
+      item
+        Command = ecUp
+        ShortCut = 38
+      end    
+      item
+        Command = ecSelUp
+        ShortCut = 8230
+      end    
+      item
+        Command = ecScrollUp
+        ShortCut = 16422
+      end    
+      item
+        Command = ecDown
+        ShortCut = 40
+      end    
+      item
+        Command = ecSelDown
+        ShortCut = 8232
+      end    
+      item
+        Command = ecScrollDown
+        ShortCut = 16424
+      end    
+      item
+        Command = ecLeft
+        ShortCut = 37
+      end    
+      item
+        Command = ecSelLeft
+        ShortCut = 8229
+      end    
+      item
+        Command = ecWordLeft
+        ShortCut = 16421
+      end    
+      item
+        Command = ecSelWordLeft
+        ShortCut = 24613
+      end    
+      item
+        Command = ecRight
+        ShortCut = 39
+      end    
+      item
+        Command = ecSelRight
+        ShortCut = 8231
+      end    
+      item
+        Command = ecWordRight
+        ShortCut = 16423
+      end    
+      item
+        Command = ecSelWordRight
+        ShortCut = 24615
+      end    
+      item
+        Command = ecPageDown
+        ShortCut = 34
+      end    
+      item
+        Command = ecSelPageDown
+        ShortCut = 8226
+      end    
+      item
+        Command = ecPageBottom
+        ShortCut = 16418
+      end    
+      item
+        Command = ecSelPageBottom
+        ShortCut = 24610
+      end    
+      item
+        Command = ecPageUp
+        ShortCut = 33
+      end    
+      item
+        Command = ecSelPageUp
+        ShortCut = 8225
+      end    
+      item
+        Command = ecPageTop
+        ShortCut = 16417
+      end    
+      item
+        Command = ecSelPageTop
+        ShortCut = 24609
+      end    
+      item
+        Command = ecLineStart
+        ShortCut = 36
+      end    
+      item
+        Command = ecSelLineStart
+        ShortCut = 8228
+      end    
+      item
+        Command = ecEditorTop
+        ShortCut = 16420
+      end    
+      item
+        Command = ecSelEditorTop
+        ShortCut = 24612
+      end    
+      item
+        Command = ecLineEnd
+        ShortCut = 35
+      end    
+      item
+        Command = ecSelLineEnd
+        ShortCut = 8227
+      end    
+      item
+        Command = ecEditorBottom
+        ShortCut = 16419
+      end    
+      item
+        Command = ecSelEditorBottom
+        ShortCut = 24611
+      end    
+      item
+        Command = ecToggleMode
+        ShortCut = 45
+      end    
+      item
+        Command = ecCopy
+        ShortCut = 16429
+      end    
+      item
+        Command = ecPaste
+        ShortCut = 8237
+      end    
+      item
+        Command = ecDeleteChar
+        ShortCut = 46
+      end    
+      item
+        Command = ecCut
+        ShortCut = 8238
+      end    
+      item
+        Command = ecDeleteLastChar
+        ShortCut = 8
+      end    
+      item
+        Command = ecDeleteLastChar
+        ShortCut = 8200
+      end    
+      item
+        Command = ecDeleteLastWord
+        ShortCut = 16392
+      end    
+      item
+        Command = ecUndo
+        ShortCut = 32776
+      end    
+      item
+        Command = ecRedo
+        ShortCut = 40968
+      end    
+      item
+        Command = ecLineBreak
+        ShortCut = 13
+      end    
+      item
+        Command = ecSelectAll
+        ShortCut = 16449
+      end    
+      item
+        Command = ecCopy
+        ShortCut = 16451
+      end    
+      item
+        Command = ecBlockIndent
+        ShortCut = 24649
+      end    
+      item
+        Command = ecLineBreak
+        ShortCut = 16461
+      end    
+      item
+        Command = ecInsertLine
+        ShortCut = 16462
+      end    
+      item
+        Command = ecDeleteWord
+        ShortCut = 16468
+      end    
+      item
+        Command = ecBlockUnindent
+        ShortCut = 24661
+      end    
+      item
+        Command = ecPaste
+        ShortCut = 16470
+      end    
+      item
+        Command = ecCut
+        ShortCut = 16472
+      end    
+      item
+        Command = ecDeleteLine
+        ShortCut = 16473
+      end    
+      item
+        Command = ecDeleteEOL
+        ShortCut = 24665
+      end    
+      item
+        Command = ecUndo
+        ShortCut = 16474
+      end    
+      item
+        Command = ecRedo
+        ShortCut = 24666
+      end    
+      item
+        Command = ecGotoMarker0
+        ShortCut = 16432
+      end    
+      item
+        Command = ecGotoMarker1
+        ShortCut = 16433
+      end    
+      item
+        Command = ecGotoMarker2
+        ShortCut = 16434
+      end    
+      item
+        Command = ecGotoMarker3
+        ShortCut = 16435
+      end    
+      item
+        Command = ecGotoMarker4
+        ShortCut = 16436
+      end    
+      item
+        Command = ecGotoMarker5
+        ShortCut = 16437
+      end    
+      item
+        Command = ecGotoMarker6
+        ShortCut = 16438
+      end    
+      item
+        Command = ecGotoMarker7
+        ShortCut = 16439
+      end    
+      item
+        Command = ecGotoMarker8
+        ShortCut = 16440
+      end    
+      item
+        Command = ecGotoMarker9
+        ShortCut = 16441
+      end    
+      item
+        Command = ecSetMarker0
+        ShortCut = 24624
+      end    
+      item
+        Command = ecSetMarker1
+        ShortCut = 24625
+      end    
+      item
+        Command = ecSetMarker2
+        ShortCut = 24626
+      end    
+      item
+        Command = ecSetMarker3
+        ShortCut = 24627
+      end    
+      item
+        Command = ecSetMarker4
+        ShortCut = 24628
+      end    
+      item
+        Command = ecSetMarker5
+        ShortCut = 24629
+      end    
+      item
+        Command = ecSetMarker6
+        ShortCut = 24630
+      end    
+      item
+        Command = ecSetMarker7
+        ShortCut = 24631
+      end    
+      item
+        Command = ecSetMarker8
+        ShortCut = 24632
+      end    
+      item
+        Command = ecSetMarker9
+        ShortCut = 24633
+      end    
+      item
+        Command = EcFoldLevel1
+        ShortCut = 41009
+      end    
+      item
+        Command = EcFoldLevel2
+        ShortCut = 41010
+      end    
+      item
+        Command = EcFoldLevel1
+        ShortCut = 41011
+      end    
+      item
+        Command = EcFoldLevel1
+        ShortCut = 41012
+      end    
+      item
+        Command = EcFoldLevel1
+        ShortCut = 41013
+      end    
+      item
+        Command = EcFoldLevel6
+        ShortCut = 41014
+      end    
+      item
+        Command = EcFoldLevel7
+        ShortCut = 41015
+      end    
+      item
+        Command = EcFoldLevel8
+        ShortCut = 41016
+      end    
+      item
+        Command = EcFoldLevel9
+        ShortCut = 41017
+      end    
+      item
+        Command = EcFoldLevel0
+        ShortCut = 41008
+      end    
+      item
+        Command = EcFoldCurrent
+        ShortCut = 41005
+      end    
+      item
+        Command = EcUnFoldCurrent
+        ShortCut = 41003
+      end    
+      item
+        Command = EcToggleMarkupWord
+        ShortCut = 32845
+      end    
+      item
+        Command = ecNormalSelect
+        ShortCut = 24654
+      end    
+      item
+        Command = ecColumnSelect
+        ShortCut = 24643
+      end    
+      item
+        Command = ecLineSelect
+        ShortCut = 24652
+      end    
+      item
+        Command = ecTab
+        ShortCut = 9
+      end    
+      item
+        Command = ecShiftTab
+        ShortCut = 8201
+      end    
+      item
+        Command = ecMatchBracket
+        ShortCut = 24642
+      end    
+      item
+        Command = ecColSelUp
+        ShortCut = 40998
+      end    
+      item
+        Command = ecColSelDown
+        ShortCut = 41000
+      end    
+      item
+        Command = ecColSelLeft
+        ShortCut = 40997
+      end    
+      item
+        Command = ecColSelRight
+        ShortCut = 40999
+      end    
+      item
+        Command = ecColSelPageDown
+        ShortCut = 40994
+      end    
+      item
+        Command = ecColSelPageBottom
+        ShortCut = 57378
+      end    
+      item
+        Command = ecColSelPageUp
+        ShortCut = 40993
+      end    
+      item
+        Command = ecColSelPageTop
+        ShortCut = 57377
+      end    
+      item
+        Command = ecColSelLineStart
+        ShortCut = 40996
+      end    
+      item
+        Command = ecColSelLineEnd
+        ShortCut = 40995
+      end    
+      item
+        Command = ecColSelEditorTop
+        ShortCut = 57380
+      end    
+      item
+        Command = ecColSelEditorBottom
+        ShortCut = 57379
+      end>
+    MouseActions = <    
+      item
+        Shift = []
+        ShiftMask = [ssShift, ssAlt]
+        Button = mbLeft
+        ClickCount = ccSingle
+        ClickDir = cdDown
+        Command = 1
+        MoveCaret = True
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = [ssShift]
+        ShiftMask = [ssShift, ssAlt]
+        Button = mbLeft
+        ClickCount = ccSingle
+        ClickDir = cdDown
+        Command = 1
+        MoveCaret = True
+        Option = 1
+        Priority = 0
+      end    
+      item
+        Shift = [ssAlt]
+        ShiftMask = [ssShift, ssAlt]
+        Button = mbLeft
+        ClickCount = ccSingle
+        ClickDir = cdDown
+        Command = 3
+        MoveCaret = True
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = [ssShift, ssAlt]
+        ShiftMask = [ssShift, ssAlt]
+        Button = mbLeft
+        ClickCount = ccSingle
+        ClickDir = cdDown
+        Command = 3
+        MoveCaret = True
+        Option = 1
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbRight
+        ClickCount = ccSingle
+        ClickDir = cdUp
+        Command = 12
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbLeft
+        ClickCount = ccDouble
+        ClickDir = cdDown
+        Command = 6
+        MoveCaret = True
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbLeft
+        ClickCount = ccTriple
+        ClickDir = cdDown
+        Command = 7
+        MoveCaret = True
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbLeft
+        ClickCount = ccQuad
+        ClickDir = cdDown
+        Command = 8
+        MoveCaret = True
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbMiddle
+        ClickCount = ccSingle
+        ClickDir = cdDown
+        Command = 10
+        MoveCaret = True
+        Option = 0
+        Priority = 0
+      end    
+      item
+        Shift = [ssCtrl]
+        ShiftMask = [ssShift, ssAlt, ssCtrl]
+        Button = mbLeft
+        ClickCount = ccSingle
+        ClickDir = cdUp
+        Command = 11
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end>
+    MouseSelActions = <    
+      item
+        Shift = []
+        ShiftMask = []
+        Button = mbLeft
+        ClickCount = ccSingle
+        ClickDir = cdDown
+        Command = 9
+        MoveCaret = False
+        Option = 0
+        Priority = 0
+      end>
+    RightEdge = 120
+    BracketHighlightStyle = sbhsBoth
+    inline TSynGutterPartList
+      object TSynGutterMarks
+        Width = 24
+      end
+      object TSynGutterLineNumber
+        Width = 21
+        MouseActions = <>
+        MarkupInfo.Background = 16710387
+        MarkupInfo.Foreground = clNone
+        DigitCount = 2
+        ShowOnlyLineNumbersMultiplesOf = 1
+        ZeroStart = False
+        LeadingZeros = False
+      end
+      object TSynGutterChanges
+        Width = 4
+        ModifiedColor = 59900
+        SavedColor = clGreen
+      end
+      object TSynGutterSeparator
+        Width = 2
+      end
+      object TSynGutterCodeFolding
+        MouseActions = <        
+          item
+            Shift = []
+            ShiftMask = []
+            Button = mbRight
+            ClickCount = ccSingle
+            ClickDir = cdUp
+            Command = 16
+            MoveCaret = False
+            Option = 0
+            Priority = 0
+          end        
+          item
+            Shift = []
+            ShiftMask = [ssShift]
+            Button = mbMiddle
+            ClickCount = ccAny
+            ClickDir = cdDown
+            Command = 14
+            MoveCaret = False
+            Option = 0
+            Priority = 0
+          end        
+          item
+            Shift = [ssShift]
+            ShiftMask = [ssShift]
+            Button = mbMiddle
+            ClickCount = ccAny
+            ClickDir = cdDown
+            Command = 14
+            MoveCaret = False
+            Option = 1
+            Priority = 0
+          end        
+          item
+            Shift = []
+            ShiftMask = []
+            Button = mbLeft
+            ClickCount = ccAny
+            ClickDir = cdDown
+            Command = 0
+            MoveCaret = False
+            Option = 0
+            Priority = 0
+          end>
+        MarkupInfo.Background = clNone
+        MarkupInfo.Foreground = clGray
+        MouseActionsExpanded = <        
+          item
+            Shift = []
+            ShiftMask = []
+            Button = mbLeft
+            ClickCount = ccAny
+            ClickDir = cdDown
+            Command = 14
+            MoveCaret = False
+            Option = 0
+            Priority = 0
+          end>
+        MouseActionsCollapsed = <        
+          item
+            Shift = [ssCtrl]
+            ShiftMask = [ssCtrl]
+            Button = mbLeft
+            ClickCount = ccAny
+            ClickDir = cdDown
+            Command = 15
+            MoveCaret = False
+            Option = 0
+            Priority = 0
+          end        
+          item
+            Shift = []
+            ShiftMask = [ssCtrl]
+            Button = mbLeft
+            ClickCount = ccAny
+            ClickDir = cdDown
+            Command = 15
+            MoveCaret = False
+            Option = 1
+            Priority = 0
+          end>
+      end
+    end
+  end
+  object OpenDialog1: TOpenDialog
+    Width = 907
+    Height = 640
+    DefaultExt = '.sql'
+    Filter = 'SQL Files|*.sql|All Files|*.*'
+    left = 222
+    top = 134
+  end
+  object SaveDialog1: TSaveDialog
+    Options = [ofOverwritePrompt, ofEnableSizing, ofViewDetail]
+    left = 222
+    top = 208
+  end
+  object SynSQLSyn1: TSynSQLSyn
+    DefaultFilter = 'SQL Files (*.sql)|*.sql'
+    Enabled = False
+    CommentAttri.Foreground = clTeal
+    CommentAttri.FrameEdges = sfeAround
+    DataTypeAttri.FrameEdges = sfeAround
+    DefaultPackageAttri.FrameEdges = sfeAround
+    ExceptionAttri.FrameEdges = sfeAround
+    FunctionAttri.FrameEdges = sfeAround
+    IdentifierAttri.Foreground = 16718385
+    IdentifierAttri.FrameEdges = sfeAround
+    KeyAttri.FrameEdges = sfeAround
+    NumberAttri.Foreground = 3421238
+    NumberAttri.FrameEdges = sfeAround
+    PLSQLAttri.FrameEdges = sfeAround
+    SpaceAttri.FrameEdges = sfeAround
+    SQLPlusAttri.FrameEdges = sfeAround
+    StringAttri.Foreground = 1052833
+    StringAttri.FrameEdges = sfeAround
+    SymbolAttri.Foreground = 526434
+    SymbolAttri.FrameEdges = sfeAround
+    TableNameAttri.Foreground = clNavy
+    TableNameAttri.FrameEdges = sfeAround
+    TableNameAttri.Style = [fsBold]
+    VariableAttri.FrameEdges = sfeAround
+    SQLDialect = sqlSybase
+    left = 432
+    top = 8
+  end
+  object pmMemo: TPopupMenu
+    left = 105
+    top = 173
+    object lmUndo: TMenuItem
+      Caption = 'Undo'
+      OnClick = lmUndoClick
+    end
+    object lmRedo: TMenuItem
+      Caption = 'Redo'
+      OnClick = lmRedoClick
+    end
+    object MenuItem1: TMenuItem
+      Caption = '-'
+    end
+    object lmCopy: TMenuItem
+      Caption = 'Copy'
+      ShortCut = 16451
+      OnClick = lmCopyClick
+    end
+    object lmCut: TMenuItem
+      Caption = 'Cut'
+      ShortCut = 16472
+      OnClick = lmCutClick
+    end
+    object lmPaste: TMenuItem
+      Caption = 'Paste'
+      ShortCut = 16470
+      OnClick = lmPasteClick
+    end
+    object lmSelectAll: TMenuItem
+      Caption = 'Select All'
+      ShortCut = 16449
+      OnClick = lmSelectAllClick
+    end
+    object MenuItem2: TMenuItem
+      Caption = '-'
+    end
+    object lmFind: TMenuItem
+      Caption = 'Find'
+      OnClick = lmFindClick
+    end
+    object lmFindAgain: TMenuItem
+      Caption = 'Find Again'
+      OnClick = lmFindAgainClick
+    end
+  end
+  object FindDialog1: TFindDialog
+    OnFind = FindDialog1Find
+    left = 285
+    top = 77
+  end
+  object pmTab: TPopupMenu
+    left = 410
+    top = 238
+    object lmExport: TMenuItem
+      Caption = 'Export Result as'
+      object lmCommaDelemited: TMenuItem
+        Caption = 'Comma Delemited'
+        OnClick = lmCommaDelemitedClick
+      end
+      object lmHTML: TMenuItem
+        Caption = 'HTML Table'
+        OnClick = lmHTMLClick
+      end
+    end
+    object MenuItem5: TMenuItem
+      Caption = '-'
+    end
+    object lmRun: TMenuItem
+      Caption = 'Run Query (Auto)'
+      ShortCut = 116
+      OnClick = lmRunClick
+    end
+    object lmRunSelect: TMenuItem
+      Caption = 'Run Query (As Select)'
+      OnClick = lmRunSelectClick
+    end
+    object lmRunExec: TMenuItem
+      Caption = 'Run Query (As Execute)'
+      OnClick = lmRunExecClick
+    end
+    object lmRunScript: TMenuItem
+      Caption = 'Run Query (As Script)'
+      OnClick = lmRunScriptClick
+    end
+    object MenuItem10: TMenuItem
+      Caption = '-'
+    end
+    object lmCloseTab: TMenuItem
+      Caption = 'Close Tab'
+      OnClick = lmCloseTabClick
+    end
+  end
+  object MainMenu1: TMainMenu
+    left = 123
+    top = 76
+    object MenuItem3: TMenuItem
+      Caption = 'Run'
+      ShortCut = 116
+      Visible = False
+      OnClick = bbRunClick
+    end
+  end
+  object imTabs: TImageList
+    left = 212
+    top = 500
+    Bitmap = {
+      4C69060000001000000010000000F0F7FFFFFDFFFF00FFFFF2FFFFFFF2FFFFFF
+      F9FFFBF4F1FFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFBF4FFFFFF
+      F2FFFFFFF5FFFBFDFEFFF6FDFFFFF8FEFFFFFAFAFAFFFFF8EAFFFFFFF1FFFFFF
+      F8FFFFFFFBFFFFFFFBFFFFF5F1FFFFFBF7FFFFFCF8FFFFFFFBFFFFFBF3FFFFFF
+      F1FFFFFFF4FFF5F5F5FFF8FEFFFFF5F9FEFFFFFFFEFF7E6F5FFF766552FF7569
+      5DFF7D726AFF675A52FF84776FFF7D7068FF73665EFF7E736BFF7E7266FF7867
+      54FF766757FFFFFFFEFFFAFEFFFFF4F6F7FFFFFDF8FF806F5CFFFFFFEDFFFFFF
+      F2FFFFFFF5FFFFFFF5FFFFFAEEFFFFFFF4FFFFFFF5FFFFF9EDFFFFFFF2FFFFFF
+      EDFF7C6D5AFFFFFFFBFFF1F3F4FFFFFFFFFFFFFFF9FF85725DFFFFFFEBFFA492
+      81FF968679FFB2A292FFA09080FFFFFFF0FFAD9D8DFFA8988BFFA59382FFFFFF
+      EBFF887560FFFFFDF6FFFFFFFFFFFEFCFBFFFFF9F0FF86715BFFFFF7DDFFFFFF
+      F0FFFFFFF1FFFFFEEDFFFFFFF1FFFFFFF1FFFFFFEEFFFFFFF2FFFFFAE8FFFFFF
+      EAFF7E6953FFFFFFF8FFFEFCFBFFFFFFFEFFFFFFF8FF7B6650FFFFFFEAFFA895
+      80FFAD9B8AFFA4907FFFFFFFF0FFA79381FFA99885FFFFFFF1FFAB9883FFFFFF
+      E9FF836E58FFFFF8EFFFFFFFFEFFFFFFFFFFFFF9F2FF826F5AFFFFFFEAFFFFFE
+      ECFFFFFFF1FFFFFFF1FFFFFFEDFFFFFFF0FFFFFFF1FFFFFFF0FFFFFFEEFFFFFF
+      EAFF816E59FFFFFFF9FFF9F9F9FFFDFFFF00FCF8F3FF847360FFFFFFEBFFA290
+      7FFFFFFFF2FFA49281FFFFFFF1FFAB9988FFAA9887FFA89888FFA79584FFFFFF
+      EBFF7D6E5BFFFFFFFBFFFDFFFF00FAFDFFFFFFFFFCFF736553FFFFFFEDFFFFFF
+      F2FFFFFAEDFFFFFFF1FFFFFFF1FFFFF9E8FFFFFFF2FFFFFFF4FFFFFEEEFFFFFF
+      EDFF766856FFFFFEFAFFFAFFFFFFF9FCFFFFFDFBFAFF7A6B5BFFFFFFEEFF9989
+      79FFFFFFF4FFA59585FFA69384FFAD9A8BFFFFFFF2FF9E8E81FFAC9D8DFFFFFF
+      EBFF736454FFFFFFFEFFF1F7FCFFF8FEFFFFFCFAF9FF807161FFFFFFEEFFFFFF
+      F2FFFFFFF4FFFFFBECFFFFFFF0FFFFF9EAFFFFFFF2FFFFFFF4FFFFFFF0FFFFFF
+      EEFF827363FFFFFDFCFFF8FEFFFFF2F6FBFFFFFFFEFF7B6D5BFFFFFFEDFFA593
+      82FFFFFFF2FFA79382FFFFFFF0FFB8A191FFA4907FFFFFFFF1FFA99786FFFFFD
+      E7FF7A6C5AFFFBF9F8FFFAFEFFFFFBFEFFFFFFFDF9FF827360FFFFFFE6FFFFFF
+      F0FFFFFFEEFFFFFFF0FFFFFCE7FFFFFAE6FFFFFDEBFFFFFFF1FFFFFFEFFFFFFF
+      EBFF7C6D5AFFFFFFFCFFFAFFFFFFF5F6FAFFFFFFFBFF786752FF867156FF7D68
+      53FF887462FF8D7660FF816A54FF8A725CFF8D7660FF796553FF7E6B56FF8D76
+      5CFF806F5AFFFDF9F4FFF9FDFEFFFDFFFF00FFFCF4FFFFFFEEFFFFFFE9FFFFFF
+      EEFFFFFEE9FFFFFFEDFFFFFFEBFFFFFFE8FFFFFFEDFFFFFFEEFFFFFFE9FFFFFF
+      EAFFFFFFEDFFFFFFFBFFFDFFFF00F9FCF3FFFFFFFC00F7F9FAFFFCFDFFFFFBFE
+      FFFFF7FCFAFFFBFFF8FFFBFFF5FFF7FFF1FFFBFFF8FFF9FEFCFFF3F7F8FFFDFD
+      FFFFFDFFFFFFF8F9F5FFFFFFF9FFFFFFF9FFFFFFFC00FCFEFFFFFBFCFFFFFBFE
+      FFFFF7FCFAFFFBFFF8FFF7FFF1FFFBFFF5FFFBFFF8FFFBFFFEFFFBFFFFFFFDFD
+      FFFFFDFFFFFFFFFFFC00FDFFF7FFFFFFF9FFFEFFFBFFFCFEFFFFF9FAFEFFFBFE
+      FFFFF4F9F7FFFBFFF8FFFBFFF5FFF7FFF1FFFBFFF8FFEEF3F1FFF7FBFCFFFDFD
+      FFFFF5F7F8FFFFFFFC00FFFFF9FFFDFFF7FFF9FAF6FFFDFFFFFFF8F9FDFFF6F9
+      FDFFFBFFFEFFFAFFF7FF697363FF6F7969FF5B6358FFFBFFFEFFFBFFFFFFF0F0
+      F6FFFCFEFFFFFBFCF8FFFFFFF9FFFCFEF8FFFFFFFC00FDFFFFFFFBFCFFFFFBFE
+      FFFFF6FBF9FFF4FDF0FF727C6BFF6B7564FF60695CFFF8FDFBFFFBFFFFFFFDFD
+      FFFFFDFFFFFFFDFEFAFFF8FAF4FFFEFFFAFFFCFDF9FFFDFEFFFFFDFEFFFFF2F6
+      F7FFFBFFFCFFFBFFF7FF6B7564FF727C6BFF576053FFFAFFFDFFFBFFFFFFF6F7
+      FBFFF8FAFBFFFFFFFEFFFDFFF9FFFEFFFAFFFFFFFC00FAFBFFFFFDFEFFFFFBFF
+      FFFFFAFFFBFFFBFFF7FFF3FEEAFFFBFFF2FFF8FFF2FFFBFFFCFFF9FDFEFFFDFE
+      FFFFF7F9FAFFFFFFFEFFF9FBF5FFFFFFFBFFFFFFFC00FDFEFFFFF7F8FCFFFBFF
+      FFFFFBFFFBFFF1FBEBFFFBFFF2FFF8FFEFFFFBFFF5FFFBFFFCFFF6FAFBFFFDFE
+      FFFFFDFFFFFFF7F8F6FFFFFFFBFFFDFFF9FFFFFFFC00FDFEFFFFF9FAFEFFFBFF
+      FFFFF4FBF4FFFAFFF4FFFBFFF1FFF5FFEBFFFBFFF4FFFAFFFAFFF7FCFBFFFDFE
+      FFFFFAFCFDFFFBFCFAFFFFFFFBFFFFFFFBFFF7F8F6FFFDFEFFFFFCFDFFFFFBFF
+      FFFFF8FFF8FFFBFFF4FF6B7761FF6D7963FF5F6958FFF5FCF5FFF8FDFCFFFDFE
+      FFFFFDFEFFFFFFFFFEFFFAFCF6FFFEFFFBFFFFFFFEFFFDFEFFFFFDFEFFFFF7FC
+      FBFFFBFFFBFFFBFFF4FF6F7C64FF727F67FF525C4BFFF8FFF8FFFBFFFFFFECED
+      F1FFFDFEFFFFFAFBF9FFFFFFFC00FFFFFC00EEEFEDFFFDFEFFFFF5F6FAFFFBFF
+      FFFFFBFFF9FFF2FDE9FF77846CFF6F7C64FF616C58FFFBFFF9FFFBFFFFFFFDFE
+      FFFFFBFCFFFFFCFDFBFFFCFDF9FFFAFBF7FFFFFFFEFFFDFEFFFFF9FAFEFFFBFF
+      FEFFF9FFF7FFF8FFEFFFFBFFEEFF6A775DFF5A6551FFECF4EAFFFBFFFEFFFCFD
+      FFFFFDFEFFFFFAFBF9FFFFFFFC00FFFFFC00FFFFFEFFF2F3F7FFFDFEFFFFFBFF
+      FEFFFBFFF8FFECF7E3FF738066FF58654BFFFBFFF1FFFBFFF9FFFBFFFEFFFDFE
+      FFFFF9FAFEFFFFFFFEFFFCFDF9FFFCFDF9FFF2F3F1FFFDFEFFFFFDFEFFFFF8FD
+      FBFF6A7267FF7C8773FF566349FFFBFFEEFFE8F4DEFFFBFFF9FFEEF3F1FFFAFB
+      FFFFFDFEFFFFFFFFFEFFFFFFFC00FFFFFC00FFFFFEFFF5F6FAFFFDFEFFFFF3F8
+      F6FFFBFFF8FFFBFFF2FFFBFFEEFFF2FFE5FFFBFFF1FFFBFFF9FFFBFFFEFFFDFE
+      FFFFFDFEFFFFFEFFFDFFFBFCF8FFFFFEFF00FBFAFCFF000000FF060606FF0200
+      00FF020000FF060501FF020100FF040300FF020100FF000100FFFEFFFDFFF9FB
+      FBFFFDFFFFFFF9FDFEFFFBFFFFFFF9F8FAFF0C0B0DFF000000FF919191FF8F8D
+      8CFF92908FFF959490FF94938FFF91908CFF93928EFF9A9897FF060705FFFFFF
+      FFFFF6F8F8FFFDFFFFFFF2F6F7FFFFFCFEFF020001FF9B9999FF020000FF0F0B
+      0AFF090504FF040100FF040100FF080501FF020100FF020000FF000100FF0303
+      03FFFDFFFFFFF6F8F9FFFDFFFFFF020001FF999698FF8D8B8BFF020000FFC6C2
+      C1FFC8C4C3FFC2BFBBFFD3D0CCFFCBC8C4FFCBC8C4FFC7C3C2FFD1CFCEFF0200
+      00FFFCFCFCFFFCFBFDFFFCFEFFFF080507FF020001FF959091FF0A0506FFD1CC
+      CBFF3D3837FF3C3734FF3C3734FF35302DFF403D39FF413D3CFFBBB9B8FF0806
+      06FF020202FFFFFEFF00FFFEFF00020001FF959294FF090405FFC6C1C2FFC7C2
+      C1FFC7C2C1FFD1CCC9FFC9C4C1FFD1CCC9FFC3BEBBFFD1CDCCFFCDC9C8FFC5C3
+      C3FF020000FFF7F6F8FFFBFAFCFF120D0FFF918C8EFF060001FFC1BBBCFF423D
+      3CFF403B3AFF342D2AFF403936FF3E3936FF342F2CFF393534FF3B3736FFC2C0
+      C0FF050303FFFFFEFF00FDFCFEFF040001FF999496FF050000FFCFC9CAFFC9C4
+      C3FFC7C2C1FFD7D0CDFFCBC4C1FFC2BDBAFFD9D4D1FFC5C1C0FFC8C4C3FFCDCB
+      CBFF020000FFFEFDFFFFFFFEFF00040001FF928D8FFF0B0506FFC5BFC0FF3A35
+      34FF3C3736FF433C39FF3C3532FF3C3734FF393431FF3C3837FF363231FFC3C1
+      C1FF020000FFFFFEFF00FFFEFF00080305FF8F8A8CFF070102FFCBC5C6FFD5D0
+      CFFFCCC7C6FFBDB6B3FFD0C9C6FFCAC5C2FFD5D0CDFFC7C3C2FFCCC8C7FFCCCA
+      CAFF060404FFFFFEFF00F7F6F8FF070406FF989597FF040000FFC9C4C5FF3732
+      31FF443F3EFF3C3734FF3B3633FF3C3734FF342F2CFF383433FF423E3DFFC7C5
+      C5FF020000FFFDFCFEFFFFFEFF00020001FF939092FF050001FFD5D0D1FFC5C0
+      BFFFC0BBBAFFD4CFCCFFC7C2BFFFCCC7C4FFCDCAC6FFD0CCCBFFC7C5C4FFC3C1
+      C1FF090909FFFFFEFF00FEFDFFFF030002FF9E9B9DFF020000FFC9C7C7FF3A36
+      35FF393534FF44413DFF3A3733FF35322EFF3E3B37FF312D2CFF3C3A39FFCCCA
+      CAFF000000FFF9F8FAFFFCFEFFFFFFFEFF00020001FF070505FFC7C5C5FFC7C3
+      C2FFD4D0CFFFC1BEBAFFCCC9C5FFC9C6C2FFD4D3CFFFC5C3C2FFC1C2C0FFCBCB
+      CBFF000000FFFDFFFFFFFDFFFFFFF9F8FAFFFFFEFF00000000FF000000FF1210
+      0FFF020000FF040300FF030200FF020100FF020100FF030100FF000100FF0000
+      00FF070909FFFBFDFEFFF3F7F8FFFFFEFF00FDFCFEFFFFFFFFFFFFFFFFFFFAF8
+      F7FFFFFDFCFFFFFFFCFFFEFDF9FFFFFFFCFFFDFCF8FFFFFFFEFFF9FAF8FFFDFF
+      FFFFF9FBFBFFFAFEFFFFFBFFFFFFFFFBFFFFFFF4FAFFFAFEFFFFF6FFFFFFFAFF
+      F8FFFBFFF9FFFDFCFFFFF8F7FFFFFBFAFFFFF4F6FEFFFFFFFBFFF4FCF2FFF6FF
+      FFFFFAFEFFFFFAEEF4FFFFFBFFFFFFF5F5FFFFF9FFFFECEAFFFFF1F1FFFFF5F5
+      FFFFFAF6FFFFF8F3FFFFF3EFFFFFF8F1FFFFF8F3FFFFF3EFFFFFF6F6FFFFEBEB
+      FFFFF3F1FFFFFFF9FFFFFFF5F5FFFDFFF9FFEDECFFFF3C2EA4FF3C2AB9FF3E2C
+      9DFF433595FF413294FF3F3294FF3C2C91FF433496FF433595FF3F2D9EFF3D2B
+      BAFF35279DFFEFEEFFFFFBFFF9FFF3FFF6FFF1F3FFFF4332C3FFAF95FFFFC2AB
+      FFFFC2AEFFFFC0ADFFFFC7B5FFFFCAB8FFFFC0ADFFFFC8B4FFFFBCA5FFFFB49A
+      FFFF3E2DBEFFF1F3FFFFF1FFF4FFF8FFFFFFEFF1FFFF2B1D9BFFB9A5FFFFB3A1
+      FFFFA896F3FFAA9AF1FFAE9FF3FFC4B5FFFFB2A2F9FFA694F1FFAF9DFFFFB09C
+      FFFF3B2DAAFFEAECFFFFF8FFFFFFFAFFFFFFF4F4FFFF342696FFC8B6FFFFC1AF
+      FFFFC6B4FFFFD6C3FFFFD5C3FFFFD3C0FFFFD1BEFFFFD4C2FFFFC3B1FFFFC2B0
+      FFFF3B2F9FFFEFEFFFFFFAFFFFFFF3F6EDFFF8F6FFFF43349DFFC6B1FFFFB7A2
+      F7FFB79FE5FFC4A9F3FFD1B3FEFFB89AE6FFB79CE6FFCDB5FBFFB9A4F9FFCAB5
+      FFFF3C2D96FFF8F4FFFFF5F8EFFFFFFFF8FFFAF7FFFF3D2F95FFC1ADFFFFD6C1
+      FFFFDBC4FFFFD6BBFDFFE1C4FFFFDDBFFFFFDCC1FFFFD7C0FEFFD9C4FFFFBCA8
+      FFFF403298FFFAF7FFFFFFFFF8FFF8FFF8FFF6F6FFFF3C2E98FFC3AFFFFFAE9E
+      ECFFDACAFFFFAF9CD3FFDFCBFFFFBFAAE1FFAD9AD1FFBDADE3FFA696E4FFC1AD
+      FFFF3E309AFFF6F6FFFFF9FFF9FFFBFDFDFFF6F4FFFF40319DFFCBB7FFFFCBBB
+      FFFFD1C2FBFFD8C4FFFFD4C1FAFFDBC5FFFFD0BDF6FFCDBEF8FFD3C3FFFFCAB6
+      FFFF392A96FFF6F4FFFFEFF4F3FFFFFBFFFFF0E6FFFF3D2C95FFC4AEFFFFB5A1
+      F4FFD5BEFFFFBDA0EFFFB699E9FFB796EAFFE0C4FFFFBDA5EBFFA793E6FFC0AA
+      FFFF47369FFFFBF1FFFFFFFBFFFFFFF9FFFFFCECFFFF4B34A1FFC7AEFFFFD1BB
+      FFFFD1BAFEFFDEC1FFFFD3B3FFFFE0C0FFFFD3B6FFFFD7C0FFFFD1BBFFFFD2B9
+      FFFF432C99FFF3E3FFFFFFF9FFFFFFF2FFFFFFEDFFFF44289FFFCAACFFFFB09C
+      E9FFD8C7FFFFB39CE0FFDAC1FFFFB299E3FFB7A0E4FFD3C2FBFFBBA7F4FFC1A3
+      FFFF462AA1FFFFEEFFFFFFF4FFFFFCF2FEFFFDF0FFFF4633A2FFBBA7FFFFD7C8
+      FFFFC8BBFFFFD3C3FFFFC5B4FFFFCBBAFFFFD2C2FFFFD0C3FFFFC5B6FFFFC9B5
+      FFFF3D2A99FFFAEDFFFFFFFAFFFFFAFEFFFFE1E4FFFF303187FF3535A1FF312A
+      92FF3C339BFF372D97FF3E36A1FF3C349FFF342A94FF382F97FF352E96FF3636
+      A2FF3C3D93FFF0F3FFFFF8FCFFFFF1FDFF00EDF8FFFFDDEBFFFFD1D9FFFFDFDC
+      FFFFDED8FFFFDDD6FFFFDED9FFFFDFDAFFFFDED9FFFFE3DAFFFFDEDCFFFFD7DE
+      FFFFDDEBFFFFE8F3FFFFF4FFFFFFF7FBF6FFFDFFFEFFFAFAFAFFFFFFFFFFFFFE
+      FFFFF9F3F4FFFFFDFFFFF9EFF5FFF9EFF5FFFFFDFFFFF9F3F4FFFFFFFEFFFFFE
+      FFFFFAFAFAFFFDFFFEFFF7FBF6FFFAFCFCFFFBFDFDFFFCFEFEFFFBFDFDFFFCFD
+      FBFFFFFFFEFFF9FAF8FFFFFFFEFFFFFFFEFFF9FAF8FFFFFFFEFFFCFDFBFFFBFD
+      FDFFFCFEFEFFFBFDFDFFFAFCFCFFFBFEFFFFFBFEFFFFF7FEFBFFF8FFFCFFF6FF
+      FEFF0D1C14FF081A0DFF001201FF001201FF081B0CFF0D1B15FFF6FFFEFFF8FF
+      FCFFF7FEFBFFFBFEFFFFFBFEFFFFFCF6FFFFFDFDFFFFFAFFFEFFF3FFF8FF0016
+      07FFA4C4ACFF98BF9FFFABD6B1FFABD6B1FF98BF9FFFA6C3ACFF001607FFF3FF
+      F8FFFAFFFEFFFFFDFFFFFCF6FFFFFFF9FFFFFFF4FEFFFFFEFFFF0B1C0FFFABCF
+      ABFF99CC9AFFA4E1A9FF86CA8FFF86CA8FFFA2E1A9FF99CC9AFFABCFABFF0B1C
+      0FFFFDFEFFFFFFF4FEFFFFF9FFFFFFFAFFFFFFFAFFFF151717FF07180BFFA8CB
+      A9FF99CA9CFF9AD49EFF91D29AFF93D29AFF98D49EFF9BCA9CFFA8CBA9FF0718
+      0BFF151717FFFFFAFFFFFFFAFFFFF0F7FAFFF8FFFFFF122015FF788A7DFF0013
+      07FFAFC8BAFFA8C5AEFFA6C7ACFFA8C7ACFFA8C5AEFFAFC8BAFF001307FF788A
+      7DFF122015FFF8FFFFFFF0F7FAFFF6FFFEFFEFFEF6FF08190BFF7C8F7EFF839A
+      8CFF001505FF08250CFF001D00FF001D00FF08250CFF001505FF839A8CFF7C8F
+      7EFF08190BFFEFFEF6FFF6FFFEFFFEFFF7FFFDFFF8FF051204FF718A70FF7FA6
+      79FF6C9F66FF659F64FF64A064FF64A064FF659F64FF6C9F66FF7FA679FF718A
+      70FF051204FFFDFFF8FFFEFFF7FFFCFEF2FFF7FEEFFF192917FF7E9D7CFF6093
+      5AFF70AF69FF5BA45BFF5AA85BFF5AA85BFF5BA45BFF70AF69FF60935AFF7E9D
+      7CFF192A15FFF7FEEFFFFAFEF2FFF8FFF8FFEFFFEFFF001C00FF204A21FF649B
+      6AFF5D9F64FF59A55EFF55A75AFF55A75AFF59A55EFF5D9F64FF649B6AFF204A
+      21FF001C00FFEFFFF0FFF6FFF8FFF8FFFBFFF4FFF7FF012001FF1F4B22FF2158
+      29FF579B62FF58A960FF55AC5CFF55AC5CFF58A960FF579B62FF215829FF1F4B
+      22FF012001FFF4FFF7FFF8FFFBFFFFFBFAFFF4F8F2FFF6FFF5FF002100FF184E
+      19FF0E5610FF085D0DFF09640FFF09640FFF085D0DFF0E5610FF184E19FF0021
+      00FFF4FFF5FFF6F8F2FFFFFBFAFFFFFCFFFFFFFEFFFFEDF4EDFFF3FFF2FF0020
+      00FF205720FF1C5F21FF07500CFF074F0DFF1C5F21FF205720FF002000FFF3FF
+      F2FFEDF4EDFFFFFEFFFFFFFCFFFFFFFBFF00FBF7FDFFFDFFFFFFFAFFFCFFF6FF
+      F8FF041A08FF031D06FF032006FF032007FF031D06FF041A08FFF6FFF8FFFAFF
+      FCFFFDFFFFFFFBF7FDFFFFFBFF00FFFBFF00FFFCFFFFFDFCFFFFFCFEFFFFF6F7
+      FBFFFBFFFFFFF8FFFCFFFAFFFCFFFAFFFCFFF8FFFCFFFBFFFFFFF4F7FBFFFEFD
+      FFFFFDFCFFFFFFFCFFFFFFFBFF00FFFFFE00FFFDFCFFFFFEFFFFFCFBFFFFFBFB
+      FFFFFDFCFFFFF3F1FDFFFDFBFFFFFDFBFFFFF3F2FCFFFDFCFFFFFBFBFFFFFCFB
+      FFFFFFFFFFFFFFFDFDFFFFFFFE00F4F2F1FFFFFFFFFFF9F8FAFFFFFEFFFFFDFC
+      FFFFFDFCFFFFFAF8FFFFFAF8FFFFFAF8FFFFFAF8FFFFFDFCFFFFFDFDFFFFFFFE
+      FFFFF9F8FAFFFFFFFFFFF4F2F1FFFFFFFFFFFCFCFCFFFFFEFFFFFBFAFEFFF6F5
+      FEFF4A4953FF40404CFF474755FF474755FF40404CFF4A4953FFF6F5FEFFFBF9
+      FFFFFFFEFFFFFCFCFCFFFFFFFFFFFFFEFFFFFFFEFFFFFAF9FDFFF9F9FFFF4342
+      4CFF3F3F4BFFA1A1AFFF90909EFF908F9FFFA1A1AFFF413F4BFF43424CFFFBF9
+      FFFFFAF9FDFFFFFEFFFFFFFFFFFFFAFBFFFFFDFEFFFFF6F6FCFF47464FFF4947
+      53FF9F9FADFF9C9BABFF9D9DADFF9D9DAFFF9B9BABFF9F9FADFF474753FF4746
+      4FFFF6F6FCFFFDFEFFFFFAFCFDFFFCFDFFFFFDFDFFFFFDFCFFFF44454FFF4545
+      53FF2E2E3EFF9797A9FF9A9AACFF9A9AACFF9797A9FF2F2E3EFF454551FF4645
+      4FFFFDFCFFFFFDFDFFFFFCFDFFFFF8F8FEFFFDFDFFFFF4F6FEFF454650FFA5A5
+      B3FF4D4D5DFF4B4B5DFF37384CFF37384CFF494B5DFF4D4D5DFFA4A5B3FF4545
+      51FFF4F6FEFFFDFDFFFFF8F8FEFFFDFDFFFFFCFCFFFFFBFCFFFF3F3F4BFFB7B8
+      C6FFB1B1C1FFABACC0FFB5B6CAFFB5B6CAFFABADBFFFB1B1C3FFB7B8C6FF3F3F
+      4BFFFBFDFFFFFCFBFFFFFDFDFFFFFDFDFFFFF8F8FEFFFBFCFFFF464652FFB0B1
+      BFFFB8B8C8FFA7A8BCFFB3B4C8FFB3B4C8FFA7A9BBFFB8B8CAFFB0B1BFFF4646
+      52FFFBFDFFFFF8F7FFFFFDFDFFFFF6F6FCFFFDFDFFFFF3F5FDFF454650FFB1B1
+      BFFFAAAABAFFC1C1D3FFB4B5C9FFB4B5C9FFBFC1D3FFAAAABAFFB0B1BFFF4545
+      51FFF3F5FDFFFDFDFFFFF6F6FCFFFDFEFFFFF4F4FAFFFDFCFFFF4C4D57FFB5B5
+      C3FFB9B9C9FFAFAFC1FFACACBEFFACACBEFFAFAFC1FFBAB9C9FFB5B5C1FF4E4D
+      57FFFDFCFFFFF4F4FAFFFDFEFFFFF3F4F8FFFDFEFFFFFDFDFFFF35343DFFBEBC
+      C8FFACACBAFFABAABAFFB9B9C9FFB9B9CBFFAAAABAFFACACBAFFBCBCC8FF3534
+      3DFFFDFDFFFFFDFEFFFFF3F5F6FFFEFDFFFFFFFEFFFFFFFEFFFF4B4B51FF3736
+      40FFA8A8B4FF9B9BA9FF9797A5FF9796A6FF9B9BA9FFAAA8B4FF373640FF4D4B
+      51FFFFFEFFFFFFFEFFFFFEFEFEFFFFFFFFFFFDFDFDFFF6F5F7FFFEFDFFFF403F
+      48FF3F3E48FF42424EFF434351FF434351FF42424EFF3F3E48FF403F48FFFEFC
+      FFFFF6F5F7FFFDFDFDFFFFFFFFFFFDFBFAFFFEFCFCFFFFFEFFFFFEFDFFFFFDFC
+      FFFFFDFCFFFFFBF9FFFFFAF8FFFFFAF8FFFFFBF9FFFFFDFCFFFFFDFDFFFFFEFD
+      FFFFFFFEFFFFFEFCFCFFFDFBFAFFFFFFFE00FDFBFAFFFFFEFFFFFFFEFFFFFAFA
+      FFFFFDFCFFFFFBF9FFFFFDFBFFFFFDFBFFFFFBFAFFFFFDFCFFFFFAFAFFFFFFFE
+      FFFFFFFFFFFFFDFBFBFFFFFFFE00
+    }
+  end
+  object imTools: TImageList
+    Height = 32
+    Width = 32
+    left = 518
+    top = 126
+    Bitmap = {
+      4C69090000002000000020000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00ABABAB96ABABABFFABABABFFABABABFFABABABFFABABABFFABABABFFABAB
+      ABFFABABABFFABABABFFABABABFFABABABFFABABABFFABABABFFABABABFFAAAA
+      AAFFA7A7A7FFA7A7A7FFA9A9A999ABABAB00ABABAB00ABABAB00ABABAB00ABAB
+      AB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00AAAAAAFFEFEFEFFFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3
+      F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFEFEF
+      EFFFD5D5D5FFC5C5C5FFB7B7B7FFAAAAAA84ABABAB00ABABAB00ABABAB00ABAB
+      AB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00A9A9A9FFF1F0F1FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0
+      F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFEBEB
+      EBFFD0D0D0FFB9B9B9FFDCDCDCFFB2B2B2FFA9A9A963ABABAB00ABABAB00ABAB
+      AB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00A7A7A7FFF2F2F2FFF2F1F1FFF1F1F1FFF1F1F1FFF1F1F1FFF1F2F1FFF1F1
+      F1FFF2F1F2FFF2F1F2FFF2F1F1FFF1F2F1FFF1F1F1FFF1F1F1FFF2F2F1FFEDED
+      EDFFD2D2D2FFB8B8B8FFE2E2E2FFDEDEDEFFA9A9A9FFA7A7A72DABABAB00ABAB
+      AB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00A6A6A6FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0
+      F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFEBEB
+      EBFFCDCDCDFFB6B6B6FFD7D8D8FFE1E1E1FFC4C4C4FFA3A3A39CABABAB01ABAB
+      AB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00A4A4A4FFEFEFEFFFEEEEEEFFEEEEEEFFEFEEEEFFEEEEEEFFEEEEEEFFEEEF
+      EEFFEEEEEEFFEEEEEFFFEEEEEEFFEEEEEEFFEFEEEEFFEEEEEEFFEEEEEEFFEAE9
+      EAFFC7C7C8FFAEAEAEFFB4B4B4FFB7B7B7FFB7B7B7FF9D9D9DFFABABAB07ABAB
+      AB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00A2A2A2FFEDEDEDFFECEDEDFFEDEDEDFFEDEDECFFEDECEDFFEDEDEDFFECED
+      ECFFEDECEDFFEDEDEDFFECEDEDFFEDEDEDFFEDEDEDFFEDEDEDFFEDEDEDFFEAEA
+      EAFFDCDCDCFFDADADAFFDDDDDDFFDFDFDFFFDEDEDEFFA0A0A0FFABABAB09ABAB
+      AB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00A0A0A0FFEBEBEBFFEBEBEBFFEBEAEAFFEAEBEAFFEAEAEAFFEBEBEBFFEBEB
+      EBFFEBEBEAFFEBEAEAFFEBEAEAFFEBEAEAFFEBEBEAFFEBEBEAFFEAEAEBFFE9EA
+      E9FFEAE9EAFFEAEAE9FFEBEAEAFFEBEBEBFFE8E8E8FF9E9E9EFFABABAB04ABAB
+      AB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF009E9E9EFFEAEAEAFFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9
+      E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9
+      E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE8E8E8FF9E9E9EFFABABAB00ABAB
+      AB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF009C9C9CFFE8E8E8FFE6E7E7FFE7E7E7FFE7E7E6FFE7E7E7FFE7E7E7FFE7E7
+      E6FFE6E6E6FFE6E7E7FFE7E7E7FFE7E6E7FFE7E7E6FFE7E7E7FFE7E7E7FFE7E7
+      E7FFE6E7E7FFE7E6E7FFE6E6E6FFE4E4E4FFE0E0E0FF9B9B9BFFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF009A9A9AFFE6E6E6FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5
+      E5FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5E5FFE3E3E3FFE2E2
+      E2FFE1E1E1FFE0E0E0FFE0DFE0FFE0DFE0FFDEDDDEFF9A9A9AFFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00979798FFE4E4E4FFE3E3E3FFE3E3E3FFE3E3E3FFE3E3E3FFE3E3E3FFE3E3
+      E3FFE3E3E3FFE2E2E2FFE2E2E2FFE1E1E1FFDFDFDFFFDFDFDFFFDEDFDEFFDFDF
+      DFFFDFDFDFFFDFDEDFFFDFDEDFFFDFDFDFFFDDDDDDFF979798FFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00959596FFE2E2E2FFE1E1E2FFE1E2E1FFE1E2E1FFE1E1E1FFE1E1E1FFE0E0
+      E0FFDFDFDFFFDEDEDEFFDEDEDEFFDEDEDEFFDEDEDEFFDEDEDEFFDEDEDEFFDEDE
+      DEFFDEDEDEFFDEDEDEFFDEDEDEFFDEDEDEFFDDDDDDFF959596FFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00939393FFDADADAFFD8D8D8FFD8D8D8FFD8D8D8FFD7D7D7FFD4D4D4FFD3D3
+      D3FFD3D3D3FFD3D3D3FFD3D3D3FFD3D3D3FFD3D3D3FFD3D3D3FFD3D3D3FFD3D3
+      D3FFD3D3D3FFD3D3D3FFD3D3D3FFD3D3D3FFD5D5D5FF939393FFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00919191FFD8D8D8FFD6D6D6FFD6D6D6FFD5D5D5FFD2D2D2FFD2D2D2FFD2D2
+      D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2
+      D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD4D4D4FF919191FFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF008E8E8FFFD6D6D6FFD4D4D4FFD3D3D3FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2
+      D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2
+      D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD4D4D4FF8E8E8FFFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF008C8C8DFFD5D5D5FFD3D3D3FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2
+      D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2
+      D2FFD2D2D2FFD2D2D2FFD2D2D2FFD2D2D2FFD4D4D4FF8C8C8DFFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF008A8A8BFFD3D3D3FFD1D1D1FFD1D1D1FFD1D1D1FFD1D1D1FFD1D1D1FFD1D1
+      D1FFD1D1D1FFD1D1D1FFD1D1D1FFD1D1D1FFD1D1D1FFD1D1D1FFD1D1D1FFD1D1
+      D1FFD1D1D1FFD1D1D1FFD1D1D1FFD1D1D1FFD3D3D3FF8A8A8BFFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00888889FFD2D2D2FFD0D0D0FFD0D0D0FFD0D0D0FFD0D0D0FFD0D0D0FFD0D0
+      D0FFD0D0D0FFD0D0D0FFD0D0D0FFD0D0D0FFD0D0D0FFD0D0D0FFD0D0D0FFD0D0
+      D0FFD0D0D0FFD0D0D0FFD0D0D0FFD0D0D0FFD2D2D2FF888889FFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00868687FFD0D0D0FFCECECEFFCECECEFFCECECEFFCECECEFFCECECEFFCECE
+      CEFFCECECEFFCECECEFFCECECEFFCECECEFFCECECEFFCECECEFFCECECEFFCECE
+      CEFFCECECEFFCECECEFFCECECEFFCECECEFFD0D0D0FF868687FFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000848485FFCFCFCFFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCD
+      CDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCD
+      CDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCFCFCFFF848485FF000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0001828283FFCFCFCFFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCC
+      CCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCC
+      CCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCFCFCFFF828283FF000000010000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008080
+      8002818182FFCECECEFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCB
+      CBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCB
+      CBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCECECEFF818182FF404040040000
+      0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005555
+      55037F7F80FFD9D9D9FFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDF
+      DFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDF
+      DFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFD9D9D9FF7F7F80FF555555060000
+      0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008080
+      80027E7E7F997E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E
+      7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E
+      7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7D7D7E9B404040040000
+      0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      000180808002666666054D4D4D0A5B5B5B0E5A5A5A1155555512595959145555
+      55185252521C5858581D5555551E5555551E5555551E5858581D5858581A5555
+      5515515151135A5A5A115555550F5555550C4949490755555503000000010000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000100000001808080028080800280808002555555034040
+      4004666666056666660555555506555555065555550666666605808080045555
+      5503808080028080800280808002000000010000000100000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00ABABAB00ABAB
+      AB00ABABAB00ABABAB00ABABAB00ABABAB00ABABAB00ABABAB00ABABAB1BABAB
+      AB6CABABABB7ABABABCCABABABFCABABABFCABABABCCABABABB7ABABAB6CABAB
+      AB1BABABAB00ABABAB00ABABAB00ABABAB00ABABAB00ABABAB00ABABAB00ABAB
+      AB00ABABAB00ABABAB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00AAAAAA00AAAA
+      AA00FFFFFF00FFFFFF00FFFFFF00FFFFFF00AAAAAA33AAAAAA9CB2B2B2FFCBC9
+      CAFFE4E0E1FFEAE6E7FFF7F2F3FFF7F4F5FFEAE9EAFFE3E2E2FFCAC9C9FFB2B2
+      B2FFAAAAAA9CAAAAAA33FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00AAAA
+      AA00AAAAAA00AAAAAA00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A9A9A900A9A9
+      A900FFFFFF00FFFFFF00FFFFFF00A9A9A98AB1B1B1FFDAD7D8FFF8F3F3FFF9F2
+      F3FFF5EDEFFFF3EAEBFFF1EAEBFFF1EDEEFFF3F1F2FFF4F3F3FFF6F4F4FFF5F4
+      F4FFDADADAFFB1B1B1FFA9A9A98AFFFFFF00FFFFFF00FFFFFF00FFFFFF00A9A9
+      A900A9A9A900A9A9A900FFFFFF00FFFFFF00FFFFFF00FFFFFF00A7A7A800A7A7
+      A800FFFFFF00A7A7A806A7A7A896BFBDBEFFF2F0F2FFF6F3F4FFF5EFF1FFF3EA
+      EBFFF1E7E9FFEFE7E9FFEDE7E8FFEFEDEEFFEFEFEFFFEFEFEFFFEFEFEFFFF1F0
+      F0FFF3F3F3FFF2F1F1FFC1C0C1FFA7A7A896A7A7A806FFFFFF00FFFFFF00A7A7
+      A800A7A7A800A7A7A800FFFFFF00FFFFFF00FFFFFF00FFFFFF00A6A6A600A6A6
+      A600FFFFFF00A6A6A696C7C5C5FFF4F1F1FFF3F0F1FFF2EDEFFFF2EDEFFFF1EB
+      EDFFEFE6E8FFEDE6E8FFEBE7EAFFECEBEDFFEBEDEEFFECEDEDFFECEDEDFFEDED
+      EDFFEDEDEDFFF1F0F0FFF3F3F3FFCACACAFFA6A6A696FFFFFF00FFFFFF00A6A6
+      A600A6A6A600A6A6A600FFFFFF00FFFFFF00FFFFFF00FFFFFF00A4A4A400A4A4
+      A400A4A4A48ABAB9BAFFF1EFEFFFF1EFEFFFEFEDEDFFEFEDEEFFEFECEEFFEFEB
+      EEFFEEE6EAFFEAE6E8FFE9E6E9FFEAEBEDFFEAEBEDFFEAEBEDFFEAECEDFFEAEC
+      EDFFEBECEDFFECEDEDFFEFEFEFFFF1F1F1FFBDBCBCFFA4A4A48AFFFFFF00A4A4
+      A400A4A4A400A4A4A400FFFFFF00FFFFFF00FFFFFF00FFFFFF00A3A3A300A3A3
+      A336AAAAAAFFE8E6E7FFEFEEEFFFECEBECFFECEBECFFEBEBECFFEBEBEDFFECEA
+      EDFFEBE6EBFFE9E4E9FFE8E7EAFFE7EAEDFFE6EAECFFE6EAECFFE6EAECFFE7EA
+      EBFFE8EBEBFFEAEBECFFEBEBECFFEFEEEFFFECEBEBFFAAAAAAFFA3A3A336A3A3
+      A300A3A3A300A3A3A300FFFFFF00FFFFFF00FFFFFF00FFFFFF00A1A1A100A1A1
+      A19FCBCACBFFEDECEDFFEBEAEBFFEAEAEBFFE9EAEBFFE8EAEBFFE8E9EBFFE9E9
+      EDFFEAE6EBFFE7E4E9FFE5E5EAFFE4E8ECFFE3E8EBFFE3E8EBFFE3E8EBFFE4E9
+      EBFFE6E9EBFFE8EAEBFFE9EAEBFFEAEAEBFFEFEEEFFFCFCFCFFFA1A1A19FA1A1
+      A100A1A1A100A1A1A100FFFFFF00FFFFFF00FFFFFF00FFFFFF009F9F9F21A8A8
+      A8FFE3E2E3FFEBEBEBFFEAE9EAFFE8E8EAFFE6E8EAFFE5E8EAFFE5E8EAFFE6E8
+      ECFFE8E9EEFFE8E8EEFFE7EBF0FFE6EDF2FFE5EBEFFFE1E9EDFFE1E8EAFFE1E7
+      EAFFE3E8EAFFE4E8EAFFE7E8EAFFE8E8EAFFECEBEBFFE9E7E8FFA8A8A8FF9F9F
+      9F219F9F9F009F9F9F00FFFFFF00FFFFFF00FFFFFF00FFFFFF009D9D9D78BBBB
+      BBFFE6E5E6FFE8E8E8FFE7E8E8FFE6E7E8FFE4E6E8FFE2E6E9FFE2E6EAFFE5EA
+      EDFFDCE0E5FFCFD0D2FFC3C4C4FFC4C4C5FFCFD1D3FFD9E0E4FFE0E9ECFFDFE6
+      E9FFE0E6E8FFE2E6E8FFE4E6E9FFE6E7E9FFE8E8E9FFEBEAEBFFBDBCBCFF9D9D
+      9D789D9D9D009D9D9D00FFFFFF00FFFFFF00FFFFFF00FFFFFF009B9B9BBDC9C8
+      C9FFE5E5E5FFE6E6E6FFE5E5E6FFE3E5E6FFE1E4E6FFE0E4E7FFE1E6EAFFD9DE
+      E2FFC4C4C6FFD3D4D49DECEDED6DEEEEEE6BD4D4D49BC4C4C6FFD6DDE0FFDDE5
+      E9FFDDE4E6FFE0E4E7FFE2E4E7FFE4E5E7FFE6E5E7FFE9E8E9FFCFCDCEFF9B9B
+      9BBD9B9B9B009B9B9B00FFFFFF00FFFFFF00FFFFFF00FFFFFF00989899E4D2D0
+      D1FFE6E5E5FFE5E4E5FFE3E4E5FFE1E4E5FFDFE3E5FFDDE2E6FFDFE4E9FFCBCD
+      CFFFD3D3D39BFDFFFF5AFDFFFF5AFFFFFF59FFFFFF59D3D3D39BCACCCFFFDCE4
+      E8FFDBE2E6FFDDE2E6FFE0E3E6FFE2E4E6FFE4E4E6FFE7E6E7FFD9D6D7FF9898
+      99E4ABABAB00ABABAB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00969697F9D6D4
+      D5FFE5E4E4FFE4E3E4FFE2E2E4FFE0E2E4FFDEE2E4FFDCE1E4FFDCE2E7FFBFBF
+      C0FFEDEDED6BFDFFFF5AFDFFFF5AFFFFFF59FFFFFF59EDEDED6BBFBFC0FFDAE2
+      E7FFDAE0E4FFDBE1E4FFDEE2E4FFE0E2E4FFE2E2E4FFE4E4E5FFD7D4D5FF9696
+      97F9ABABAB00ABABAB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00949495F9D5D3
+      D4FFD5D2D4FFD3D2D4FFD1D1D4FFCDD0D4FFCAD0D4FFC7CFD4FFC4CED5FF9A9B
+      9CFF8D8D8D1EAAAAAA98ABABABFFABABABFFABABABFFABABABFFABABABFFABAB
+      ABFFABABABFFABABABFFABABABFFABABABFFABABABFFABABABFFABABABFFABAB
+      ABFFAAAAAA9832323202FFFFFF00FFFFFF00FFFFFF00FFFFFF00929292E4CFCC
+      CEFFD5D1D3FFD1CFD2FFCFCED2FFCCCED2FFC8CDD1FFC4CCD1FFC7D0D7FFA8AB
+      AEFF8B8B8B6AA9A9A9FFFCFCFCFFFAFAFAFFFAFAFAFFFAFAFAFFFAFAFAFFFAFA
+      FAFFFAFAFAFFFAFAFAFFFAFAFAFFFAFAFAFFFAFAFAFFFAFAFAFFFAFAFAFFFCFC
+      FCFFA9A9A9FF32323206FFFFFF00FFFFFF00FFFFFF00FFFFFF00909090BAC2BF
+      C1FFD4CFD2FFD0CCCFFFCDCBCFFFCACBCFFFC6CACFFFC3C9CEFFC5CFD5FFBAC3
+      C8FF959698FFA6A6A6FFF3F3F3FFDADADAFFCDCDCDFFCDCDCDFFCDCDCDFFCDCD
+      CDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFDADADAFFF3F3
+      F3FFA6A6A6FF3232320DFFFFFF00FFFFFF00FFFFFF00FFFFFF008D8D8E78AEAD
+      AEFFD4CFD2FFCECACDFFCCC9CDFFC9C9CDFFC5C8CDFFC2C8CCFFC2CAD0FFC7D2
+      D8FFB1BCC1FFA3A3A3FFEDEDEDFFC9C9C9FF72CAFAFF7BCDFAFF79CDFAFF76CB
+      FAFF75CBFAFF73CBFAFF72CAF9FF71C9F9FF6AC7F9FF4DBCF8FFC9C9C9FFEDED
+      EDFFA3A3A3FF32323212FFFFFF00FFFFFF00FFFFFF00FFFFFF008B8B8C1B9392
+      93FFD3CFD1FFD0CBCEFFCBC8CBFFC8C7CBFFC5C7CBFFC2C6CAFFC0C6CAFFBFC8
+      CEFFB9C1C9FF9F9F9FFFEDEDEDFFC9C9C9FF52BEF8FF57C0F8FF57BFF9FF55BF
+      F9FF54BFF9FF51BDF8FF4CBBF8FF45B9F8FF37B4F7FF15A6F6FFC9C9C9FFEDED
+      EDFF9F9F9FFF32323214FFFFFF00FFFFFF00FFFFFF00FFFFFF0089898A008989
+      8A96B5B3B4FFD1CED0FFC9C6C9FFC7C5C9FFC4C5C8FFC1C4C8FFBFC4C8FFBEC4
+      C8FFB0B7BCFF9B9B9BFFEDEDEDFFC9C9C9FF3EA3EEFF58B3F2FF50B1F3FF4CB0
+      F2FF4AAFF2FF46ADF2FF40AAF2FF35A5F1FF259EEFFF1690EBFFC9C9C9FFEDED
+      EDFF9B9B9BFF32323214FFFFFF00FFFFFF00FFFFFF00FFFFFF00878788008787
+      882D8E8E8FFFCECCCDFFCDCACCFFC5C4C6FFC3C3C6FFC1C3C6FFBFC2C6FFBDC2
+      C6FFB1B6BAFF969697FFEDEDEDFFC9C9C9FF2689E4FF3D9BEAFF4CA3ECFF53A7
+      EDFF57A9EDFF57A9EDFF53A7EDFF4CA3ECFF3D9BEAFF2689E4FFC9C9C9FFEDED
+      EDFF969697FF32323214FFFFFF00FFFFFF00FFFFFF00FFFFFF00858586008585
+      8600858586879B9A9BFFD1CFD0FFC9C7C9FFC3C2C4FFC1C1C4FFC0C1C4FFBEC1
+      C4FFB2B3B8FF929292FFEDEDEDFFC9C9C9FF1672DCFF2580E0FF358AE3FF4090
+      E5FF4694E6FF4A96E6FF4C97E6FF5099E7FF589EE7FF3E8AE1FFC9C9C9FFEDED
+      EDFF929292FF32323214FFFFFF00FFFFFF00FFFFFF00FFFFFF00848485008484
+      85008484850084848593A3A2A3FFD0CED0FFC7C7C8FFC0C0C2FFC0BFC2FFBFBF
+      C2FFB1B2B6FF8D8D8EFFEDEDEDFFC9C9C9FF0B56CEFF0D57CFFF135CD0FF1960
+      D2FF1E63D3FF2165D3FF2267D4FF2468D4FF2B6DD5FF3D7AD9FFC9C9C9FFEDED
+      EDFF8D8D8EFF32323214FFFFFF00FFFFFF00FFFFFF00FFFFFF00828283000000
+      000180808002666666058181829799999AFFCFCECFFFCDCACCFFC4C2C4FFC0BE
+      C1FFB2AEB3FF89898AFFEDEDEDFFC9C9C9FF07399AFF043596FF043596FF0535
+      97FF063798FF073799FF083999FF0B3C9CFF1243A0FF2355ABFFC9C9C9FFEDED
+      EDFF89898AFF32323214FFFFFF00FFFFFF00FFFFFF00FFFFFF00818181008080
+      80026D6D6D0755555512555555217B7B7B9D878787FFB4B3B4FFD4D1D3FFD1CD
+      D0FFBDB8BBFF858586FFE8E8E8FFCFCFCFFFC4C4C4FFC4C4C4FFC4C4C4FFC4C4
+      C4FFC4C4C4FFC4C4C4FFC4C4C4FFC4C4C4FFC4C4C4FFC4C4C4FFCFCFCFFFE8E8
+      E8FF858586FF32323214FFFFFF00FFFFFF00FFFFFF00FFFFFF007F7F80005555
+      55035D5D5D0B5858581D575757355858584B67676876777778BD878788FFA4A2
+      A4FFB6B0B4FF828283FFE4E4E4FFD9D9DAFFD9D9DAFFD9D9DAFFD9D9DAFFD9D9
+      DAFFD9D9DAFFD9D9DAFFD9D9DAFFD9D9DAFFD9D9DAFFD9D9DAFFD9D9DAFFE4E4
+      E4FF828283FF32323212FFFFFF00FFFFFF00FFFFFF00FFFFFF007E7E7F008080
+      80026D6D6D0755555512555555215757572F575757385959593C636363527373
+      7390747475CD777778F37F7F80FF7F7F80FF7F7F80FF7F7F80FF7F7F80FF7F7F
+      80FF7F7F80FF7F7F80FF7F7F80FF7F7F80FF7F7F80FF7F7F80FF7F7F80FF7F7F
+      80FF777778A63232320DFFFFFF00FFFFFF00FFFFFF00FFFFFF007D7D7E000000
+      000180808002666666054D4D4D0A5B5B5B0E5A5A5A1155555512595959145555
+      55184B4B4B214646462F3D3D3D413A3A3A4D3939395339393952393939503737
+      374C3636364B373737493636364735353545333333413333333E313131363232
+      32283232321432323206FFFFFF00FFFFFF00FFFFFF00FFFFFF007D7D7E007D7D
+      7E007D7D7E000000000100000001808080028080800280808002555555034040
+      4004565656074949490B3C3C3C133A3A3A183939391A3B3B3B193E3E3E183636
+      3617383838163838381638383816303030153030301532323214323232123232
+      320D3232320632323202FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00ABABAB96ABABABFFABABABFFABABABFFABABABFFABABABFFABABABFFABAB
+      ABFFABABABFFABABABFFABABABFFABABABFFABABABFFABABABFFABABABFFAAAA
+      AAFFA7A7A7FFA7A7A7FFA9A9A999ABABAB00ABABAB00ABABAB00ABABAB00ABAB
+      AB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00AAAAAAFFEFEFEFFFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3
+      F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFEFEF
+      EFFFD5D5D5FFC5C5C5FFB7B7B7FFAAAAAA84ABABAB00ABABAB00ABABAB00ABAB
+      AB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00A9A9A9FFF1F0F1FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0
+      F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFEBEB
+      EBFFD0D0D0FFB9B9B9FFDCDCDCFFB2B2B2FFA9A9A963ABABAB00ABABAB00ABAB
+      AB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00A7A7A7FFF2F2F2FFF2F1F1FFF1F1F1FFF1F1F1FFF1F1F1FFF1F2F1FFF1F1
+      F1FFF2F1F2FFF2F1F2FFF2F1F1FFF1F2F1FFF1F1F1FFF1F1F1FFF2F2F1FFEDED
+      EDFFD2D2D2FFB8B8B8FFE2E2E2FFDEDEDEFFA9A9A9FFA7A7A72DABABAB00ABAB
+      AB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00A6A6A6FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0
+      F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFEBEB
+      EBFFCDCDCDFFB6B6B6FFD7D8D8FFE1E1E1FFC4C4C4FFA3A3A39CABABAB01ABAB
+      AB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00A4A4A4FFEFEFEFFFEEEEEEFFEEEEEEFFACACACFF7D7D7EFF7D7D7EFF7D7D
+      7EFFACACACFFEEEEEFFFEEEEEEFFEEEEEEFFEFEEEEFFACACACFF7D7D7EFF7A7A
+      7BFF868687FFA8A8A9FFB4B4B4FFB7B7B7FFB7B7B7FF9D9D9DFFABABAB07ABAB
+      AB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00A2A2A2FFEDEDEDFFECEDEDFFEDEDEDFF7A7A7BFFB3B3B4FFB6B6B6FFB4B4
+      B5FF7A7A7BFFEDEDEDFFECEDEDFFEDEDEDFFEDEDEDFF9B9B9CFFB4B4B5FFB4B4
+      B4FF979798FF757575FFDDDDDDFFDFDFDFFFDEDEDEFFA0A0A0FFABABAB09ABAB
+      AB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00A0A0A0FFEBEBEBFFEBEBEBFFEBEAEAFF767677FFAAABABFFA6A6A6FFAEAE
+      AFFF767677FF767677FF767677FF767677FF767677FF969697FFAFAFAFFFA5A5
+      A6FF929293FF757576FFEBEAEAFFEBEBEBFFE8E8E8FF9E9E9EFFABABAB04ABAB
+      AB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF009E9E9EFFEAEAEAFFE9E9E9FFE9E9E9FF727272FF9D9D9EFFD8D8D8FFA9A9
+      AAFFACACADFFAEAEAFFFAFAFB0FFAFAFB0FFAEAEAFFFACACADFFA9A9AAFFD8D8
+      D8FF858586FF727272FFE9E9E9FFE9E9E9FFE8E8E8FF9E9E9EFFABABAB00ABAB
+      AB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF009C9C9CFFE8E8E8FFE6E7E7FFE7E7E7FF6C6C6DFF989899FFAFAFB0FF9191
+      92FFD7D6D6FFD7D6D6FFD6D6D7FFD7D7D7FFD6D6D6FFD6D7D7FF919192FFAFAF
+      B0FF838384FF6C6C6DFFE6E6E6FFE4E4E4FFE0E0E0FF9B9B9BFFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF009A9A9AFFE6E6E6FFE5E5E5FFE5E5E5FF676767FF929293FF919192FF8989
+      8AFFD3D3D3FFCE7FC7FFCE7FC7FFCE7FC7FFCE7FC7FFD3D3D3FF89898AFF9191
+      92FF808081FF676767FFE0DFE0FFE0DFE0FFDEDDDEFF9A9A9AFFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00979798FFE4E4E4FFE3E3E3FFE3E3E3FF616161FF8F8E8EFFCBCBCBFF8484
+      84FFD0D0CFFFCA7CC3FFCB7CC3FFCB7CC3FFCA7CC3FFCFCFD0FF848484FFCBCB
+      CBFF7F7F7FFF616161FFDFDEDFFFDFDFDFFFDDDDDDFF979798FFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00959596FFE2E2E2FFE1E1E2FFE1E2E1FF5B5B5BFF8A8A8AFFA2A2A2FF7F7F
+      80FFC0C0C0FFB038ACFFB038ACFFB038ACFFB038ACFFC0C0C0FF7F7F80FFA2A2
+      A2FF7C7C7CFF5B5B5BFFDEDEDEFFDEDEDEFFDDDDDDFF959596FFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00939393FFDADADAFFD8D8D8FFD8D8D8FF545455FF797979FF767676FF6969
+      69FFC9C9C9FFB206ADFFB206ADFFB206ADFFB206ADFFC9C9C9FF696969FF7676
+      76FF797979FF545455FFD3D3D3FFD3D3D3FFD5D5D5FF939393FFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00919191FFD8D8D8FFD6D6D6FFD6D6D6FF4E4E4FFF767677FFD3D3D3FF6565
+      66FFABABABFF601A68FF601A68FF601A68FF601A68FFABABABFF656566FFD3D3
+      D3FF767677FF4E4E4FFFD2D2D2FFD2D2D2FFD4D4D4FF919191FFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF008E8E8FFFD6D6D6FFD4D4D4FFD3D3D3FF484849FF737374FF979797FF5D5D
+      5DFFABABABFFABABABFFABABABFFABABABFFABABABFFABABABFF5D5D5DFF9797
+      97FF737374FF484849FFD2D2D2FFD2D2D2FFD4D4D4FF8E8E8FFFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF008C8C8DFFD5D5D5FFD3D3D3FFD2D2D2FF434343FF727272FF5C5C5CFF6565
+      66FF515152FF4C4C4DFF4C4C4DFF4C4C4DFF4C4C4DFF515152FF656566FF5C5C
+      5CFF727272FF434343FFD2D2D2FFD2D2D2FFD4D4D4FF8C8C8DFFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF008A8A8BFFD3D3D3FFD1D1D1FFD1D1D1FF3D3D3EFF656565FF4C4C4CFF5555
+      55FF3D3D3EFF3D3D3EFF3D3D3EFF3D3D3EFF3D3D3EFF3D3D3EFF555555FF4C4C
+      4CFF656565FF3D3D3EFFD1D1D1FFD1D1D1FFD3D3D3FF8A8A8BFFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00888889FFD2D2D2FFD0D0D0FFD0D0D0FF393939FF4E4E4FFF49494AFF4949
+      4AFF393939FFD0D0D0FFD0D0D0FFD0D0D0FFD0D0D0FF393939FF49494AFF4949
+      4AFF4E4E4FFF393939FFD0D0D0FFD0D0D0FFD2D2D2FF888889FFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00868687FFD0D0D0FFCECECEFFCECECEFF747474FF353535FF353535FF3535
+      35FF747474FFCECECEFFCECECEFFCECECEFFCECECEFF747474FF353535FF3535
+      35FF353535FF747474FFCECECEFFCECECEFFD0D0D0FF868687FFFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000848485FFCFCFCFFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCD
+      CDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCD
+      CDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCFCFCFFF848485FF000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0001828283FFCFCFCFFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCC
+      CCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCC
+      CCFFCCCCCCFFCCCCCCFFCCCCCCFFCCCCCCFFCFCFCFFF828283FF000000010000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008080
+      8002818182FFCECECEFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCB
+      CBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCB
+      CBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCECECEFF818182FF404040040000
+      0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005555
+      55037F7F80FFD9D9D9FFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDF
+      DFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDF
+      DFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFD9D9D9FF7F7F80FF555555060000
+      0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008080
+      80027E7E7F997E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E
+      7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E
+      7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7D7D7E9B404040040000
+      0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      000180808002666666054D4D4D0A5B5B5B0E5A5A5A1155555512595959145555
+      55185252521C5858581D5555551E5555551E5555551E5858581D5858581A5555
+      5515515151135A5A5A115555550F5555550C4949490755555503000000010000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000100000001808080028080800280808002555555034040
+      4004666666056666660555555506555555065555550666666605808080045555
+      5503808080028080800280808002000000010000000100000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00323232043232320F323232183232320F323232043232
+      3200323232003232320032323200323232003232320032323200323232003232
+      3200323232003232320032323200323232003232320032323200FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF003232320F138C6B7C09A87DD415856786323232293232
+      3212323232043232320032323200323232003232320032323200323232003232
+      3200323232003232320032323200323232003232320032323200FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00323232200AA57AD86BDFC9FF31C6A0FF09A77BE11389
+      69903232322B323232133232320567E9D80067E9D80067E9D80067E9D80067E9
+      D80067E9D80067E9D80067E9D80067E9D8003232320032323200FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF003232322A05B281FF68E4D0FF82E9D9FF7BE3CFFF3DC9
+      A5FF09A77AE8138B699C2F3A373332323216323232063232320167E9D80067E9
+      D80067E9D80067E9D80067E9D80067E9D8003232320032323200FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF003232322D05AF7EFF57E1CAFF5AE1CAFF6CE4D0FF80E8
+      D7FF7EE4D1FF47CBAAFF07B07FFF128C69A72B463E3A32323218323232073232
+      320167E9D80067E9D80067E9D80067E9D8003232320032323200FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF003232322D05AC7AFF57E0C8FF54DFC6FF54DFC6FF59DF
+      C8FF68E2CEFF7DE7D5FF82E6D2FF4DCCADFF0BAF7EFF118C67AE265345443232
+      321B323232093232320167E9D80067E9D8003232320032323200FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF003232322D06A876FF55DEC6FF52DDC4FF52DDC4FF52DD
+      C4FF52DDC4FF55DDC6FF64E1CBFF7AE6D3FF83E6D4FF56CEB0FF11AD7EFF108C
+      66B820634E573232321D3232320B323232023232320032323200FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF003232322D06A371FF53DDC4FF50DCC3FF50DCC3FF50DC
+      C3FF50DCC3FF50DCC3FF50DCC3FF53DDC3FF60E0C9FF75E4D1FF82E6D4FF5FD0
+      B4FF14AB7DFF0F8B63BF1D68505F3232321D3232320832323201FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF003232322D079F6DFF52DCC3FF4FDBC1FF4FDBC1FF4FDB
+      C1FF4FDBC1FF4FDBC1FF4FDBC1FF4FDBC1FF4FDBC1FF50DBC1FF5DDEC6FF73E3
+      CFFF82E5D3FF64D1B7FF1EAB7FFF108861BA2357463532323207FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF003232322D079B68FF50DAC1FF4ED9BFFF4ED9BFFF4ED9
+      BFFF4ED9BFFF4ED9BFFF4ED9BFFF4ED9BFFF4ED9BFFF4ED9BFFF4ED9BFFF4ED9
+      BFFF56DBC3FF5BDCC4FF57DBC2FF31BF9AFF10845C9D3232320DFFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF003232322D089663FF41D0B1FF3DCEADFF3DCEADFF3DCE
+      ADFF3DCEADFF3DCEADFF3DCEADFF3DCEADFF3DCEADFF3DCEADFF3ECFAEFF45D3
+      B4FF50D9BEFF51D6BBFF28B289FF099764FF264F403F32323207FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF003232322D09915EFF3ED0ADFF3ACDA9FF3ACDA9FF3ACD
+      A9FF3ACDA9FF3ACDA9FF3ACDA9FF3ACDA9FF3BCDAAFF41D1AFFF4DD8BAFF51D8
+      BCFF2CB28BFF0B9360FF157652A72F3835303232320D32323201FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF003232322D098D59FF3CCDAAFF38CAA6FF38CAA6FF38CA
+      A6FF38CAA6FF38CAA6FF39CAA7FF3ECEACFF49D4B6FF51D6BBFF31B58EFF0D91
+      5EFF14754FAE2E3C363832323216323232063232320032323200FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF003232322D0A8955FF3ACBA6FF35C8A2FF35C8A2FF35C8
+      A2FF35C8A2FF3ACBA7FF46D2B2FF4FD6BAFF34B691FF0F8F5CFF14744CB3264C
+      3C47323232193232320632323200323232003232320032323200FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF003232322D0A8450FF37CAA3FF32C79FFF32C79FFF37CA
+      A3FF42D1AEFF4CD6B8FF36B892FF118C5AFF137149B822523E533232321B3232
+      3208323232013232320032323200323232003232320032323200FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF003232322D0B804CFF35C7A1FF34C7A0FF3ECDAAFF4BD5
+      B7FF39B995FF158D5CFF136F46BF1F573E5F3232321D32323209323232013232
+      3200323232003232320032323200323232003232320032323200FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF003232322A0B7D48FF3ECDA9FF49D4B5FF3CBE99FF178D
+      5CFF126F44C81D5A3E6B323232203232320B3232320232323200323232003232
+      3200323232003232320032323200323232003232320032323200FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0032323220107143D837BB96FF198E5EFF116F42D21B5C
+      3D7A323232223232320C32323203323232003232320032323200323232003232
+      3200323232003232320032323200323232003232320032323200FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF003232320F18613D7C106F40D41A5E3C85323232253232
+      320E323232043232320032323200323232003232320032323200323232003232
+      3200323232003232320032323200323232003232320032323200FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00323232043232320F323232183232320F323232043232
+      3200323232003232320032323200323232003232320032323200323232003232
+      3200323232003232320032323200323232003232320032323200FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0004B7860004B7
+      860004B7860004B7860004B7860004B7860004B7860004B7860004B7861B04B7
+      866C04B786B704B786CC04B786FC04B786FC04B786CC04B786B704B7866C04B7
+      861B04B7860004B7860004B7860004B7860004B7860004B7860004B7860004B7
+      8600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0004B6840004B6
+      840004B6840004B6840004B6840004B6840004B6843304B6849C15BC8EFF4BCE
+      ACFF7DDFC8FF8BE4D0FFABEEE2FFABEEE2FF8BE4D0FF7DDFC8FF4BCEACFF15BC
+      8EFF04B6849C04B6843304B6840004B6840004B6840004B6840004B6840004B6
+      8400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0004B4830004B4
+      830067E9D80067E9D80067E9D80004B4838A14BA8CFF67D7BDFF9BEBDEFF86E8
+      D8FF71E5D3FF63E3CEFF5CE2CCFF5CE2CCFF63E3CEFF71E5D3FF86E8D8FF9BEB
+      DEFF67D7BDFF14BA8CFF04B4838A67E9D80067E9D80067E9D80004B4830004B4
+      8300FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0005B2800005B2
+      800067E9D80005B2800605B2809631C39CFF8FE7D7FF78E5D2FF60E2CCFF57E0
+      C9FF56E0C9FF56E0C9FF56E0C9FF56E0C9FF56E0C9FF56E0C9FF57E0C9FF60E2
+      CCFF78E5D2FF8FE7D7FF31C39CFF05B2809605B2800667E9D80005B2800005B2
+      8000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0005AF7E0005AF
+      7E0067E9D80005AF7E963EC7A4FF82E6D4FF67E3CFFF55DFC8FF55DFC8FF55DF
+      C8FF55DFC8FF55DFC8FF55DFC8FF55DFC8FF55DFC8FF55DFC8FF55DFC8FF55DF
+      C8FF55DFC8FF67E3CFFF82E6D4FF3EC7A4FF05AF7E9667E9D80005AF7E0005AF
+      7E00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0005AD7B0005AD
+      7B0005AD7B8A29BE94FF7AE4D0FF62E2CCFF54DFC6FF54DFC6FF54DFC6FF54DF
+      C6FF54DFC6FF54DFC6FF54DFC6FF54DFC6FF54DFC6FF54DFC6FF54DFC6FF54DF
+      C6FF54DFC6FF55DFC6FF62E2CCFF7AE4D0FF29BE94FF05AD7B8A05AD7B0005AD
+      7B00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0006AA790006AA
+      793611B082FF6ADDC7FF64E2CCFF53DEC6FF53DEC6FF53DEC6FF53DEC6FF53DE
+      C6FF53DEC6FF53DEC6FF53DEC6FF53DEC6FF53DEC6FF53DEC6FF53DEC6FF53DE
+      C6FF57DFC7FF54BBA9FF57DFC7FF64E2CCFF6ADDC7FF11B082FF06AA793606AA
+      7900FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0006A7750006A7
+      759F3EC7A6FF68E0CAFF53DDC5FF52DDC4FF52DDC4FF52DDC4FF52DDC4FF52DD
+      C4FF52DDC4FF52DDC4FF52DDC4FF52DDC4FF52DDC4FF52DDC4FF52DDC4FF59DF
+      C7FF56BAA8FF3B4E4BFF5EE0C8FF53DDC5FF68E0CAFF3EC7A6FF06A7759F06A7
+      7500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0006A4722111AB
+      7CFF5BDABFFF5BDFC6FF51DCC3FF51DCC3FF51DCC3FF51DCC3FF51DCC3FF51DC
+      C3FF51DCC3FF51DCC3FF51DCC3FF51DCC3FF51DCC3FF51DCC3FF5ADEC6FF5CC2
+      AFFF39403FFF46726AFF5DDFC7FF51DCC3FF5BDFC6FF5BDABFFF11AB7CFF06A4
+      7221FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0007A16F7827B9
+      91FF5ADBC1FF51DBC1FF50DBC1FF50DBC1FF50DBC1FF50DBC1FF50DBC1FF50DB
+      C1FF50DBC1FF50DBC1FF50DBC1FF50DBC1FF50DBC1FF5BDDC5FF63CEBAFF3E4B
+      48FF40534FFF65D6C1FF56DCC3FF50DBC1FF51DBC1FF5ADBC1FF27B991FF07A1
+      6F78FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00079E6CBD32C5
+      A1FF57DBC2FF4EDAC0FF4EDAC0FF4EDAC0FF4EDAC0FF4EDAC0FF4EDAC0FF4EDA
+      C0FF4EDAC0FF4EDAC0FF4EDAC0FF4EDAC0FF59DCC4FF67D2BEFF435350FF3D40
+      3FFF62C1AFFF5BDDC4FF4EDAC0FF4EDAC0FF4EDAC0FF57DBC2FF32C5A1FF079E
+      6CBDFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00079B68E43CCC
+      ABFF53DBC0FF4ED9BFFF4ED9BFFF4FD9BFFF55DBC2FF55DBC2FF55DBC2FF4ED9
+      BFFF4ED9BFFF4ED9BFFF4ED9BFFF59DCC3FF6FDBC7FF4A625EFF404040FF5DA1
+      94FF62DEC6FF4ED9BFFF4ED9BFFF4ED9BFFF4ED9BFFF53DBC0FF3CCCABFF079B
+      68E4FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00089865F940D1
+      AFFF4FD9BEFF4CD9BDFF4DD9BDFF74DEC9FF6BC2B1FF6BC2B1FF6BC2B1FF74E0
+      CAFF56DBC1FF4CD9BDFF56DBC1FF74DEC9FF516E68FF434343FF557B73FF67DF
+      C7FF4CD9BDFF4CD9BDFF4CD9BDFF4CD9BDFF4CD9BDFF4FD9BEFF40D1AFFF0898
+      65F9FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00089461F940CF
+      ADFF3DCEACFF3CCDABFF3CCDABFF59D4B7FF58877CFF474747FF474747FF5579
+      71FF6FD8C0FF47D0B0FF5DD5B9FF557B72FF474747FF4D5D5AFF6DD3BBFF48D0
+      B0FF3CCDABFF3CCDABFF3CCDABFF3CCDABFF3CCDABFF3DCEACFF40CFADFF0894
+      61F9FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0009915EE43BC9
+      A6FF3DCEACFF3ACCA9FF3ACCA9FF43CEADFF60D6B9FF597D74FF4A4A4AFF4A4A
+      4AFF5A8177FF69D8BDFF5D8B80FF4A4A4AFF4B4F4EFF6DC3AEFF53D3B4FF3ACC
+      A9FF3ACCA9FF3ACCA9FF3ACCA9FF3ACCA9FF3ACCA9FF3DCEACFF3BC9A6FF0991
+      5EE4FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00098E5ABA32BE
+      98FF3DCEACFF38CBA7FF38CBA7FF38CBA7FF47CFAEFF77D9C0FF5B7972FF4E4E
+      4EFF4E4E4EFF566964FF4E4E4EFF4E4E4EFF68A596FF5BD4B6FF38CBA7FF38CB
+      A7FF38CBA7FF38CBA7FF38CBA7FF38CBA7FF38CBA7FF3DCEACFF32BE98FF098E
+      5ABAFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00098B577823AC
+      80FF3FCFADFF36CAA5FF36CAA5FF36CAA5FF36CAA5FF4ACFAEFF7AD7C1FF5A6E
+      6AFF515151FF515151FF515151FF61847BFF62D5B9FF36CAA5FF36CAA5FF36CA
+      A5FF36CAA5FF36CAA5FF36CAA5FF36CAA5FF36CAA5FF3FCFADFF23AC80FF098B
+      5778FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000A88541B1090
+      5EFF41CFADFF3ACBA7FF35C8A2FF35C8A2FF35C8A2FF35C8A2FF52D0AFFF7ED5
+      BEFF5C6C68FF545454FF5B6B67FF7FD8C1FF46CDAAFF35C8A2FF35C8A2FF35C8
+      A2FF35C8A2FF35C8A2FF35C8A2FF35C8A2FF3ACBA7FF41CFADFF10905EFF0A88
+      541BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000A8550000A85
+      50962CB288FF3FCFACFF34C7A1FF33C7A0FF33C7A0FF33C7A0FF33C7A0FF55D0
+      B0FF80CFBAFF5E6E6AFF7DC7B4FF56D0B0FF33C7A0FF33C7A0FF33C7A0FF33C7
+      A0FF33C7A0FF33C7A0FF33C7A0FF34C7A1FF3FCFACFF2BB288FF0A8550960A85
+      5000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000A824D000A82
+      4D2D0F8956FF41CBAAFF3BCBA7FF32C59EFF32C59EFF32C59EFF32C59EFF32C5
+      9EFF56CFAFFF88DCC6FF56CFAFFF32C59EFF32C59EFF32C59EFF32C59EFF32C5
+      9EFF32C59EFF32C59EFF32C59EFF3BCBA7FF41CBAAFF108A57FF0A824D2D0A82
+      4D00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000B7F4B000B7F
+      4B000B7F4B871C9668FF44D0B0FF38C9A4FF30C49CFF30C49CFF30C49CFF30C4
+      9CFF30C49CFF31C49DFF30C49CFF30C49CFF30C49CFF30C49CFF30C49CFF30C4
+      9CFF30C49CFF30C49CFF38C9A4FF44D0B0FF1C9668FF0B7F4B870B7F4B000B7F
+      4B00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000B7D48000B7D
+      48000B7D48000B7D4893239F72FF45D1B0FF39C9A4FF30C39BFF2FC39AFF2FC3
+      9AFF2FC39AFF2FC39AFF2FC39AFF2FC39AFF2FC39AFF2FC39AFF2FC39AFF2FC3
+      9AFF30C39BFF39C9A4FF45D1B0FF239F72FF0B7D48930B7D48000B7D48000B7D
+      4800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000B7A46000000
+      000180808002666666050D7946971D9466FF47D1B0FF3FCEABFF33C69FFF2DC2
+      99FF2DC299FF2DC299FF2DC299FF2DC299FF2DC299FF2DC299FF2DC299FF33C6
+      9FFF3FCEABFF47D1B0FF1D9466FF0D7946984949490755555503000000010B7A
+      4600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000C7843008080
+      80026D6D6D0755555512555555211773469D107E4BFF34B18AFF4AD4B5FF43D0
+      AFFF3ACAA5FF33C69EFF30C49BFF30C49BFF33C69EFF3ACAA5FF43D0AFFF4AD4
+      B5FF34B18AFF107E4BFF1874469F57575726555555185D5D5D0B404040040000
+      0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000C7642005555
+      55035D5D5D0B5858581D575757355858584B3C6450761C7047BD127F4DFF289E
+      73FF3DBD99FF43C6A4FF4DD4B6FF4DD4B6FF43C6A4FF3DBD99FF289E73FF127F
+      4DFF1C7047BE3C645079585858515656563E5757572655555512555555060000
+      0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000C7540008080
+      80026D6D6D0755555512555555215757572F575757385959593C42615152226C
+      4790147243CA127342DC0D7440F50D7440F5127342DC157243CB236C47924362
+      52535858583D595959395A5A5A3357575726555555185D5D5D0B404040040000
+      0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000C7540000000
+      000180808002666666054D4D4D0A5B5B5B0E5A5A5A1155555512595959145555
+      55185252521C5858581D5555551E5555551E5555551E5858581D5858581A5555
+      5515515151135A5A5A115555550F5555550C4949490755555503000000010C75
+      4000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000C7540000C75
+      40000C7540000000000100000001808080028080800280808002555555034040
+      4004666666056666660555555506555555065555550666666605808080045555
+      550380808002808080028080800200000001000000010C7540000C7540000C75
+      4000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000B3FD5000B3F
+      D5000B3FD5000B3FD5000B3FD5000B3FD5000B3FD5000B3FD5000B3FD51B0B3F
+      D56C0B3FD5B70B3FD5CC0B3FD5FC0B3FD5FC0B3FD5CC0B3FD5B70B3FD56C0B3F
+      D51B0B3FD5000B3FD5000B3FD5000B3FD5000B3FD5000B3FD5000B3FD5000B3F
+      D500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000B3FD4000B3F
+      D4000B3FD4000B3FD4000B3FD4000B3FD4000B3FD4330B3FD49C194BD7FF4971
+      DFFF7594E7FF819DEAFF9DB4EFFF9DB4EFFF819DEAFF7594E7FF4971DFFF194B
+      D7FF0B3FD49C0B3FD4330B3FD4000B3FD4000B3FD4000B3FD4000B3FD4000B3F
+      D400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000B3ED3000B3E
+      D300FFFFFF00FFFFFF00FFFFFF000B3ED38A1849D6FF6183E4FF8FA8EDFF819E
+      EAFF7090E8FF5D82E5FF587EE4FF587EE4FF5D82E5FF7090E8FF819EEAFF8FA8
+      EDFF6183E4FF1849D6FF0B3ED38AFFFFFF00FFFFFF00FFFFFF000B3ED3000B3E
+      D300FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000B3ED2000B3E
+      D200FFFFFF000B3ED2060B3ED296305CD9FF819EEAFF7393E7FF5C82E4FF4E77
+      E1FF4D76E1FF4D76E1FF4D76E1FF4D76E1FF4D76E1FF4D76E1FF4E77E1FF5C82
+      E4FF7393E7FF819EEAFF305CD9FF0B3ED2960B3ED206FFFFFF000B3ED2000B3E
+      D200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000B3ED0000B3E
+      D000FFFFFF000B3ED0963963DAFF7896E8FF6789E5FF4E76E1FF4C75E1FF4C75
+      E1FF4C75E1FF4C75E1FF4C75E1FF4C75E1FF4C75E1FF4C75E1FF4C75E1FF4C75
+      E1FF4E76E1FF6789E5FF7896E8FF3963DAFF0B3ED096FFFFFF000B3ED0000B3E
+      D000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000A3DCF000A3D
+      CF000A3DCF8A2553D6FF6D8EE7FF6284E5FF4B73E1FF4B73E1FF4B73E1FF4B73
+      E1FF4B73E1FF4B73E1FF4B73E1FF4B73E1FF4B73E1FF4B73E1FF4B73E1FF4B73
+      E1FF4B73E1FF4B73E1FF6284E5FF6D8EE7FF2553D6FF0A3DCF8A0A3DCF000A3D
+      CF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000A3CCD000A3C
+      CD361243CFFF567DE2FF6487E5FF4A73E1FF4A73E1FF4A73E1FF4A73E1FF4A73
+      E1FF4A73E1FF4A73E1FF4A73E1FF4A73E1FF4A73E1FF4A73E1FF4A73E1FF4A73
+      E1FF4A73E1FF4A73E1FF4A73E1FF6487E5FF567DE2FF1243CFFF0A3CCD360A3C
+      CD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000A3CCB000A3C
+      CB9F2F5CD9FF6084E5FF4A73E1FF4872E1FF4872E1FF4872E1FF4872E1FF4872
+      E1FF4872E1FF4872E1FF4872E1FF4872E1FF4872E1FF4872E1FF4872E1FF4872
+      E1FF4872E1FF4872E1FF4872E1FF4A73E1FF6084E5FF2F5CD9FF0A3CCB9F0A3C
+      CB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000A3BC9211141
+      CCFF436DE0FF577CE3FF4770E0FF4770E0FF4770E0FF4770E0FF4770E0FF4770
+      E0FF4770E0FF4770E0FF4770E0FF4770E0FF4770E0FF4770E0FF4770E0FF4770
+      E0FF4770E0FF4770E0FF4770E0FF4770E0FF577CE3FF436DE0FF1141CCFF0A3B
+      C921FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000A3BC8781A4B
+      D1FF4972E1FF456FE0FF456EE0FF456EE0FF456EE0FF456EE0FF456EE0FF456E
+      E0FF456EE0FF456EE0FF456EE0FF456EE0FF456EE0FF456EE0FF456EE0FF456E
+      E0FF456EE0FF456EE0FF456EE0FF456EE0FF456FE0FF4972E1FF1A4BD1FF0A3B
+      C878FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000A3AC6BD1D4D
+      D5FF4C74E1FF446DE0FF446DE0FF446DE0FF446DE0FF446DE0FF446DE0FF446D
+      E0FF446DE0FF446DE0FF446DE0FF446DE0FF446DE0FF446DE0FF446DE0FF446D
+      E0FF446DE0FF446DE0FF446DE0FF446DE0FF446DE0FF4C74E1FF1D4DD5FF0A3A
+      C6BDFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000939C4E41F51
+      D8FF4971E0FF426CDFFF426CDFFF426CDFFF4D74E1FF323232FF323232FF3232
+      32FF323232FF323232FF323232FF323232FF323232FF323232FF323232FF3232
+      32FF323232FF4D74E1FF426CDFFF426CDFFF426CDFFF4971E0FF1F51D8FF0939
+      C4E4FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000939C2F91F52
+      D9FF426CDFFF406ADFFF406ADFFF406ADFFF5A7EE3FF3A3A3AFF3A3A3AFF3A3A
+      3AFF3A3A3AFF3A3A3AFF3A3A3AFF3A3A3AFF3A3A3AFF3A3A3AFF3A3A3AFF3A3A
+      3AFF3A3A3AFF5A7EE3FF406ADFFF406ADFFF406ADFFF426CDFFF1F52D9FF0939
+      C2F9FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000938BFF91F53
+      DAFF1E50D9FF1D4FD9FF1D4FD9FF1D4FD9FF5177E2FF454545FF454545FF4545
+      45FF454545FF454545FF454545FF454545FF454545FF454545FF454545FF4545
+      45FF454545FF5177E2FF1D4FD9FF1D4FD9FF1D4FD9FF1E50D9FF1F53DAFF0938
+      BFF9FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000938BDE41E4F
+      D9FF1D4FDAFF1B4CD9FF1B4CD9FF1B4CD9FF6486E5FF505050FF505050FF5050
+      50FF505050FF505050FF505050FF505050FF505050FF505050FF505050FF5050
+      50FF505050FF6486E5FF1B4CD9FF1B4CD9FF1B4CD9FF1D4FDAFF1E4FD9FF0938
+      BDE4FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000937BBBA184B
+      D3FF1C50DAFF184BD8FF184BD8FF184BD8FF4E75E1FF7493E7FF7493E7FF7493
+      E7FF7493E7FF7493E7FF7493E7FF7493E7FF7493E7FF7493E7FF7493E7FF7493
+      E7FF7493E7FF4E75E1FF184BD8FF184BD8FF184BD8FF1C50DAFF184BD3FF0937
+      BBBAFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000836B9781344
+      C9FF1D51DBFF1749D7FF1749D7FF1749D7FF1749D7FF1749D7FF1749D7FF1749
+      D7FF1749D7FF1749D7FF1749D7FF1749D7FF1749D7FF1749D7FF1749D7FF1749
+      D7FF1749D7FF1749D7FF1749D7FF1749D7FF1749D7FF1D51DBFF1344C9FF0836
+      B978FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000836B81B0A39
+      BCFF1E54DCFF194DD9FF1548D7FF1548D7FF1548D7FF1548D7FF1548D7FF1548
+      D7FF1548D7FF1548D7FF1548D7FF1548D7FF1548D7FF1548D7FF1548D7FF1548
+      D7FF1548D7FF1548D7FF1548D7FF1548D7FF194DD9FF1E54DCFF0A39BCFF0836
+      B81BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000835B6000835
+      B6961548CDFF1B52DBFF1347D6FF1346D6FF1346D6FF1346D6FF1346D6FF1346
+      D6FF1346D6FF1346D6FF1346D6FF1346D6FF1346D6FF1346D6FF1346D6FF1346
+      D6FF1346D6FF1346D6FF1346D6FF1347D6FF1B52DBFF1548CDFF0835B6960835
+      B600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000835B4000835
+      B42D0A38B8FF1C53DCFF174DDAFF1144D6FF1144D6FF1144D6FF1144D6FF1144
+      D6FF1144D6FF1144D6FF1144D6FF1144D6FF1144D6FF1144D6FF1144D6FF1144
+      D6FF1144D6FF1144D6FF1144D6FF174DDAFF1C53DCFF0A38B8FF0835B42D0835
+      B400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000834B2000834
+      B2000834B2870E3EBFFF1D57DEFF144AD9FF0F43D6FF0F43D6FF0F43D6FF0F43
+      D6FF0F43D6FF0F43D6FF0F43D6FF0F43D6FF0F43D6FF0F43D6FF0F43D6FF0F43
+      D6FF0F43D6FF0F43D6FF144AD9FF1D57DEFF0E3EBFFF0834B2870834B2000834
+      B200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000733B1000733
+      B1000733B1000733B1931142C4FF1E57DFFF154BDAFF0E43D6FF0E42D6FF0E42
+      D6FF0E42D6FF0E42D6FF0E42D6FF0E42D6FF0E42D6FF0E42D6FF0E42D6FF0E42
+      D6FF0E43D6FF154BDAFF1E57DFFF1142C4FF0733B1930733B1000733B1000733
+      B100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000733AF000000
+      000180808002666666050934AC970E3FBEFF1F5AE0FF1951DDFF1145D8FF0D40
+      D6FF0D40D6FF0D40D6FF0D40D6FF0D40D6FF0D40D6FF0D40D6FF0D40D6FF1145
+      D8FF1951DDFF1F5AE0FF0E3FBEFF0934AC984949490755555503000000010733
+      AF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000733AE008080
+      80026D6D6D0755555512555555211238A29D0936B2FF184FCEFF215DE2FF1C56
+      DFFF164DDBFF1147D8FF0F44D7FF0F44D7FF1147D8FF164DDBFF1C56DFFF215D
+      E2FF184FCEFF0936B2FF1339A19F57575726555555185D5D5D0B404040040000
+      0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000732AD005555
+      55035D5D5D0B5858581D575757355858584B3A4A7976183A9CBD0936B2FF1345
+      C3FF1B55D5FF1E59DAFF2260E2FF2260E2FF1E59DAFF1B55D5FF1345C3FF0936
+      B2FF183A9BBE3A4A7879585858515656563E5757572655555512555555060000
+      0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000732AC008080
+      80026D6D6D0755555512555555215757572F575757385959593C404D71521E3D
+      93901036A3CA0D35A6DC0933AAF50933AAF50D35A6DC1036A3CB1F3D9292424E
+      72535858583D595959395A5A5A3357575726555555185D5D5D0B404040040000
+      0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000732AC000000
+      000180808002666666054D4D4D0A5B5B5B0E5A5A5A1155555512595959145555
+      55185252521C5858581D5555551E5555551E5555551E5858581D5858581A5555
+      5515515151135A5A5A115555550F5555550C4949490755555503000000010732
+      AC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000732AC000732
+      AC000732AC000000000100000001808080028080800280808002555555034040
+      4004666666056666660555555506555555065555550666666605808080045555
+      550380808002808080028080800200000001000000010732AC000732AC000732
+      AC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00646464006464
+      6400646464006464640064646400646464006464640064646400CD7C3D1BCD7C
+      3D6CCD7C3DB7CD7C3DCCCD7C3DFCCD7C3DFCCD7C3DCCCD7C3DB7CD7C3D6CCD7C
+      3D1B646464006464640064646400646464006464640064646400CD7C3D00CD7C
+      3D00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00646464006464
+      640064646400646464006464640064646400CC7B3D33CC7B3D9CD1874BFFE0AC
+      77FFEDCD9FFFECD2A7FFF1E5BEFFF6E9C2FFF1D6ABFFEECEA0FFE0AC77FFD187
+      4BFFCC7B3D9CCC7B3D3364646400646464006464640064646400CC7B3D00CC7B
+      3D00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00646464006464
+      6400FFFFFF00FFFFFF00FFFFFF00CB7A3C8ACD8448FFDDB789FFEADCB3FFF0E1
+      B6FFF0E1B3FFE6DAB4FFECE7D8FFE9DAAEFFEEDEABFFEFE0B3FFF2E4B8FFF7E9
+      BCFFE8C08FFFD08649FFCB7A3C8AFFFFFF00FFFFFF00FFFFFF00CB7A3C00CB7A
+      3C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00646464006464
+      6400FFFFFF00CA793B06C8783B97D1965EFFE1D1A6FFE3DCC9FFEFEDE9FFD8CB
+      B3FFC0A780FFC1AD9AFFB8A18BFFB49B80FFBBA385FFC8B59FFFD9C9ABFFEFDD
+      B0FFF7E6B6FFF7E4B4FFD89B61FFCA793B96CA793B06FFFFFF00CA793B00CA79
+      3B00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00646464006464
+      6400FFFFFF00C7763B97D39E68FFDED1AEFFECEAE4FFE5E0DBFFC4B09FFFB09E
+      8EFFA89F96FFA9A49FFFA7A7A6FFA7A7A6FFA9A49FFFA9A098FFB09E8EFFC0A7
+      8AFFE5D09EFFF8E7B9FFF8E6B3FFDDA66DFFC9773B96FFFFFF00C9773B00C977
+      3B00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00646464006464
+      6400C6743A8BCC8E56FFDCCFAFFFEDEDECFFD9CFC6FFB9A08AFFADA39BFFB2B2
+      B2FFBCBCBCFFC3C3C3FFC7C7C7FFC7C7C7FFC3C3C3FFBCBCBCFFB2B2B2FFADA2
+      99FFB69366FFE2C895FFF8E5B6FFF7E1ADFFD6955AFFC8753A8AC8753A00C875
+      3A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0064646400C574
+      3A37C47A40FFD6C39BFFEDECECFFD9CEC5FFAF9F92FFB2ADAAFFC1C1C1FFCECE
+      CEFFD6D6D6FFDBDBDBFFB9B9B9FFB9B9B9FFDBDBDBFFD6D6D6FFCDCDCEFFC0C0
+      C1FFB1A89EFFB29878FFE4C994FFF7E4B5FFF2D698FFCC7F43FFC77439366464
+      6400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0064646400C070
+      39A2CCA36FFFE7E5E3FFE1DBD6FFBA9F8AFFB8B3B0FFCBCBCBFFD9D9D9FFE2E2
+      E2FFE7E7E7FFE9E9E9FFBBBBBBFF5E5E5EFFE9E9E9FFE7E7E7FFE2E2E2FFD8D8
+      D8FFC9C9C9FFB7ADA0FFC09969FFECD29FFFF5DEAAFFE0AE6DFFC572399F6464
+      6400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C4703821C478
+      40FFD5C8ACFFE7E7E7FFC4AD9CFFB8AEA7FFCECECEFFDFDFDFFFE8E8E8FFECEC
+      ECFFEDEDEDFFEDEDEDFFEDEDEDFF616161FFEDEDEDFFEDEDEDFFECECECFFE7E7
+      E7FFDDDDDDFFCCCCCDFFB9A894FFCEA979FFF5DEAFFFF0CF8EFFCA7C42FFC470
+      3821FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C26E3778D194
+      55FFD9C59FFFD0C5BAFFB6A192FFCCCCCDFFE0E0E0FFEAEAEAFFEDEDEDFFEEEE
+      EEFFEEEEEEFFEEEEEEFFEEEEEEFF616161FFEEEEEEFFEEEEEEFFEEEEEEFFEDED
+      EDFFE9E9E9FFDEDEDEFFCACACBFFBB9A77FFE7C997FFF1D499FFD69857FFC26E
+      3778FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C16C36BDDFAA
+      63FFEACE9CFFC1A27FFFC0B4ACFFDCDCDDFFEBEBEBFFEFEFEFFFF0F0F0FFF0F0
+      F0FFF0F0F0FFF0F0F0FFF0F0F0FF616161FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0
+      F0FFEFEFEFFFEAEAEAFFDBDBDBFFC1AE9BFFD4AE7EFFF2D5A0FFE0AB63FFC16C
+      36BDFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BF6A35E4E5B5
+      6CFFEFD3A2FFBE966DFFCEC9C5FFE6E6E6FFF0F0F0FFF1F1F1FFF1F1F1FFF1F1
+      F1FFF1F1F1FFF1F1F1FFF1F1F1FF616161FFF1F1F1FFF1F1F1FFF1F1F1FFF1F1
+      F1FFF1F1F1FFEFEFEFFFE6E6E6FFCDC6BFFFC3976BFFECD1A0FFE4B46BFFBF6A
+      35E4FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BD6834F9E8BA
+      6FFFEFD1A0FFBD9064FFDCDAD8FFEEEEEEFFBFBFBFFFBFBFBFFF7E7E7EFFBABA
+      BAFFEEEEEEFFF3F3F3FFF3F3F3FF616161FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3
+      F3FFBFBFBFFFBFBFBFFFEDEDEDFFDCDBDAFFBD9A7FFFE2CCAAFFE2B56CFFBD68
+      34F9FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BC6533F9E7B8
+      6EFFE6B76BFFBA8147FFE0DDDBFFF1F1F1FFBDBDBDFFBDBDBDFFE5E5E5FFA3A3
+      A3FF707070FF9C9C9CFFDADADAFF616161FFF4F4F4FFF4F4F4FFF4F4F4FFF4F4
+      F4FFBDBDBDFFBDBDBDFFF1F1F1FFE2E2E3FFB89681FFD4CBBDFFDBAF68FFBC65
+      33F9FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BA6332E4E1AF
+      68FFE8BC79FFBF8953FFE0D8D3FFF5F5F5FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
+      F6FFF2F2F2FFBCBCBCFF767676FF616161FFC7C7ECFFF6F6F6FFF6F6F6FFF6F6
+      F6FFF6F6F6FFF6F6F6FFF5F5F5FFE4E0DEFFBB9B89FFCAB798FFD6A766FFBA63
+      32E4FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B86131BADA9F
+      5DFFE7BB79FFC49360FFD7C8BFFFF6F6F6FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7
+      F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFCCCCEEFFC9C9EDFFF7F7F7FFF7F7
+      F7FFF7F7F7FFF7F7F7FFF6F6F6FFD9CCC4FFC4AB9EFFCFC6B8FFCD9658FFB861
+      31BAFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B75F3078CD87
+      4DFFE4B775FFCEA77BFFC7A999FFF6F6F6FFF9F9F9FFF9F9F9FFF9F9F9FFF9F9
+      F9FFF9F9F9FFF9F9F9FFF9F9F9FFF9F9F9FFF9F9F9FFCECEF0FFCACAEFFFF9F9
+      F9FFF9F9F9FFF9F9F9FFF7F7F7FFCBB1A4FFCBBEB8FFCDC3B4FFC28049FFB75F
+      3078FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B55D2F1BBA66
+      35FFE2B26BFFD8B586FFC3A596FFDCC9BEFFFAFAFAFFFAFAFAFFFAFAFAFFFAFA
+      FAFFFAFAFAFFFAFAFAFFFAFAFAFFFAFAFAFFFAFAFAFFFAFAFAFFCDCDF0FFCCCC
+      F0FFFAFAFAFFFAFAFAFFE4D7D1FFBE9B8AFFD2D1D1FFC8AC83FFB56333FFB55D
+      2F1BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0064646400B45B
+      2E96D08E53FFDBB179FFCCBCAEFFBB8F79FFE9D9CDFFFBFBFBFFFBFBFBFFFBFB
+      FBFFFBFBFBFFFBFBFBFFC2C2C2FFC2C2C2FFFBFBFBFFFBFBFBFFFBFBFBFFCDCD
+      F1FFFBFBFBFFF3EEECFFCBAD9FFFCBC0BAFFCBC1B2FFC2854DFFB25B2E976464
+      6400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0064646400B259
+      2E2DB76134FFDBA866FFD2B590FFCBBCB6FFCFA78CFFEFE1D7FFFCFCFCFFFCFC
+      FCFFFCFCFCFFFCFCFCFFBFBFBFFFBFBFBFFFFCFCFCFFFCFCFCFFFCFCFCFFFCFC
+      FCFFF4EFEDFFD4BCB0FFC7B2A9FFCECBC7FFCCA46EFFB46034FFB2592E2D6464
+      6400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00646464006464
+      6400B1582D87BE713FFFD7AA6CFFCDBFADFFC8A486FFC08358FFE3C9B8FFFDFD
+      FDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFE7D8
+      D1FFBD937FFFC7B3A9FFCECDCCFFCAAA80FFB96E3DFFB1582D87EBEBEB006464
+      6400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00646464006464
+      6400EBEBEB00B0562C93C27946FFD1A76DFFCDC0B2FFD5CAC5FFC69F8AFFCA9F
+      88FFE3D1C8FFF1E9E5FFF9F5F4FFFAF8F7FFF1E9E5FFE6D6CFFFD0B0A2FFC09C
+      8CFFC9BEB9FFCAC9C8FFC2A781FFBC7544FFAE562C94EBEBEB00EBEBEB006464
+      6400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00646464000000
+      00018080800266666605AC542D97B96C3EFFC8A373FFBFB8AEFFCECECFFFCDC3
+      BEFFC5A89AFFC19D8EFFBF9584FFBE9482FFC19D8DFFC3A69AFFC7BAB5FFC8C8
+      C8FFBCB6AEFFC29E6FFFB66B3DFFAA532D994949490755555503000000016464
+      6400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00646464008080
+      80026D6D6D075555551255555521A154319EAD582FFFC18552FFC3A171FFB49F
+      85FFB7AEA4FFC0BEBDFFC0C0C0FFC0C0C1FFC0C0C0FFBBB5AFFFB3A38EFFBFA1
+      77FFC08552FFAD582FFFA05432A057575726555555185D5D5D0B404040040000
+      0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00646464005555
+      55035D5D5D0B5858581D575757355858584B795647769B5334BEAF5A30FFBC76
+      46FFC8925BFFC8985FFFC7A471FFC4A474FFC69760FFC7915AFFBB7645FFAD5A
+      30FF9A5234BF78564779585858515656563E5757572655555512555555060000
+      0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00646464008080
+      80026D6D6D0755555512555555215757572F575757385959593C71564A529353
+      3790A3522FCAA6522DDCA8502AF5A8502AF5A5512DDCA3522FCB925338927257
+      4C535858583D595959395A5A5A3357575726555555185D5D5D0B404040040000
+      0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00AC512A000000
+      000180808002666666054D4D4D0A5B5B5B0E5A5A5A1155555512595959145555
+      55185252521C5858581D5555551E5555551E5555551E5858581D5858581A5555
+      5515515151135A5A5A115555550F5555550C4949490755555503000000016464
+      6400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00AC512A00AC51
+      2A00646464000000000100000001808080028080800280808002555555034040
+      4004666666056666660555555506555555065555550666666605808080045555
+      5503808080028080800280808002000000010000000164646400646464006464
+      6400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DC982C96DC98
+      2CFFDC982CFFDC982CFFDC982CFFDC982CFFDC982CFFDC982CFFDC982CFFDC98
+      2CFFDC982CFFDC982CFFDC982C96FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D9932AFFF9E5
+      A7FFF9E7ACFFF9E7AEFFF9E7AEFFF9E7AEFFF9E7AEFFF9E7AEFFF9E7AEFFF9E7
+      AEFFF9E7ACFFF9E5A7FFD9932AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00ABABAB00D48B27FFF4DA
+      93FFF3D482FFF3D584FFF3D584FFF3D584FFF3D584FFF3D584FFF3D584FFF3D5
+      84FFF3D482FFF4DA93FFD48B27FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00ABABAB00CF8224FFEFCD
+      82FFECC265FFECC265FFECC265FFECC265FFECC265FFECC265FFECC265FFECC2
+      65FFECC265FFEFCD82FFCF8224FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00ABABAB00C97920FFEBBF
+      6FFFE6B14EFFE6B14EFFE6B14EFFE6B14EFFE6B14EFFE6B14EFFE6B14EFFE6B1
+      4EFFE6B14EFFEBBF6FFFC97920FF585858005858580058585800585858005858
+      5800585858005858580058585800585858005858580058585800585858005858
+      5800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00ABABAB00B59371FFABAB
+      ABFFABABABFFABABABFFABABABFFABABABFFABABABFFABABABFFABABABFFABAB
+      ABFFABABABFFABABABFFABABABFFABABABFFABABABFFABABABFFABABABFFABAB
+      ABFFABABABFFABABABFFABABABFFABABABFFABABABFFABABABFFABABAB965858
+      5800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0058585802AAAAAAFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAFF5858
+      5802FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0058585807A9A9A9FFFEFE
+      FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE
+      FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE
+      FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFA9A9A9FF5858
+      5807FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005858580EA7A7A7FFFAFA
+      FAFFFBFBFBFFBABABAFFDBDBDBFFBABABAFFFCFCFCFFFCFCFCFFFCFCFCFFFCFC
+      FCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFC
+      FCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFBFBFBFFFAFAFAFFA7A7A7FF5858
+      580EFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0058585813A5A5A6FFF9F9
+      F9FFF9F9F9FFAEAEAEFFA4A4A4FFAEAEAEFF8E8E8EFFAFAFAFFFAFAFAFFF8E8E
+      8EFFAFAFAFFFFBFBFBFFFBFBFBFFFBFBFBFFFBFBFBFFFBFBFBFFFBFBFBFFFBFB
+      FBFFFAFAFAFFFAFAFAFFFAFAFAFFFAFAFAFFF9F9F9FFF9F9F9FFA5A5A6FF5858
+      5813FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0058585815A4A4A4FFF7F7
+      F7FFF7F7F7FFADADADFFE3E3E3FF8D8D8DFF8D8D8DFFA3A3A3FFADADADFF9898
+      98FFB9B9B9FFCECECEFFCECECEFFCECECEFFF9F9F9FFF9F9F9FFF8F8F8FFF8F8
+      F8FFF8F8F8FFF8F8F8FFF8F8F8FFF8F8F8FFF7F7F7FFF7F7F7FFA4A4A4FF5858
+      5815FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0058585815A2A2A2FFF5F5
+      F5FFF3F3F3FFF4F4F4FFF4F4F4FFF5F5F5FFF5F5F5FFF5F5F5FFF5F5F5FFF5F5
+      F5FFF5F5F5FFF5F5F5FFF6F6F6FFF5F5F5FFF5F5F5FFF5F5F5FFF5F5F5FFF5F5
+      F5FFF5F5F5FFF5F5F5FFF4F4F4FFF4F4F4FFF3F3F3FFF5F5F5FFA2A2A2FF5858
+      5815FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0058585815A0A0A0FFF3F3
+      F3FFF0F0F0FFC8C8C8FFAAAAAAFFC9C9C9FFF2F2F2FFF2F2F2FFF2F2F2FFF2F2
+      F2FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF2F2F2FFF2F2F2FFF2F2
+      F2FFF2F2F2FFF2F2F2FFF1F1F1FFF1F1F1FFF0F0F0FFF3F3F3FFA0A0A0FF5858
+      5815FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858159D9D9EFFF1F1
+      F1FFEEEEEEFFA9A9A9FFEFEFEFFFA9A9A9FF9F9F9FFF959595FFAAAAAAFF8181
+      81FFDDDDDDFF8B8B8BFF9F9F9FFFF1F1F1FFF1F1F1FFF1F1F1FFF1F1F1FFF0F0
+      F0FFF0F0F0FFF0F0F0FFEFEFEFFFEFEFEFFFEEEEEEFFF1F1F1FF9D9D9EFF5858
+      5815FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858159B9B9BFFF0F0
+      F0FFECECECFFB1B1B1FFA7A7A7FFB1B1B1FF9E9E9EFF949494FFA8A8A8FF8080
+      80FFD1D1D1FFA9A9A9FFA9A9A9FFC7C7C7FFC7C7C7FFC7C7C7FFEEEEEEFFEEEE
+      EEFFEEEEEEFFEDEDEDFFEDEDEDFFEDEDEDFFECECECFFF0F0F0FF9B9B9BFF5858
+      5815FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0058585815999999FFEEEE
+      EEFFE9E9E9FFEAEAEAFFEAEAEAFFEBEBEBFFB0B0B0FFECECECFFECECECFFECEC
+      ECFFEDEDEDFFEDEDEDFFEDEDEDFFEDEDEDFFEDEDEDFFECECECFFECECECFFECEC
+      ECFFEBEBEBFFEBEBEBFFEAEAEAFFEAEAEAFFE9E9E9FFEEEEEEFF999999FF5858
+      5815FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0058585815969697FFECEC
+      ECFFE7E7E7FFE7E7E7FFE8E8E8FFE8E8E8FFE9E9E9FFEAEAEAFFEAEAEAFFEAEA
+      EAFFEBEBEBFFEBEBEBFFEBEBEBFFEBEBEBFFEBEBEBFFEAEAEAFFEAEAEAFFEAEA
+      EAFFE9E9E9FFE8E8E8FFE8E8E8FFE7E7E7FFE7E7E7FFECECECFF969697FF5858
+      5815FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0058585815949495FFEBEB
+      EBFFC7C7C7FFC8C8C8FFC8C8C8FFC8C8C8FFC9C9C9FFC9C9C9FFC9C9C9FFC9C9
+      C9FFC9C9C9FFCACACAFFCACACAFFCACACAFFC9C9C9FFC9C9C9FFC9C9C9FFC9C9
+      C9FFC9C9C9FFC8C8C8FFC8C8C8FFC8C8C8FFC7C7C7FFEBEBEBFF949495FF5858
+      5815FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0058585815929292FFE9E9
+      E9FFE2E2E2FFE2E2E2FFE3E3E3FFE4E4E4FFE4E4E4FFE5E5E5FFE5E5E5FFE6E6
+      E6FFE6E6E6FFE7E7E7FFE7E7E7FFE7E7E7FFE6E6E6FFE6E6E6FFE5E5E5FFE5E5
+      E5FFE4E4E4FFE4E4E4FFE3E3E3FFE2E2E2FFE2E2E2FFE9E9E9FF929292FF5858
+      5815FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858158F8F90FFE7E7
+      E7FFDFDFDFFF979797FFAAAAAAFFE1E1E1FFE2E2E2FFE2E2E2FFE3E3E3FFE3E3
+      E3FFE4E4E4FFE4E4E4FFE4E4E4FFE4E4E4FFE4E4E4FFE3E3E3FFE3E3E3FFE2E2
+      E2FFE2E2E2FFE1E1E1FFE0E0E0FFE0E0E0FFDFDFDFFFE7E7E7FF8F8F90FF5858
+      5815FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858158D8D8EFFE6E6
+      E6FFDCDCDCFF8D8D8DFFB1B1B1FFA0A0A0FF8E8E8EFFA1A1A1FFC5C5C5FFA1A1
+      A1FF868686FFE2E2E2FFE2E2E2FFE2E2E2FFE1E1E1FFE1E1E1FFE0E0E0FFE0E0
+      E0FFDFDFDFFFDFDFDFFFDEDEDEFFDDDDDDFFDCDCDCFFE6E6E6FF8D8D8EFF5858
+      5815FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858158B8B8BFFE4E4
+      E4FFDADADAFF9D9D9DFF959595FF7B7B7BFF8D8D8DFFCBCBCBFF7C7C7CFF9F9F
+      9FFF7C7C7CFFDFDFDFFFE0E0E0FFDFDFDFFFDFDFDFFFDEDEDEFFDEDEDEFFDDDD
+      DDFFDDDDDDFFDCDCDCFFDBDBDBFFDADADAFFDADADAFFE4E4E4FF8B8B8BFF5858
+      5815FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0058585815888889FFE2E2
+      E2FFD7D7D7FFD8D8D8FFD9D9D9FFDADADAFFDBDBDBFFDBDBDBFFDCDCDCFFDCDC
+      DCFFDDDDDDFFDDDDDDFFDEDEDEFFDDDDDDFFDDDDDDFFDCDCDCFFDCDCDCFFDBDB
+      DBFFDBDBDBFFDADADAFFD9D9D9FFD8D8D8FFD7D7D7FFE2E2E2FF888889FF5858
+      5815FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0058585815868687FFE1E1
+      E1FFD5D5D5FF939393FFA4A4A4FFD8D8D8FFD8D8D8FFD9D9D9FFDADADAFFDADA
+      DAFFDBDBDBFFDBDBDBFFDCDCDCFF959595FFD2D2D2FFDADADAFFDADADAFFD9D9
+      D9FFD8D8D8FFD8D8D8FFD7D7D7FFD6D6D6FFD5D5D5FFE1E1E1FF868687FF5858
+      5815FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0058585815848485FFE0E0
+      E0FFD3D3D3FF8A8A8AFFABABABFF9B9B9BFF8A8A8AFF9C9C9CFF9C9C9CFF9C9C
+      9CFF838383FFD9D9D9FFC8C8C8FF838383FF9D9D9DFF727272FFC6C6C6FFD7D7
+      D7FFD6D6D6FFD6D6D6FFD5D5D5FFD4D4D4FFD3D3D3FFE0E0E0FF848485FF5858
+      5815FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0058585815838383FFDFDF
+      DFFFD1D1D1FF999999FF919191FF797979FF8A8A8AFFA3A3A3FF9B9B9BFF9B9B
+      9BFF7A7A7AFFD7D7D7FFA4A4A4FFADADADFF9B9B9BFF717171FFBDBDBDFFC4C4
+      C4FFC3C3C3FFB3B3B3FFD3D3D3FFD2D2D2FFD1D1D1FFDFDFDFFF838383FF5858
+      5815FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0058585815818182FFDBDB
+      DBFFCACACAFFCBCBCBFFCCCCCCFFCCCCCCFFCDCDCDFFCECECEFFCECECEFFCFCF
+      CFFFCFCFCFFFCFCFCFFFD0D0D0FFCFCFCFFFCFCFCFFFCFCFCFFFCECECEFFCECE
+      CEFFCDCDCDFFCCCCCCFFCCCCCCFFCBCBCBFFCACACAFFDBDBDBFF818182FF5858
+      5815FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858157F7F80FFD3D3
+      D3FFD2D2D2FFD2D2D2FFD3D3D3FFD3D3D3FFD4D4D4FFD4D4D4FFD4D4D4FFD4D4
+      D4FFD4D4D4FFD4D4D4FFD4D4D4FFD4D4D4FFD4D4D4FFD4D4D4FFD4D4D4FFD4D4
+      D4FFD4D4D4FFD3D3D3FFD3D3D3FFD2D2D2FFD2D2D2FFD3D3D3FF7F7F80FF5858
+      5815FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005858581379797AAD7E7E
+      7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E
+      7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E
+      7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF7E7E7FFF79797AAD5858
+      5813FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005858580E5858582B5858
+      5855585858715858587F5858587F5858587F5858587F5858587F5858587F5858
+      587F5858587F5858587F5858587F5858587F5858587F5858587F5858587F5858
+      587F5858587F5858587F5858587F5858587F58585871585858555858582B5858
+      580EFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0058585807585858155858
+      582B585858395858584058585840585858405858584058585840585858405858
+      5840585858405858584058585840585858405858584058585840585858405858
+      584058585840585858405858584058585840585858395858582B585858155858
+      5807FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0058585802585858075858
+      580E585858135858581558585815585858155858581558585815585858155858
+      5815585858155858581558585815585858155858581558585815585858155858
+      581558585815585858155858581558585815585858135858580E585858075858
+      5802FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858005858
+      5801585858015858580358585804585858065858580658585807585858075858
+      5807585858075858580758585807585858075858580758585807585858075858
+      5807585858075858580658585806585858045858580358585801585858015858
+      5800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858015858
+      580358585805585858085858580D585858105858581358585814585858165858
+      5816585858165858581658585816585858165858581658585816585858165858
+      58165858581458585813585858105858580D5858580858585805585858035858
+      5801FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858015858
+      58055858580B0E40D09D0B3FD5FF0B3FD5FF0B3FD5FF0B3FD5FF0B3FD5FF0B3F
+      D5FF0B3FD5FF0B3FD5FF0B3FD5FF0B3FD5FF0B3FD5FF0B3FD5FF0B3FD5FF0B3F
+      D5FF0B3FD5FF0B3FD5FF0B3FD5FF0B3FD5FF0E40D09D5858580B585858055858
+      5801FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858035858
+      5808585858110B3ED2FF7796E9FF9FB5EFFF9FB5EFFF9FB5EFFF9FB5EFFF9FB5
+      EFFF9FB5EFFF9FB5EFFF9FB5EFFF9FB5EFFF9FB5EFFF9FB5EFFF9FB5EFFF9FB5
+      EFFF9FB5EFFF9FB5EFFF9FB5EFFF7796E9FF0B3ED2FF58585811585858085858
+      5803FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858045858
+      580D5858581A0A3CCDFF4E78E3FF4B74E1FF4B74E1FF4B74E1FF4B74E1FF4B74
+      E1FF4B74E1FF4B74E1FF4B74E1FF4B74E1FF4B74E1FF4B74E1FF4B74E1FF4B74
+      E1FF4B74E1FF4B74E1FF4B74E1FF4E78E3FF0A3CCDFF5858581A5858580D5858
+      5804FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858065858
+      5810585858210A3BC7FF4873E2FF456FE0FF456FE0FF456FE0FF456FE0FF456F
+      E0FF456FE0FF456FE0FF456FE0FF456FE0FF456FE0FF456FE0FF456FE0FF456F
+      E0FF456FE0FF456FE0FF456FE0FF4873E2FF0A3BC7FF58585821585858105858
+      5806FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858065858
+      5812585858240939C0FF2153DBFF1E4FD9FF1E4FD9FF1E4FD9FF1E4FD9FF1E4F
+      D9FF1E4FD9FF1E4FD9FF1E4FD9FF1E4FD9FF1E4FD9FF1E4FD9FF1E4FD9FF1E4F
+      D9FF1E4FD9FF1E4FD9FF1E4FD9FF2153DBFF0939C0FF58585824585858125858
+      5806FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858065858
+      5812585858240836BAFF194DD9FF1649D7FF1649D7FF1649D7FF1649D7FF1649
+      D7FF1649D7FF1649D7FF1649D7FF1649D7FF1649D7FF1649D7FF1649D7FF1649
+      D7FF1649D7FF1649D7FF1649D7FF194DD9FF0836BAFF58585824585858125858
+      5806FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858065858
+      5810585858210835B4FF215BE1FF2866E6FF2866E6FF2866E6FF2866E6FF2866
+      E6FF2866E6FF2866E6FF2866E6FF2866E6FF2866E6FF2866E6FF2866E6FF2866
+      E6FF2866E6FF2866E6FF2866E6FF215BE1FF0835B4FF58585821585858105858
+      5806FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858045858
+      580D5858581A1037A6A80733AFFF0733AFFF0733AFFF0733AFFF0733AFFF0733
+      AFFF0733AFFF0733AFFF0733AFFF0733AFFF0733AFFF0733AFFF0733AFFF0733
+      AFFF0733AFFF0733AFFF0733AFFF0733AFFF1037A6A85858581A5858580D5858
+      5804FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858035858
+      5808585858115858581D5858582B585858375858583F58585845585858485858
+      5848585858485858584858585848585858485858584858585848585858485858
+      5848585858455858583F585858375858582B5858581D58585811585858085858
+      5803FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858015858
+      58055858580B585858115858581A5858582158585826585858295858582B5858
+      582B5858582B5858582B5858582B5858582B5858582B5858582B5858582B5858
+      582B5858582958585826585858215858581A585858115858580B585858055858
+      5801FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858015858
+      580358585805585858085858580D585858105858581358585814585858165858
+      5816585858165858581658585816585858165858581658585816585858165858
+      58165858581458585813585858105858580D5858580858585805585858035858
+      5801FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858005858
+      5801585858015858580358585804585858065858580658585807585858075858
+      5807585858075858580758585807585858075858580758585807585858075858
+      5807585858075858580658585806585858045858580358585801585858015858
+      5800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00
+    }
+  end
+  object pmGrid: TPopupMenu
+    left = 448
+    top = 402
+    object lmCopyCell: TMenuItem
+      Caption = 'Copy'
+      OnClick = lmCopyCellClick
+    end
+    object lmExportAsComma: TMenuItem
+      Caption = 'Export Grid as Comma Delemited'
+      OnClick = lmExportAsCommaClick
+    end
+    object lmExportAsHTML: TMenuItem
+      Caption = 'Export Grid as HTML'
+      OnClick = lmExportAsHTMLClick
+    end
+  end
+end

+ 2202 - 0
querywindow.lrs

@@ -0,0 +1,2202 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmQueryWindow','FORMDATA',[
+  'TPF0'#14'TfmQueryWindow'#13'fmQueryWindow'#4'Left'#3'!'#3#6'Height'#3'Y'#2#3
+  +'Top'#3#166#0#5'Width'#3#208#2#13'ActiveControl'#7#6'Panel1'#7'Caption'#6#13
+  +'fmQueryWindow'#12'ClientHeight'#3'W'#2#11'ClientWidth'#3#208#2#5'Color'#7#7
+  +'clCream'#4'Menu'#7#9'MainMenu1'#7'OnClose'#7#9'FormClose'#6'OnShow'#7#8'For'
+  +'mShow'#9'PopupMenu'#7#5'pmTab'#8'Position'#7#14'poScreenCenter'#10'LCLVersi'
+  +'on'#6#6'0.9.31'#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6'Height'#2#31#3'Top'#2#0
+  +#5'Width'#3#208#2#5'Align'#7#5'alTop'#12'ClientHeight'#2#27#11'ClientWidth'#3
+  +#204#2#8'TabOrder'#2#1#0#7'TBitBtn'#7'bbClose'#4'Left'#3#175#2#6'Height'#2#22
+  +#3'Top'#2#1#5'Width'#2#27#7'Anchors'#11#5'akTop'#7'akRight'#0#7'Caption'#6#1
+  +'x'#5'Color'#4#219#242#247#0#7'OnClick'#7#15'lmCloseTabClick'#8'TabOrder'#2#0
+  +#0#0#8'TToolBar'#8'ToolBar1'#4'Left'#2#1#6'Height'#2#29#3'Top'#2#1#5'Width'#3
+  +#172#2#5'Align'#7#6'alNone'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#7
+  +'Caption'#6#8'ToolBar1'#6'Images'#7#7'imTools'#8'TabOrder'#2#1#0#11'TToolBut'
+  +'ton'#5'tbNew'#4'Left'#2#1#4'Hint'#6#25'Open New SQL Query Window'#3'Top'#2#2
+  +#10'ImageIndex'#2#0#7'OnClick'#7#10'tbNewClick'#14'ParentShowHint'#8#8'ShowH'
+  +'int'#9#0#0#11'TToolButton'#6'tbOpen'#4'Left'#2'%'#4'Hint'#6#13'Open SQL fil'
+  +'e'#3'Top'#2#2#7'Caption'#6#6'tbOpen'#10'ImageIndex'#2#1#7'OnClick'#7#11'tbO'
+  +'penClick'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#6'tbSave'#4
+  +'Left'#2'I'#4'Hint'#6#16'Save SQL to file'#3'Top'#2#2#7'Caption'#6#6'tbSave'
+  +#10'ImageIndex'#2#2#7'OnClick'#7#11'tbSaveClick'#14'ParentShowHint'#8#8'Show'
+  +'Hint'#9#0#0#11'TToolButton'#11'ToolButton1'#4'Left'#2'm'#3'Top'#2#2#5'Width'
+  +#2#10#7'Caption'#6#11'ToolButton1'#5'Style'#7#12'tbsSeparator'#0#0#11'TToolB'
+  +'utton'#5'tbRun'#4'Left'#2'w'#4'Hint'#6#14'Run Query (F5)'#3'Top'#2#2#10'Ima'
+  +'geIndex'#2#3#7'OnClick'#7#10'tbRunClick'#14'ParentShowHint'#8#8'ShowHint'#9
+  +#0#0#11'TToolButton'#8'tbCommit'#4'Left'#3#165#0#4'Hint'#6#18'Commit Transac'
+  +'tion'#3'Top'#2#2#7'Caption'#6#8'tbCommit'#10'ImageIndex'#2#4#7'OnClick'#7#13
+  +'tbCommitClick'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#10'tb'
+  +'Rollback'#4'Left'#3#201#0#4'Hint'#6#20'Rollback Transaction'#3'Top'#2#2#7'C'
+  +'aption'#6#10'tbRollback'#10'ImageIndex'#2#5#7'OnClick'#7#15'tbRollbackClick'
+  +#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11'ToolButton2'#4'Le'
+  +'ft'#3#155#0#3'Top'#2#2#5'Width'#2#10#7'Caption'#6#11'ToolButton2'#5'Style'#7
+  +#12'tbsSeparator'#0#0#11'TToolButton'#11'ToolButton3'#4'Left'#3#237#0#3'Top'
+  +#2#2#5'Width'#2#10#7'Caption'#6#11'ToolButton3'#5'Style'#7#12'tbsSeparator'#0
+  +#0#11'TToolButton'#9'tbHistory'#4'Left'#3#247#0#4'Hint'#6#11'SQL History'#3
+  +'Top'#2#2#7'Caption'#6#9'tbHistory'#10'ImageIndex'#2#6#7'OnClick'#7#14'tbHis'
+  +'toryClick'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11'ToolBu'
+  +'tton5'#4'Left'#3#27#1#3'Top'#2#2#5'Width'#2#5#7'Caption'#6#11'ToolButton5'#5
+  +'Style'#7#10'tbsDivider'#0#0#11'TToolButton'#6'tbMenu'#4'Left'#3' '#1#4'Hint'
+  +#6#4'Menu'#3'Top'#2#2#7'Caption'#6#6'tbMenu'#10'ImageIndex'#2#7#7'OnClick'#7
+  +#11'tbMenuClick'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11'T'
+  +'oolButton6'#4'Left'#3'D'#1#3'Top'#2#2#5'Width'#2#5#7'Caption'#6#11'ToolButt'
+  +'on6'#5'Style'#7#10'tbsDivider'#0#0#0#0#9'TSplitter'#9'Splitter1'#6'Cursor'#7
+  +#8'crVSplit'#4'Left'#2#0#6'Height'#2#12#3'Top'#3'-'#1#5'Width'#3#208#2#5'Ali'
+  +'gn'#7#5'alTop'#12'ResizeAnchor'#7#5'akTop'#0#0#6'TPanel'#6'Panel2'#4'Left'#2
+  +#0#6'Height'#3#30#1#3'Top'#3'9'#1#5'Width'#3#208#2#5'Align'#7#8'alClient'#12
+  +'ClientHeight'#3#26#1#11'ClientWidth'#3#204#2#8'TabOrder'#2#3#0#12'TPageCont'
+  +'rol'#12'PageControl1'#4'Left'#2#1#6'Height'#3#24#1#3'Top'#2#1#5'Width'#3#202
+  +#2#5'Align'#7#8'alClient'#6'Images'#7#6'imTabs'#8'TabOrder'#2#0#0#0#0#244#8
+  +'TSynEdit'#7'meQuery'#4'Left'#2#0#6'Height'#3#14#1#3'Top'#2#31#5'Width'#3#208
+  +#2#5'Align'#7#5'alTop'#11'BlockIndent'#2#3#11'Font.Height'#2#240#9'Font.Name'
+  +#6#11'Courier New'#10'Font.Pitch'#7#7'fpFixed'#12'Font.Quality'#7#16'fqNonAn'
+  +'tialiased'#11'ParentColor'#8#10'ParentFont'#8#9'PopupMenu'#7#6'pmMemo'#8'Ta'
+  +'bOrder'#2#0#11'BorderStyle'#7#6'bsNone'#12'Gutter.Color'#4#246#241#246#0#12
+  +'Gutter.Width'#2'='#19'Gutter.MouseActions'#14#1#5'Shift'#11#0#9'ShiftMask'
+  +#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'
+  +#7'Command'#2#13#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11
+  +#0#9'ShiftMask'#11#0#6'Button'#7#7'mbRight'#10'ClickCount'#7#8'ccSingle'#8'C'
+  +'lickDir'#7#4'cdUp'#7'Command'#2#12#9'MoveCaret'#8#6'Option'#2#0#8'Priority'
+  +#2#0#0#0#17'RightGutter.Width'#2#0#24'RightGutter.MouseActions'#14#1#5'Shift'
+  +#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'Cl'
+  +'ickDir'#7#6'cdDown'#7'Command'#2#13#9'MoveCaret'#8#6'Option'#2#0#8'Priority'
+  +#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#7'mbRight'#10'ClickCoun'
+  +'t'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2#12#9'MoveCaret'#8#6'Opt'
+  +'ion'#2#0#8'Priority'#2#0#0#0#11'Highlighter'#7#10'SynSQLSyn1'#10'Keystrokes'
+  ,#14#1#7'Command'#7#4'ecUp'#8'ShortCut'#2'&'#0#1#7'Command'#7#7'ecSelUp'#8'Sh'
+  +'ortCut'#3'& '#0#1#7'Command'#7#10'ecScrollUp'#8'ShortCut'#3'&@'#0#1#7'Comma'
+  +'nd'#7#6'ecDown'#8'ShortCut'#2'('#0#1#7'Command'#7#9'ecSelDown'#8'ShortCut'#3
+  +'( '#0#1#7'Command'#7#12'ecScrollDown'#8'ShortCut'#3'(@'#0#1#7'Command'#7#6
+  +'ecLeft'#8'ShortCut'#2'%'#0#1#7'Command'#7#9'ecSelLeft'#8'ShortCut'#3'% '#0#1
+  +#7'Command'#7#10'ecWordLeft'#8'ShortCut'#3'%@'#0#1#7'Command'#7#13'ecSelWord'
+  +'Left'#8'ShortCut'#3'%`'#0#1#7'Command'#7#7'ecRight'#8'ShortCut'#2''''#0#1#7
+  +'Command'#7#10'ecSelRight'#8'ShortCut'#3''' '#0#1#7'Command'#7#11'ecWordRigh'
+  +'t'#8'ShortCut'#3'''@'#0#1#7'Command'#7#14'ecSelWordRight'#8'ShortCut'#3'''`'
+  +#0#1#7'Command'#7#10'ecPageDown'#8'ShortCut'#2'"'#0#1#7'Command'#7#13'ecSelP'
+  +'ageDown'#8'ShortCut'#3'" '#0#1#7'Command'#7#12'ecPageBottom'#8'ShortCut'#3
+  +'"@'#0#1#7'Command'#7#15'ecSelPageBottom'#8'ShortCut'#3'"`'#0#1#7'Command'#7
+  +#8'ecPageUp'#8'ShortCut'#2'!'#0#1#7'Command'#7#11'ecSelPageUp'#8'ShortCut'#3
+  +'! '#0#1#7'Command'#7#9'ecPageTop'#8'ShortCut'#3'!@'#0#1#7'Command'#7#12'ecS'
+  +'elPageTop'#8'ShortCut'#3'!`'#0#1#7'Command'#7#11'ecLineStart'#8'ShortCut'#2
+  +'$'#0#1#7'Command'#7#14'ecSelLineStart'#8'ShortCut'#3'$ '#0#1#7'Command'#7#11
+  +'ecEditorTop'#8'ShortCut'#3'$@'#0#1#7'Command'#7#14'ecSelEditorTop'#8'ShortC'
+  +'ut'#3'$`'#0#1#7'Command'#7#9'ecLineEnd'#8'ShortCut'#2'#'#0#1#7'Command'#7#12
+  +'ecSelLineEnd'#8'ShortCut'#3'# '#0#1#7'Command'#7#14'ecEditorBottom'#8'Short'
+  +'Cut'#3'#@'#0#1#7'Command'#7#17'ecSelEditorBottom'#8'ShortCut'#3'#`'#0#1#7'C'
+  +'ommand'#7#12'ecToggleMode'#8'ShortCut'#2'-'#0#1#7'Command'#7#6'ecCopy'#8'Sh'
+  +'ortCut'#3'-@'#0#1#7'Command'#7#7'ecPaste'#8'ShortCut'#3'- '#0#1#7'Command'#7
+  +#12'ecDeleteChar'#8'ShortCut'#2'.'#0#1#7'Command'#7#5'ecCut'#8'ShortCut'#3'.'
+  +' '#0#1#7'Command'#7#16'ecDeleteLastChar'#8'ShortCut'#2#8#0#1#7'Command'#7#16
+  +'ecDeleteLastChar'#8'ShortCut'#3#8' '#0#1#7'Command'#7#16'ecDeleteLastWord'#8
+  +'ShortCut'#3#8'@'#0#1#7'Command'#7#6'ecUndo'#8'ShortCut'#4#8#128#0#0#0#1#7'C'
+  +'ommand'#7#6'ecRedo'#8'ShortCut'#4#8#160#0#0#0#1#7'Command'#7#11'ecLineBreak'
+  +#8'ShortCut'#2#13#0#1#7'Command'#7#11'ecSelectAll'#8'ShortCut'#3'A@'#0#1#7'C'
+  +'ommand'#7#6'ecCopy'#8'ShortCut'#3'C@'#0#1#7'Command'#7#13'ecBlockIndent'#8
+  +'ShortCut'#3'I`'#0#1#7'Command'#7#11'ecLineBreak'#8'ShortCut'#3'M@'#0#1#7'Co'
+  +'mmand'#7#12'ecInsertLine'#8'ShortCut'#3'N@'#0#1#7'Command'#7#12'ecDeleteWor'
+  +'d'#8'ShortCut'#3'T@'#0#1#7'Command'#7#15'ecBlockUnindent'#8'ShortCut'#3'U`'
+  +#0#1#7'Command'#7#7'ecPaste'#8'ShortCut'#3'V@'#0#1#7'Command'#7#5'ecCut'#8'S'
+  +'hortCut'#3'X@'#0#1#7'Command'#7#12'ecDeleteLine'#8'ShortCut'#3'Y@'#0#1#7'Co'
+  +'mmand'#7#11'ecDeleteEOL'#8'ShortCut'#3'Y`'#0#1#7'Command'#7#6'ecUndo'#8'Sho'
+  +'rtCut'#3'Z@'#0#1#7'Command'#7#6'ecRedo'#8'ShortCut'#3'Z`'#0#1#7'Command'#7
+  +#13'ecGotoMarker0'#8'ShortCut'#3'0@'#0#1#7'Command'#7#13'ecGotoMarker1'#8'Sh'
+  +'ortCut'#3'1@'#0#1#7'Command'#7#13'ecGotoMarker2'#8'ShortCut'#3'2@'#0#1#7'Co'
+  +'mmand'#7#13'ecGotoMarker3'#8'ShortCut'#3'3@'#0#1#7'Command'#7#13'ecGotoMark'
+  +'er4'#8'ShortCut'#3'4@'#0#1#7'Command'#7#13'ecGotoMarker5'#8'ShortCut'#3'5@'
+  +#0#1#7'Command'#7#13'ecGotoMarker6'#8'ShortCut'#3'6@'#0#1#7'Command'#7#13'ec'
+  +'GotoMarker7'#8'ShortCut'#3'7@'#0#1#7'Command'#7#13'ecGotoMarker8'#8'ShortCu'
+  +'t'#3'8@'#0#1#7'Command'#7#13'ecGotoMarker9'#8'ShortCut'#3'9@'#0#1#7'Command'
+  +#7#12'ecSetMarker0'#8'ShortCut'#3'0`'#0#1#7'Command'#7#12'ecSetMarker1'#8'Sh'
+  +'ortCut'#3'1`'#0#1#7'Command'#7#12'ecSetMarker2'#8'ShortCut'#3'2`'#0#1#7'Com'
+  +'mand'#7#12'ecSetMarker3'#8'ShortCut'#3'3`'#0#1#7'Command'#7#12'ecSetMarker4'
+  +#8'ShortCut'#3'4`'#0#1#7'Command'#7#12'ecSetMarker5'#8'ShortCut'#3'5`'#0#1#7
+  +'Command'#7#12'ecSetMarker6'#8'ShortCut'#3'6`'#0#1#7'Command'#7#12'ecSetMark'
+  +'er7'#8'ShortCut'#3'7`'#0#1#7'Command'#7#12'ecSetMarker8'#8'ShortCut'#3'8`'#0
+  +#1#7'Command'#7#12'ecSetMarker9'#8'ShortCut'#3'9`'#0#1#7'Command'#7#12'EcFol'
+  +'dLevel1'#8'ShortCut'#4'1'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel2'#8'Short'
+  +'Cut'#4'2'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel1'#8'ShortCut'#4'3'#160#0#0
+  +#0#1#7'Command'#7#12'EcFoldLevel1'#8'ShortCut'#4'4'#160#0#0#0#1#7'Command'#7
+  +#12'EcFoldLevel1'#8'ShortCut'#4'5'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel6'
+  +#8'ShortCut'#4'6'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel7'#8'ShortCut'#4'7'
+  +#160#0#0#0#1#7'Command'#7#12'EcFoldLevel8'#8'ShortCut'#4'8'#160#0#0#0#1#7'Co'
+  +'mmand'#7#12'EcFoldLevel9'#8'ShortCut'#4'9'#160#0#0#0#1#7'Command'#7#12'EcFo'
+  +'ldLevel0'#8'ShortCut'#4'0'#160#0#0#0#1#7'Command'#7#13'EcFoldCurrent'#8'Sho'
+  +'rtCut'#4'-'#160#0#0#0#1#7'Command'#7#15'EcUnFoldCurrent'#8'ShortCut'#4'+'
+  +#160#0#0#0#1#7'Command'#7#18'EcToggleMarkupWord'#8'ShortCut'#4'M'#128#0#0#0#1
+  +#7'Command'#7#14'ecNormalSelect'#8'ShortCut'#3'N`'#0#1#7'Command'#7#14'ecCol'
+  +'umnSelect'#8'ShortCut'#3'C`'#0#1#7'Command'#7#12'ecLineSelect'#8'ShortCut'#3
+  +'L`'#0#1#7'Command'#7#5'ecTab'#8'ShortCut'#2#9#0#1#7'Command'#7#10'ecShiftTa'
+  +'b'#8'ShortCut'#3#9' '#0#1#7'Command'#7#14'ecMatchBracket'#8'ShortCut'#3'B`'
+  ,#0#1#7'Command'#7#10'ecColSelUp'#8'ShortCut'#4'&'#160#0#0#0#1#7'Command'#7#12
+  +'ecColSelDown'#8'ShortCut'#4'('#160#0#0#0#1#7'Command'#7#12'ecColSelLeft'#8
+  +'ShortCut'#4'%'#160#0#0#0#1#7'Command'#7#13'ecColSelRight'#8'ShortCut'#4''''
+  +#160#0#0#0#1#7'Command'#7#16'ecColSelPageDown'#8'ShortCut'#4'"'#160#0#0#0#1#7
+  +'Command'#7#18'ecColSelPageBottom'#8'ShortCut'#4'"'#224#0#0#0#1#7'Command'#7
+  +#14'ecColSelPageUp'#8'ShortCut'#4'!'#160#0#0#0#1#7'Command'#7#15'ecColSelPag'
+  +'eTop'#8'ShortCut'#4'!'#224#0#0#0#1#7'Command'#7#17'ecColSelLineStart'#8'Sho'
+  +'rtCut'#4'$'#160#0#0#0#1#7'Command'#7#15'ecColSelLineEnd'#8'ShortCut'#4'#'
+  +#160#0#0#0#1#7'Command'#7#17'ecColSelEditorTop'#8'ShortCut'#4'$'#224#0#0#0#1
+  +#7'Command'#7#20'ecColSelEditorBottom'#8'ShortCut'#4'#'#224#0#0#0#0#12'Mouse'
+  +'Actions'#14#1#5'Shift'#11#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'Button'
+  +#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'
+  +#2#1#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#7'ssShift'
+  +#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbLeft'#10'ClickCount'
+  +#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#1#9'MoveCaret'#9#6'Optio'
+  +'n'#2#1#8'Priority'#2#0#0#1#5'Shift'#11#5'ssAlt'#0#9'ShiftMask'#11#7'ssShift'
+  +#5'ssAlt'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7
+  +#6'cdDown'#7'Command'#2#3#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5
+  +'Shift'#11#7'ssShift'#5'ssAlt'#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'But'
+  +'ton'#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Com'
+  +'mand'#2#3#9'MoveCaret'#9#6'Option'#2#1#8'Priority'#2#0#0#1#5'Shift'#11#0#9
+  +'ShiftMask'#11#0#6'Button'#7#7'mbRight'#10'ClickCount'#7#8'ccSingle'#8'Click'
+  +'Dir'#7#4'cdUp'#7'Command'#2#12#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0
+  +#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8
+  +'ccDouble'#8'ClickDir'#7#6'cdDown'#7'Command'#2#6#9'MoveCaret'#9#6'Option'#2
+  +#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'
+  +#10'ClickCount'#7#8'ccTriple'#8'ClickDir'#7#6'cdDown'#7'Command'#2#7#9'MoveC'
+  +'aret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6
+  +'Button'#7#6'mbLeft'#10'ClickCount'#7#6'ccQuad'#8'ClickDir'#7#6'cdDown'#7'Co'
+  +'mmand'#2#8#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9
+  +'ShiftMask'#11#0#6'Button'#7#8'mbMiddle'#10'ClickCount'#7#8'ccSingle'#8'Clic'
+  +'kDir'#7#6'cdDown'#7'Command'#2#10#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2
+  +#0#0#1#5'Shift'#11#6'ssCtrl'#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#6'ssCtrl'
+  +#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7
+  +'Command'#2#11#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#15'MouseSelA'
+  +'ctions'#14#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'Click'
+  +'Count'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#9#9'MoveCaret'#8#6
+  +'Option'#2#0#8'Priority'#2#0#0#0#9'RightEdge'#2'x'#21'BracketHighlightStyle'
+  +#7#8'sbhsBoth'#0#244#18'TSynGutterPartList'#0#0#15'TSynGutterMarks'#0#5'Widt'
+  +'h'#2#24#0#0#20'TSynGutterLineNumber'#0#5'Width'#2#21#12'MouseActions'#14#0
+  +#21'MarkupInfo.Background'#4#243#250#254#0#21'MarkupInfo.Foreground'#7#6'clN'
+  +'one'#10'DigitCount'#2#2#30'ShowOnlyLineNumbersMultiplesOf'#2#1#9'ZeroStart'
+  +#8#12'LeadingZeros'#8#0#0#17'TSynGutterChanges'#0#5'Width'#2#4#13'ModifiedCo'
+  +'lor'#4#252#233#0#0#10'SavedColor'#7#7'clGreen'#0#0#19'TSynGutterSeparator'#0
+  +#5'Width'#2#2#0#0#21'TSynGutterCodeFolding'#0#12'MouseActions'#14#1#5'Shift'
+  +#11#0#9'ShiftMask'#11#0#6'Button'#7#7'mbRight'#10'ClickCount'#7#8'ccSingle'#8
+  +'ClickDir'#7#4'cdUp'#7'Command'#2#16#9'MoveCaret'#8#6'Option'#2#0#8'Priority'
+  +#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#7'ssShift'#0#6'Button'#7#8'mbMiddle'
+  +#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#14#9'MoveCar'
+  +'et'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#7'ssShift'#0#9'ShiftMas'
+  +'k'#11#7'ssShift'#0#6'Button'#7#8'mbMiddle'#10'ClickCount'#7#5'ccAny'#8'Clic'
+  +'kDir'#7#6'cdDown'#7'Command'#2#14#9'MoveCaret'#8#6'Option'#2#1#8'Priority'#2
+  +#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7
+  +#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#0#9'MoveCaret'#8#6'Option'#2#0
+  +#8'Priority'#2#0#0#0#21'MarkupInfo.Background'#7#6'clNone'#21'MarkupInfo.For'
+  +'eground'#7#6'clGray'#20'MouseActionsExpanded'#14#1#5'Shift'#11#0#9'ShiftMas'
+  +'k'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdD'
+  +'own'#7'Command'#2#14#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#21'Mo'
+  +'useActionsCollapsed'#14#1#5'Shift'#11#6'ssCtrl'#0#9'ShiftMask'#11#6'ssCtrl'
+  +#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7
+  +'Command'#2#15#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0
+  +#9'ShiftMask'#11#6'ssCtrl'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'
+  +#8'ClickDir'#7#6'cdDown'#7'Command'#2#15#9'MoveCaret'#8#6'Option'#2#1#8'Prio'
+  +'rity'#2#0#0#0#0#0#0#0#11'TOpenDialog'#11'OpenDialog1'#5'Width'#3#139#3#6'He'
+  ,'ight'#3#128#2#10'DefaultExt'#6#4'.sql'#6'Filter'#6#29'SQL Files|*.sql|All F'
+  +'iles|*.*'#4'left'#3#222#0#3'top'#3#134#0#0#0#11'TSaveDialog'#11'SaveDialog1'
+  +#7'Options'#11#17'ofOverwritePrompt'#14'ofEnableSizing'#12'ofViewDetail'#0#4
+  +'left'#3#222#0#3'top'#3#208#0#0#0#10'TSynSQLSyn'#10'SynSQLSyn1'#13'DefaultFi'
+  +'lter'#6#23'SQL Files (*.sql)|*.sql'#7'Enabled'#8#23'CommentAttri.Foreground'
+  +#7#6'clTeal'#23'CommentAttri.FrameEdges'#7#9'sfeAround'#24'DataTypeAttri.Fra'
+  +'meEdges'#7#9'sfeAround'#30'DefaultPackageAttri.FrameEdges'#7#9'sfeAround'#25
+  +'ExceptionAttri.FrameEdges'#7#9'sfeAround'#24'FunctionAttri.FrameEdges'#7#9
+  +'sfeAround'#26'IdentifierAttri.Foreground'#4'1'#26#255#0#26'IdentifierAttri.'
+  +'FrameEdges'#7#9'sfeAround'#19'KeyAttri.FrameEdges'#7#9'sfeAround'#22'Number'
+  +'Attri.Foreground'#4'644'#0#22'NumberAttri.FrameEdges'#7#9'sfeAround'#21'PLS'
+  +'QLAttri.FrameEdges'#7#9'sfeAround'#21'SpaceAttri.FrameEdges'#7#9'sfeAround'
+  +#23'SQLPlusAttri.FrameEdges'#7#9'sfeAround'#22'StringAttri.Foreground'#4#161
+  +#16#16#0#22'StringAttri.FrameEdges'#7#9'sfeAround'#22'SymbolAttri.Foreground'
+  +#4'b'#8#8#0#22'SymbolAttri.FrameEdges'#7#9'sfeAround'#25'TableNameAttri.Fore'
+  +'ground'#7#6'clNavy'#25'TableNameAttri.FrameEdges'#7#9'sfeAround'#20'TableNa'
+  +'meAttri.Style'#11#6'fsBold'#0#24'VariableAttri.FrameEdges'#7#9'sfeAround'#10
+  +'SQLDialect'#7#9'sqlSybase'#4'left'#3#176#1#3'top'#2#8#0#0#10'TPopupMenu'#6
+  +'pmMemo'#4'left'#2'i'#3'top'#3#173#0#0#9'TMenuItem'#6'lmUndo'#7'Caption'#6#4
+  +'Undo'#7'OnClick'#7#11'lmUndoClick'#0#0#9'TMenuItem'#6'lmRedo'#7'Caption'#6#4
+  +'Redo'#7'OnClick'#7#11'lmRedoClick'#0#0#9'TMenuItem'#9'MenuItem1'#7'Caption'
+  +#6#1'-'#0#0#9'TMenuItem'#6'lmCopy'#7'Caption'#6#4'Copy'#8'ShortCut'#3'C@'#7
+  +'OnClick'#7#11'lmCopyClick'#0#0#9'TMenuItem'#5'lmCut'#7'Caption'#6#3'Cut'#8
+  +'ShortCut'#3'X@'#7'OnClick'#7#10'lmCutClick'#0#0#9'TMenuItem'#7'lmPaste'#7'C'
+  +'aption'#6#5'Paste'#8'ShortCut'#3'V@'#7'OnClick'#7#12'lmPasteClick'#0#0#9'TM'
+  +'enuItem'#11'lmSelectAll'#7'Caption'#6#10'Select All'#8'ShortCut'#3'A@'#7'On'
+  +'Click'#7#16'lmSelectAllClick'#0#0#9'TMenuItem'#9'MenuItem2'#7'Caption'#6#1
+  +'-'#0#0#9'TMenuItem'#6'lmFind'#7'Caption'#6#4'Find'#7'OnClick'#7#11'lmFindCl'
+  +'ick'#0#0#9'TMenuItem'#11'lmFindAgain'#7'Caption'#6#10'Find Again'#7'OnClick'
+  +#7#16'lmFindAgainClick'#0#0#0#11'TFindDialog'#11'FindDialog1'#6'OnFind'#7#15
+  +'FindDialog1Find'#4'left'#3#29#1#3'top'#2'M'#0#0#10'TPopupMenu'#5'pmTab'#4'l'
+  +'eft'#3#154#1#3'top'#3#238#0#0#9'TMenuItem'#8'lmExport'#7'Caption'#6#16'Expo'
+  +'rt Result as'#0#9'TMenuItem'#16'lmCommaDelemited'#7'Caption'#6#15'Comma Del'
+  +'emited'#7'OnClick'#7#21'lmCommaDelemitedClick'#0#0#9'TMenuItem'#6'lmHTML'#7
+  +'Caption'#6#10'HTML Table'#7'OnClick'#7#11'lmHTMLClick'#0#0#0#9'TMenuItem'#9
+  +'MenuItem5'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#5'lmRun'#7'Caption'#6#16'Run '
+  +'Query (Auto)'#8'ShortCut'#2't'#7'OnClick'#7#10'lmRunClick'#0#0#9'TMenuItem'
+  +#11'lmRunSelect'#7'Caption'#6#21'Run Query (As Select)'#7'OnClick'#7#16'lmRu'
+  +'nSelectClick'#0#0#9'TMenuItem'#9'lmRunExec'#7'Caption'#6#22'Run Query (As E'
+  +'xecute)'#7'OnClick'#7#14'lmRunExecClick'#0#0#9'TMenuItem'#11'lmRunScript'#7
+  +'Caption'#6#21'Run Query (As Script)'#7'OnClick'#7#16'lmRunScriptClick'#0#0#9
+  +'TMenuItem'#10'MenuItem10'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'lmCloseTab'
+  +#7'Caption'#6#9'Close Tab'#7'OnClick'#7#15'lmCloseTabClick'#0#0#0#9'TMainMen'
+  +'u'#9'MainMenu1'#4'left'#2'{'#3'top'#2'L'#0#9'TMenuItem'#9'MenuItem3'#7'Capt'
+  +'ion'#6#3'Run'#8'ShortCut'#2't'#7'Visible'#8#7'OnClick'#7#10'bbRunClick'#0#0
+  +#0#10'TImageList'#6'imTabs'#4'left'#3#212#0#3'top'#3#244#1#6'Bitmap'#10#14#24
+  +#0#0'Li'#6#0#0#0#16#0#0#0#16#0#0#0#240#247#255#255#253#255#255#0#255#255#242
+  +#255#255#255#242#255#255#255#249#255#251#244#241#255#255#255#252#255#255#255
+  +#252#255#255#255#252#255#255#255#252#255#255#255#252#255#255#251#244#255#255
+  +#255#242#255#255#255#245#255#251#253#254#255#246#253#255#255#248#254#255#255
+  +#250#250#250#255#255#248#234#255#255#255#241#255#255#255#248#255#255#255#251
+  +#255#255#255#251#255#255#245#241#255#255#251#247#255#255#252#248#255#255#255
+  +#251#255#255#251#243#255#255#255#241#255#255#255#244#255#245#245#245#255#248
+  +#254#255#255#245#249#254#255#255#255#254#255'~o_'#255'veR'#255'ui]'#255'}rj'
+  +#255'gZR'#255#132'wo'#255'}ph'#255'sf^'#255'~sk'#255'~rf'#255'xgT'#255'vgW'
+  +#255#255#255#254#255#250#254#255#255#244#246#247#255#255#253#248#255#128'o\'
+  +#255#255#255#237#255#255#255#242#255#255#255#245#255#255#255#245#255#255#250
+  +#238#255#255#255#244#255#255#255#245#255#255#249#237#255#255#255#242#255#255
+  +#255#237#255'|mZ'#255#255#255#251#255#241#243#244#255#255#255#255#255#255#255
+  +#249#255#133'r]'#255#255#255#235#255#164#146#129#255#150#134'y'#255#178#162
+  +#146#255#160#144#128#255#255#255#240#255#173#157#141#255#168#152#139#255#165
+  +#147#130#255#255#255#235#255#136'u`'#255#255#253#246#255#255#255#255#255#254
+  +#252#251#255#255#249#240#255#134'q['#255#255#247#221#255#255#255#240#255#255
+  +#255#241#255#255#254#237#255#255#255#241#255#255#255#241#255#255#255#238#255
+  ,#255#255#242#255#255#250#232#255#255#255#234#255'~iS'#255#255#255#248#255#254
+  +#252#251#255#255#255#254#255#255#255#248#255'{fP'#255#255#255#234#255#168#149
+  +#128#255#173#155#138#255#164#144#127#255#255#255#240#255#167#147#129#255#169
+  +#152#133#255#255#255#241#255#171#152#131#255#255#255#233#255#131'nX'#255#255
+  +#248#239#255#255#255#254#255#255#255#255#255#255#249#242#255#130'oZ'#255#255
+  +#255#234#255#255#254#236#255#255#255#241#255#255#255#241#255#255#255#237#255
+  +#255#255#240#255#255#255#241#255#255#255#240#255#255#255#238#255#255#255#234
+  +#255#129'nY'#255#255#255#249#255#249#249#249#255#253#255#255#0#252#248#243
+  +#255#132's`'#255#255#255#235#255#162#144#127#255#255#255#242#255#164#146#129
+  +#255#255#255#241#255#171#153#136#255#170#152#135#255#168#152#136#255#167#149
+  +#132#255#255#255#235#255'}n['#255#255#255#251#255#253#255#255#0#250#253#255
+  +#255#255#255#252#255'seS'#255#255#255#237#255#255#255#242#255#255#250#237#255
+  +#255#255#241#255#255#255#241#255#255#249#232#255#255#255#242#255#255#255#244
+  +#255#255#254#238#255#255#255#237#255'vhV'#255#255#254#250#255#250#255#255#255
+  +#249#252#255#255#253#251#250#255'zk['#255#255#255#238#255#153#137'y'#255#255
+  +#255#244#255#165#149#133#255#166#147#132#255#173#154#139#255#255#255#242#255
+  +#158#142#129#255#172#157#141#255#255#255#235#255'sdT'#255#255#255#254#255#241
+  +#247#252#255#248#254#255#255#252#250#249#255#128'qa'#255#255#255#238#255#255
+  +#255#242#255#255#255#244#255#255#251#236#255#255#255#240#255#255#249#234#255
+  +#255#255#242#255#255#255#244#255#255#255#240#255#255#255#238#255#130'sc'#255
+  +#255#253#252#255#248#254#255#255#242#246#251#255#255#255#254#255'{m['#255#255
+  +#255#237#255#165#147#130#255#255#255#242#255#167#147#130#255#255#255#240#255
+  +#184#161#145#255#164#144#127#255#255#255#241#255#169#151#134#255#255#253#231
+  +#255'zlZ'#255#251#249#248#255#250#254#255#255#251#254#255#255#255#253#249#255
+  +#130's`'#255#255#255#230#255#255#255#240#255#255#255#238#255#255#255#240#255
+  +#255#252#231#255#255#250#230#255#255#253#235#255#255#255#241#255#255#255#239
+  +#255#255#255#235#255'|mZ'#255#255#255#252#255#250#255#255#255#245#246#250#255
+  +#255#255#251#255'xgR'#255#134'qV'#255'}hS'#255#136'tb'#255#141'v`'#255#129'j'
+  +'T'#255#138'r\'#255#141'v`'#255'yeS'#255'~kV'#255#141'v\'#255#128'oZ'#255#253
+  +#249#244#255#249#253#254#255#253#255#255#0#255#252#244#255#255#255#238#255
+  +#255#255#233#255#255#255#238#255#255#254#233#255#255#255#237#255#255#255#235
+  +#255#255#255#232#255#255#255#237#255#255#255#238#255#255#255#233#255#255#255
+  +#234#255#255#255#237#255#255#255#251#255#253#255#255#0#249#252#243#255#255
+  +#255#252#0#247#249#250#255#252#253#255#255#251#254#255#255#247#252#250#255
+  +#251#255#248#255#251#255#245#255#247#255#241#255#251#255#248#255#249#254#252
+  +#255#243#247#248#255#253#253#255#255#253#255#255#255#248#249#245#255#255#255
+  +#249#255#255#255#249#255#255#255#252#0#252#254#255#255#251#252#255#255#251
+  +#254#255#255#247#252#250#255#251#255#248#255#247#255#241#255#251#255#245#255
+  +#251#255#248#255#251#255#254#255#251#255#255#255#253#253#255#255#253#255#255
+  +#255#255#255#252#0#253#255#247#255#255#255#249#255#254#255#251#255#252#254
+  +#255#255#249#250#254#255#251#254#255#255#244#249#247#255#251#255#248#255#251
+  +#255#245#255#247#255#241#255#251#255#248#255#238#243#241#255#247#251#252#255
+  +#253#253#255#255#245#247#248#255#255#255#252#0#255#255#249#255#253#255#247
+  +#255#249#250#246#255#253#255#255#255#248#249#253#255#246#249#253#255#251#255
+  +#254#255#250#255#247#255'isc'#255'oyi'#255'[cX'#255#251#255#254#255#251#255
+  +#255#255#240#240#246#255#252#254#255#255#251#252#248#255#255#255#249#255#252
+  +#254#248#255#255#255#252#0#253#255#255#255#251#252#255#255#251#254#255#255
+  +#246#251#249#255#244#253#240#255'r|k'#255'kud'#255'`i\'#255#248#253#251#255
+  +#251#255#255#255#253#253#255#255#253#255#255#255#253#254#250#255#248#250#244
+  +#255#254#255#250#255#252#253#249#255#253#254#255#255#253#254#255#255#242#246
+  +#247#255#251#255#252#255#251#255#247#255'kud'#255'r|k'#255'W`S'#255#250#255
+  +#253#255#251#255#255#255#246#247#251#255#248#250#251#255#255#255#254#255#253
+  +#255#249#255#254#255#250#255#255#255#252#0#250#251#255#255#253#254#255#255
+  +#251#255#255#255#250#255#251#255#251#255#247#255#243#254#234#255#251#255#242
+  +#255#248#255#242#255#251#255#252#255#249#253#254#255#253#254#255#255#247#249
+  +#250#255#255#255#254#255#249#251#245#255#255#255#251#255#255#255#252#0#253
+  +#254#255#255#247#248#252#255#251#255#255#255#251#255#251#255#241#251#235#255
+  +#251#255#242#255#248#255#239#255#251#255#245#255#251#255#252#255#246#250#251
+  +#255#253#254#255#255#253#255#255#255#247#248#246#255#255#255#251#255#253#255
+  +#249#255#255#255#252#0#253#254#255#255#249#250#254#255#251#255#255#255#244
+  +#251#244#255#250#255#244#255#251#255#241#255#245#255#235#255#251#255#244#255
+  +#250#255#250#255#247#252#251#255#253#254#255#255#250#252#253#255#251#252#250
+  +#255#255#255#251#255#255#255#251#255#247#248#246#255#253#254#255#255#252#253
+  +#255#255#251#255#255#255#248#255#248#255#251#255#244#255'kwa'#255'myc'#255'_'
+  ,'iX'#255#245#252#245#255#248#253#252#255#253#254#255#255#253#254#255#255#255
+  +#255#254#255#250#252#246#255#254#255#251#255#255#255#254#255#253#254#255#255
+  +#253#254#255#255#247#252#251#255#251#255#251#255#251#255#244#255'o|d'#255'r'
+  +#127'g'#255'R\K'#255#248#255#248#255#251#255#255#255#236#237#241#255#253#254
+  +#255#255#250#251#249#255#255#255#252#0#255#255#252#0#238#239#237#255#253#254
+  +#255#255#245#246#250#255#251#255#255#255#251#255#249#255#242#253#233#255'w'
+  +#132'l'#255'o|d'#255'alX'#255#251#255#249#255#251#255#255#255#253#254#255#255
+  +#251#252#255#255#252#253#251#255#252#253#249#255#250#251#247#255#255#255#254
+  +#255#253#254#255#255#249#250#254#255#251#255#254#255#249#255#247#255#248#255
+  +#239#255#251#255#238#255'jw]'#255'ZeQ'#255#236#244#234#255#251#255#254#255
+  +#252#253#255#255#253#254#255#255#250#251#249#255#255#255#252#0#255#255#252#0
+  +#255#255#254#255#242#243#247#255#253#254#255#255#251#255#254#255#251#255#248
+  +#255#236#247#227#255's'#128'f'#255'XeK'#255#251#255#241#255#251#255#249#255
+  +#251#255#254#255#253#254#255#255#249#250#254#255#255#255#254#255#252#253#249
+  +#255#252#253#249#255#242#243#241#255#253#254#255#255#253#254#255#255#248#253
+  +#251#255'jrg'#255'|'#135's'#255'VcI'#255#251#255#238#255#232#244#222#255#251
+  +#255#249#255#238#243#241#255#250#251#255#255#253#254#255#255#255#255#254#255
+  +#255#255#252#0#255#255#252#0#255#255#254#255#245#246#250#255#253#254#255#255
+  +#243#248#246#255#251#255#248#255#251#255#242#255#251#255#238#255#242#255#229
+  +#255#251#255#241#255#251#255#249#255#251#255#254#255#253#254#255#255#253#254
+  +#255#255#254#255#253#255#251#252#248#255#255#254#255#0#251#250#252#255#0#0#0
+  +#255#6#6#6#255#2#0#0#255#2#0#0#255#6#5#1#255#2#1#0#255#4#3#0#255#2#1#0#255#0
+  +#1#0#255#254#255#253#255#249#251#251#255#253#255#255#255#249#253#254#255#251
+  +#255#255#255#249#248#250#255#12#11#13#255#0#0#0#255#145#145#145#255#143#141
+  +#140#255#146#144#143#255#149#148#144#255#148#147#143#255#145#144#140#255#147
+  +#146#142#255#154#152#151#255#6#7#5#255#255#255#255#255#246#248#248#255#253
+  +#255#255#255#242#246#247#255#255#252#254#255#2#0#1#255#155#153#153#255#2#0#0
+  +#255#15#11#10#255#9#5#4#255#4#1#0#255#4#1#0#255#8#5#1#255#2#1#0#255#2#0#0#255
+  +#0#1#0#255#3#3#3#255#253#255#255#255#246#248#249#255#253#255#255#255#2#0#1
+  +#255#153#150#152#255#141#139#139#255#2#0#0#255#198#194#193#255#200#196#195
+  +#255#194#191#187#255#211#208#204#255#203#200#196#255#203#200#196#255#199#195
+  +#194#255#209#207#206#255#2#0#0#255#252#252#252#255#252#251#253#255#252#254
+  +#255#255#8#5#7#255#2#0#1#255#149#144#145#255#10#5#6#255#209#204#203#255'=87'
+  +#255'<74'#255'<74'#255'50-'#255'@=9'#255'A=<'#255#187#185#184#255#8#6#6#255#2
+  +#2#2#255#255#254#255#0#255#254#255#0#2#0#1#255#149#146#148#255#9#4#5#255#198
+  +#193#194#255#199#194#193#255#199#194#193#255#209#204#201#255#201#196#193#255
+  +#209#204#201#255#195#190#187#255#209#205#204#255#205#201#200#255#197#195#195
+  +#255#2#0#0#255#247#246#248#255#251#250#252#255#18#13#15#255#145#140#142#255#6
+  +#0#1#255#193#187#188#255'B=<'#255'@;:'#255'4-*'#255'@96'#255'>96'#255'4/,'
+  +#255'954'#255';76'#255#194#192#192#255#5#3#3#255#255#254#255#0#253#252#254
+  +#255#4#0#1#255#153#148#150#255#5#0#0#255#207#201#202#255#201#196#195#255#199
+  +#194#193#255#215#208#205#255#203#196#193#255#194#189#186#255#217#212#209#255
+  +#197#193#192#255#200#196#195#255#205#203#203#255#2#0#0#255#254#253#255#255
+  +#255#254#255#0#4#0#1#255#146#141#143#255#11#5#6#255#197#191#192#255':54'#255
+  +'<76'#255'C<9'#255'<52'#255'<74'#255'941'#255'<87'#255'621'#255#195#193#193
+  +#255#2#0#0#255#255#254#255#0#255#254#255#0#8#3#5#255#143#138#140#255#7#1#2
+  +#255#203#197#198#255#213#208#207#255#204#199#198#255#189#182#179#255#208#201
+  +#198#255#202#197#194#255#213#208#205#255#199#195#194#255#204#200#199#255#204
+  +#202#202#255#6#4#4#255#255#254#255#0#247#246#248#255#7#4#6#255#152#149#151
+  +#255#4#0#0#255#201#196#197#255'721'#255'D?>'#255'<74'#255';63'#255'<74'#255
+  +'4/,'#255'843'#255'B>='#255#199#197#197#255#2#0#0#255#253#252#254#255#255#254
+  +#255#0#2#0#1#255#147#144#146#255#5#0#1#255#213#208#209#255#197#192#191#255
+  +#192#187#186#255#212#207#204#255#199#194#191#255#204#199#196#255#205#202#198
+  +#255#208#204#203#255#199#197#196#255#195#193#193#255#9#9#9#255#255#254#255#0
+  +#254#253#255#255#3#0#2#255#158#155#157#255#2#0#0#255#201#199#199#255':65'#255
+  +'954'#255'DA='#255':73'#255'52.'#255'>;7'#255'1-,'#255'<:9'#255#204#202#202
+  +#255#0#0#0#255#249#248#250#255#252#254#255#255#255#254#255#0#2#0#1#255#7#5#5
+  +#255#199#197#197#255#199#195#194#255#212#208#207#255#193#190#186#255#204#201
+  +#197#255#201#198#194#255#212#211#207#255#197#195#194#255#193#194#192#255#203
+  +#203#203#255#0#0#0#255#253#255#255#255#253#255#255#255#249#248#250#255#255
+  +#254#255#0#0#0#0#255#0#0#0#255#18#16#15#255#2#0#0#255#4#3#0#255#3#2#0#255#2#1
+  +#0#255#2#1#0#255#3#1#0#255#0#1#0#255#0#0#0#255#7#9#9#255#251#253#254#255#243
+  +#247#248#255#255#254#255#0#253#252#254#255#255#255#255#255#255#255#255#255
+  +#250#248#247#255#255#253#252#255#255#255#252#255#254#253#249#255#255#255#252
+  ,#255#253#252#248#255#255#255#254#255#249#250#248#255#253#255#255#255#249#251
+  +#251#255#250#254#255#255#251#255#255#255#255#251#255#255#255#244#250#255#250
+  +#254#255#255#246#255#255#255#250#255#248#255#251#255#249#255#253#252#255#255
+  +#248#247#255#255#251#250#255#255#244#246#254#255#255#255#251#255#244#252#242
+  +#255#246#255#255#255#250#254#255#255#250#238#244#255#255#251#255#255#255#245
+  +#245#255#255#249#255#255#236#234#255#255#241#241#255#255#245#245#255#255#250
+  +#246#255#255#248#243#255#255#243#239#255#255#248#241#255#255#248#243#255#255
+  +#243#239#255#255#246#246#255#255#235#235#255#255#243#241#255#255#255#249#255
+  +#255#255#245#245#255#253#255#249#255#237#236#255#255'<.'#164#255'<*'#185#255
+  +'>,'#157#255'C5'#149#255'A2'#148#255'?2'#148#255'<,'#145#255'C4'#150#255'C5'
+  +#149#255'?-'#158#255'=+'#186#255'5'''#157#255#239#238#255#255#251#255#249#255
+  +#243#255#246#255#241#243#255#255'C2'#195#255#175#149#255#255#194#171#255#255
+  +#194#174#255#255#192#173#255#255#199#181#255#255#202#184#255#255#192#173#255
+  +#255#200#180#255#255#188#165#255#255#180#154#255#255'>-'#190#255#241#243#255
+  +#255#241#255#244#255#248#255#255#255#239#241#255#255'+'#29#155#255#185#165
+  +#255#255#179#161#255#255#168#150#243#255#170#154#241#255#174#159#243#255#196
+  +#181#255#255#178#162#249#255#166#148#241#255#175#157#255#255#176#156#255#255
+  +';-'#170#255#234#236#255#255#248#255#255#255#250#255#255#255#244#244#255#255
+  +'4&'#150#255#200#182#255#255#193#175#255#255#198#180#255#255#214#195#255#255
+  +#213#195#255#255#211#192#255#255#209#190#255#255#212#194#255#255#195#177#255
+  +#255#194#176#255#255';/'#159#255#239#239#255#255#250#255#255#255#243#246#237
+  +#255#248#246#255#255'C4'#157#255#198#177#255#255#183#162#247#255#183#159#229
+  +#255#196#169#243#255#209#179#254#255#184#154#230#255#183#156#230#255#205#181
+  +#251#255#185#164#249#255#202#181#255#255'<-'#150#255#248#244#255#255#245#248
+  +#239#255#255#255#248#255#250#247#255#255'=/'#149#255#193#173#255#255#214#193
+  +#255#255#219#196#255#255#214#187#253#255#225#196#255#255#221#191#255#255#220
+  +#193#255#255#215#192#254#255#217#196#255#255#188#168#255#255'@2'#152#255#250
+  +#247#255#255#255#255#248#255#248#255#248#255#246#246#255#255'<.'#152#255#195
+  +#175#255#255#174#158#236#255#218#202#255#255#175#156#211#255#223#203#255#255
+  +#191#170#225#255#173#154#209#255#189#173#227#255#166#150#228#255#193#173#255
+  +#255'>0'#154#255#246#246#255#255#249#255#249#255#251#253#253#255#246#244#255
+  +#255'@1'#157#255#203#183#255#255#203#187#255#255#209#194#251#255#216#196#255
+  +#255#212#193#250#255#219#197#255#255#208#189#246#255#205#190#248#255#211#195
+  +#255#255#202#182#255#255'9*'#150#255#246#244#255#255#239#244#243#255#255#251
+  +#255#255#240#230#255#255'=,'#149#255#196#174#255#255#181#161#244#255#213#190
+  +#255#255#189#160#239#255#182#153#233#255#183#150#234#255#224#196#255#255#189
+  +#165#235#255#167#147#230#255#192#170#255#255'G6'#159#255#251#241#255#255#255
+  +#251#255#255#255#249#255#255#252#236#255#255'K4'#161#255#199#174#255#255#209
+  +#187#255#255#209#186#254#255#222#193#255#255#211#179#255#255#224#192#255#255
+  +#211#182#255#255#215#192#255#255#209#187#255#255#210#185#255#255'C,'#153#255
+  +#243#227#255#255#255#249#255#255#255#242#255#255#255#237#255#255'D('#159#255
+  +#202#172#255#255#176#156#233#255#216#199#255#255#179#156#224#255#218#193#255
+  +#255#178#153#227#255#183#160#228#255#211#194#251#255#187#167#244#255#193#163
+  +#255#255'F*'#161#255#255#238#255#255#255#244#255#255#252#242#254#255#253#240
+  +#255#255'F3'#162#255#187#167#255#255#215#200#255#255#200#187#255#255#211#195
+  +#255#255#197#180#255#255#203#186#255#255#210#194#255#255#208#195#255#255#197
+  +#182#255#255#201#181#255#255'=*'#153#255#250#237#255#255#255#250#255#255#250
+  +#254#255#255#225#228#255#255'01'#135#255'55'#161#255'1*'#146#255'<3'#155#255
+  +'7-'#151#255'>6'#161#255'<4'#159#255'4*'#148#255'8/'#151#255'5.'#150#255'66'
+  +#162#255'<='#147#255#240#243#255#255#248#252#255#255#241#253#255#0#237#248
+  +#255#255#221#235#255#255#209#217#255#255#223#220#255#255#222#216#255#255#221
+  +#214#255#255#222#217#255#255#223#218#255#255#222#217#255#255#227#218#255#255
+  +#222#220#255#255#215#222#255#255#221#235#255#255#232#243#255#255#244#255#255
+  +#255#247#251#246#255#253#255#254#255#250#250#250#255#255#255#255#255#255#254
+  +#255#255#249#243#244#255#255#253#255#255#249#239#245#255#249#239#245#255#255
+  +#253#255#255#249#243#244#255#255#255#254#255#255#254#255#255#250#250#250#255
+  +#253#255#254#255#247#251#246#255#250#252#252#255#251#253#253#255#252#254#254
+  +#255#251#253#253#255#252#253#251#255#255#255#254#255#249#250#248#255#255#255
+  +#254#255#255#255#254#255#249#250#248#255#255#255#254#255#252#253#251#255#251
+  +#253#253#255#252#254#254#255#251#253#253#255#250#252#252#255#251#254#255#255
+  +#251#254#255#255#247#254#251#255#248#255#252#255#246#255#254#255#13#28#20#255
+  +#8#26#13#255#0#18#1#255#0#18#1#255#8#27#12#255#13#27#21#255#246#255#254#255
+  +#248#255#252#255#247#254#251#255#251#254#255#255#251#254#255#255#252#246#255
+  +#255#253#253#255#255#250#255#254#255#243#255#248#255#0#22#7#255#164#196#172
+  ,#255#152#191#159#255#171#214#177#255#171#214#177#255#152#191#159#255#166#195
+  +#172#255#0#22#7#255#243#255#248#255#250#255#254#255#255#253#255#255#252#246
+  +#255#255#255#249#255#255#255#244#254#255#255#254#255#255#11#28#15#255#171#207
+  +#171#255#153#204#154#255#164#225#169#255#134#202#143#255#134#202#143#255#162
+  +#225#169#255#153#204#154#255#171#207#171#255#11#28#15#255#253#254#255#255#255
+  +#244#254#255#255#249#255#255#255#250#255#255#255#250#255#255#21#23#23#255#7
+  +#24#11#255#168#203#169#255#153#202#156#255#154#212#158#255#145#210#154#255
+  +#147#210#154#255#152#212#158#255#155#202#156#255#168#203#169#255#7#24#11#255
+  +#21#23#23#255#255#250#255#255#255#250#255#255#240#247#250#255#248#255#255#255
+  +#18' '#21#255'x'#138'}'#255#0#19#7#255#175#200#186#255#168#197#174#255#166
+  +#199#172#255#168#199#172#255#168#197#174#255#175#200#186#255#0#19#7#255'x'
+  +#138'}'#255#18' '#21#255#248#255#255#255#240#247#250#255#246#255#254#255#239
+  +#254#246#255#8#25#11#255'|'#143'~'#255#131#154#140#255#0#21#5#255#8'%'#12#255
+  +#0#29#0#255#0#29#0#255#8'%'#12#255#0#21#5#255#131#154#140#255'|'#143'~'#255#8
+  +#25#11#255#239#254#246#255#246#255#254#255#254#255#247#255#253#255#248#255#5
+  +#18#4#255'q'#138'p'#255#127#166'y'#255'l'#159'f'#255'e'#159'd'#255'd'#160'd'
+  +#255'd'#160'd'#255'e'#159'd'#255'l'#159'f'#255#127#166'y'#255'q'#138'p'#255#5
+  +#18#4#255#253#255#248#255#254#255#247#255#252#254#242#255#247#254#239#255#25
+  +')'#23#255'~'#157'|'#255'`'#147'Z'#255'p'#175'i'#255'['#164'['#255'Z'#168'['
+  +#255'Z'#168'['#255'['#164'['#255'p'#175'i'#255'`'#147'Z'#255'~'#157'|'#255#25
+  +'*'#21#255#247#254#239#255#250#254#242#255#248#255#248#255#239#255#239#255#0
+  +#28#0#255' J!'#255'd'#155'j'#255']'#159'd'#255'Y'#165'^'#255'U'#167'Z'#255'U'
+  +#167'Z'#255'Y'#165'^'#255']'#159'd'#255'd'#155'j'#255' J!'#255#0#28#0#255#239
+  +#255#240#255#246#255#248#255#248#255#251#255#244#255#247#255#1' '#1#255#31'K'
+  +'"'#255'!X)'#255'W'#155'b'#255'X'#169'`'#255'U'#172'\'#255'U'#172'\'#255'X'
+  +#169'`'#255'W'#155'b'#255'!X)'#255#31'K"'#255#1' '#1#255#244#255#247#255#248
+  +#255#251#255#255#251#250#255#244#248#242#255#246#255#245#255#0'!'#0#255#24'N'
+  +#25#255#14'V'#16#255#8']'#13#255#9'd'#15#255#9'd'#15#255#8']'#13#255#14'V'#16
+  +#255#24'N'#25#255#0'!'#0#255#244#255#245#255#246#248#242#255#255#251#250#255
+  +#255#252#255#255#255#254#255#255#237#244#237#255#243#255#242#255#0' '#0#255
+  +' W '#255#28'_!'#255#7'P'#12#255#7'O'#13#255#28'_!'#255' W '#255#0' '#0#255
+  +#243#255#242#255#237#244#237#255#255#254#255#255#255#252#255#255#255#251#255
+  +#0#251#247#253#255#253#255#255#255#250#255#252#255#246#255#248#255#4#26#8#255
+  +#3#29#6#255#3' '#6#255#3' '#7#255#3#29#6#255#4#26#8#255#246#255#248#255#250
+  +#255#252#255#253#255#255#255#251#247#253#255#255#251#255#0#255#251#255#0#255
+  +#252#255#255#253#252#255#255#252#254#255#255#246#247#251#255#251#255#255#255
+  +#248#255#252#255#250#255#252#255#250#255#252#255#248#255#252#255#251#255#255
+  +#255#244#247#251#255#254#253#255#255#253#252#255#255#255#252#255#255#255#251
+  +#255#0#255#255#254#0#255#253#252#255#255#254#255#255#252#251#255#255#251#251
+  +#255#255#253#252#255#255#243#241#253#255#253#251#255#255#253#251#255#255#243
+  +#242#252#255#253#252#255#255#251#251#255#255#252#251#255#255#255#255#255#255
+  +#255#253#253#255#255#255#254#0#244#242#241#255#255#255#255#255#249#248#250
+  +#255#255#254#255#255#253#252#255#255#253#252#255#255#250#248#255#255#250#248
+  +#255#255#250#248#255#255#250#248#255#255#253#252#255#255#253#253#255#255#255
+  +#254#255#255#249#248#250#255#255#255#255#255#244#242#241#255#255#255#255#255
+  +#252#252#252#255#255#254#255#255#251#250#254#255#246#245#254#255'JIS'#255'@@'
+  +'L'#255'GGU'#255'GGU'#255'@@L'#255'JIS'#255#246#245#254#255#251#249#255#255
+  +#255#254#255#255#252#252#252#255#255#255#255#255#255#254#255#255#255#254#255
+  +#255#250#249#253#255#249#249#255#255'CBL'#255'??K'#255#161#161#175#255#144
+  +#144#158#255#144#143#159#255#161#161#175#255'A?K'#255'CBL'#255#251#249#255
+  +#255#250#249#253#255#255#254#255#255#255#255#255#255#250#251#255#255#253#254
+  +#255#255#246#246#252#255'GFO'#255'IGS'#255#159#159#173#255#156#155#171#255
+  +#157#157#173#255#157#157#175#255#155#155#171#255#159#159#173#255'GGS'#255'GF'
+  +'O'#255#246#246#252#255#253#254#255#255#250#252#253#255#252#253#255#255#253
+  +#253#255#255#253#252#255#255'DEO'#255'EES'#255'..>'#255#151#151#169#255#154
+  +#154#172#255#154#154#172#255#151#151#169#255'/.>'#255'EEQ'#255'FEO'#255#253
+  +#252#255#255#253#253#255#255#252#253#255#255#248#248#254#255#253#253#255#255
+  +#244#246#254#255'EFP'#255#165#165#179#255'MM]'#255'KK]'#255'78L'#255'78L'#255
+  +'IK]'#255'MM]'#255#164#165#179#255'EEQ'#255#244#246#254#255#253#253#255#255
+  +#248#248#254#255#253#253#255#255#252#252#255#255#251#252#255#255'??K'#255#183
+  +#184#198#255#177#177#193#255#171#172#192#255#181#182#202#255#181#182#202#255
+  +#171#173#191#255#177#177#195#255#183#184#198#255'??K'#255#251#253#255#255#252
+  +#251#255#255#253#253#255#255#253#253#255#255#248#248#254#255#251#252#255#255
+  +'FFR'#255#176#177#191#255#184#184#200#255#167#168#188#255#179#180#200#255#179
+  ,#180#200#255#167#169#187#255#184#184#202#255#176#177#191#255'FFR'#255#251#253
+  +#255#255#248#247#255#255#253#253#255#255#246#246#252#255#253#253#255#255#243
+  +#245#253#255'EFP'#255#177#177#191#255#170#170#186#255#193#193#211#255#180#181
+  +#201#255#180#181#201#255#191#193#211#255#170#170#186#255#176#177#191#255'EEQ'
+  +#255#243#245#253#255#253#253#255#255#246#246#252#255#253#254#255#255#244#244
+  +#250#255#253#252#255#255'LMW'#255#181#181#195#255#185#185#201#255#175#175#193
+  +#255#172#172#190#255#172#172#190#255#175#175#193#255#186#185#201#255#181#181
+  +#193#255'NMW'#255#253#252#255#255#244#244#250#255#253#254#255#255#243#244#248
+  +#255#253#254#255#255#253#253#255#255'54='#255#190#188#200#255#172#172#186#255
+  +#171#170#186#255#185#185#201#255#185#185#203#255#170#170#186#255#172#172#186
+  +#255#188#188#200#255'54='#255#253#253#255#255#253#254#255#255#243#245#246#255
+  +#254#253#255#255#255#254#255#255#255#254#255#255'KKQ'#255'76@'#255#168#168
+  +#180#255#155#155#169#255#151#151#165#255#151#150#166#255#155#155#169#255#170
+  +#168#180#255'76@'#255'MKQ'#255#255#254#255#255#255#254#255#255#254#254#254
+  +#255#255#255#255#255#253#253#253#255#246#245#247#255#254#253#255#255'@?H'#255
+  +'?>H'#255'BBN'#255'CCQ'#255'CCQ'#255'BBN'#255'?>H'#255'@?H'#255#254#252#255
+  +#255#246#245#247#255#253#253#253#255#255#255#255#255#253#251#250#255#254#252
+  +#252#255#255#254#255#255#254#253#255#255#253#252#255#255#253#252#255#255#251
+  +#249#255#255#250#248#255#255#250#248#255#255#251#249#255#255#253#252#255#255
+  +#253#253#255#255#254#253#255#255#255#254#255#255#254#252#252#255#253#251#250
+  +#255#255#255#254#0#253#251#250#255#255#254#255#255#255#254#255#255#250#250
+  +#255#255#253#252#255#255#251#249#255#255#253#251#255#255#253#251#255#255#251
+  +#250#255#255#253#252#255#255#250#250#255#255#255#254#255#255#255#255#255#255
+  +#253#251#251#255#255#255#254#0#0#0#10'TImageList'#7'imTools'#6'Height'#2' '#5
+  +'Width'#2' '#4'left'#3#6#2#3'top'#2'~'#6'Bitmap'#10#14#144#0#0'Li'#9#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#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#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#171#171#150#171#171#171#255#171#171#171#255#171#171#171#255
+  +#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171
+  +#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171
+  +#171#255#171#171#171#255#170#170#170#255#167#167#167#255#167#167#167#255#169
+  +#169#169#153#171#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0#171#171
+  +#171#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#170#170#170#255#239#239#239#255
+  +#243#243#243#255#243#243#243#255#243#243#243#255#243#243#243#255#243#243#243
+  ,#255#243#243#243#255#243#243#243#255#243#243#243#255#243#243#243#255#243#243
+  +#243#255#243#243#243#255#243#243#243#255#243#243#243#255#239#239#239#255#213
+  +#213#213#255#197#197#197#255#183#183#183#255#170#170#170#132#171#171#171#0
+  +#171#171#171#0#171#171#171#0#171#171#171#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#169#169#169#255#241#240#241#255#240#240#240#255#240#240#240#255#240
+  +#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255
+  +#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240
+  +#255#240#240#240#255#235#235#235#255#208#208#208#255#185#185#185#255#220#220
+  +#220#255#178#178#178#255#169#169#169'c'#171#171#171#0#171#171#171#0#171#171
+  +#171#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#167#167#167#255#242#242#242#255
+  +#242#241#241#255#241#241#241#255#241#241#241#255#241#241#241#255#241#242#241
+  +#255#241#241#241#255#242#241#242#255#242#241#242#255#242#241#241#255#241#242
+  +#241#255#241#241#241#255#241#241#241#255#242#242#241#255#237#237#237#255#210
+  +#210#210#255#184#184#184#255#226#226#226#255#222#222#222#255#169#169#169#255
+  +#167#167#167'-'#171#171#171#0#171#171#171#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#166#166#166#255#240#240#240#255#240#240#240#255#240#240#240#255#240
+  +#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255
+  +#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240
+  +#255#240#240#240#255#235#235#235#255#205#205#205#255#182#182#182#255#215#216
+  +#216#255#225#225#225#255#196#196#196#255#163#163#163#156#171#171#171#1#171
+  +#171#171#0#255#255#255#0#255#255#255#0#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#164#164#255#239#239#239
+  +#255#238#238#238#255#238#238#238#255#239#238#238#255#238#238#238#255#238#238
+  +#238#255#238#239#238#255#238#238#238#255#238#238#239#255#238#238#238#255#238
+  +#238#238#255#239#238#238#255#238#238#238#255#238#238#238#255#234#233#234#255
+  +#199#199#200#255#174#174#174#255#180#180#180#255#183#183#183#255#183#183#183
+  +#255#157#157#157#255#171#171#171#7#171#171#171#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#162#162#162#255#237#237#237#255#236#237#237#255#237#237#237#255
+  +#237#237#236#255#237#236#237#255#237#237#237#255#236#237#236#255#237#236#237
+  +#255#237#237#237#255#236#237#237#255#237#237#237#255#237#237#237#255#237#237
+  +#237#255#237#237#237#255#234#234#234#255#220#220#220#255#218#218#218#255#221
+  +#221#221#255#223#223#223#255#222#222#222#255#160#160#160#255#171#171#171#9
+  +#171#171#171#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#160#160#160#255#235#235
+  +#235#255#235#235#235#255#235#234#234#255#234#235#234#255#234#234#234#255#235
+  +#235#235#255#235#235#235#255#235#235#234#255#235#234#234#255#235#234#234#255
+  +#235#234#234#255#235#235#234#255#235#235#234#255#234#234#235#255#233#234#233
+  +#255#234#233#234#255#234#234#233#255#235#234#234#255#235#235#235#255#232#232
+  +#232#255#158#158#158#255#171#171#171#4#171#171#171#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#158#158#158#255#234#234#234#255#233#233#233#255#233#233#233
+  +#255#233#233#233#255#233#233#233#255#233#233#233#255#233#233#233#255#233#233
+  +#233#255#233#233#233#255#233#233#233#255#233#233#233#255#233#233#233#255#233
+  +#233#233#255#233#233#233#255#233#233#233#255#233#233#233#255#233#233#233#255
+  +#233#233#233#255#233#233#233#255#232#232#232#255#158#158#158#255#171#171#171
+  +#0#171#171#171#0#255#255#255#0#255#255#255#0#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#156#156#255#232#232
+  +#232#255#230#231#231#255#231#231#231#255#231#231#230#255#231#231#231#255#231
+  +#231#231#255#231#231#230#255#230#230#230#255#230#231#231#255#231#231#231#255
+  +#231#230#231#255#231#231#230#255#231#231#231#255#231#231#231#255#231#231#231
+  +#255#230#231#231#255#231#230#231#255#230#230#230#255#228#228#228#255#224#224
+  +#224#255#155#155#155#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#154#154#154#255#230#230#230#255#229#229#229#255#229#229#229
+  +#255#229#229#229#255#229#229#229#255#229#229#229#255#229#229#229#255#229#229
+  +#229#255#229#229#229#255#229#229#229#255#229#229#229#255#229#229#229#255#229
+  +#229#229#255#227#227#227#255#226#226#226#255#225#225#225#255#224#224#224#255
+  +#224#223#224#255#224#223#224#255#222#221#222#255#154#154#154#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#151#151#152#255#228#228
+  ,#228#255#227#227#227#255#227#227#227#255#227#227#227#255#227#227#227#255#227
+  +#227#227#255#227#227#227#255#227#227#227#255#226#226#226#255#226#226#226#255
+  +#225#225#225#255#223#223#223#255#223#223#223#255#222#223#222#255#223#223#223
+  +#255#223#223#223#255#223#222#223#255#223#222#223#255#223#223#223#255#221#221
+  +#221#255#151#151#152#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#149#149#150#255#226#226#226#255#225#225#226#255#225#226#225
+  +#255#225#226#225#255#225#225#225#255#225#225#225#255#224#224#224#255#223#223
+  +#223#255#222#222#222#255#222#222#222#255#222#222#222#255#222#222#222#255#222
+  +#222#222#255#222#222#222#255#222#222#222#255#222#222#222#255#222#222#222#255
+  +#222#222#222#255#222#222#222#255#221#221#221#255#149#149#150#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#147#147#147#255#218#218
+  +#218#255#216#216#216#255#216#216#216#255#216#216#216#255#215#215#215#255#212
+  +#212#212#255#211#211#211#255#211#211#211#255#211#211#211#255#211#211#211#255
+  +#211#211#211#255#211#211#211#255#211#211#211#255#211#211#211#255#211#211#211
+  +#255#211#211#211#255#211#211#211#255#211#211#211#255#211#211#211#255#213#213
+  +#213#255#147#147#147#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#145#145#145#255#216#216#216#255#214#214#214#255#214#214#214
+  +#255#213#213#213#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210
+  +#210#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210#210#255#210
+  +#210#210#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210#210#255
+  +#210#210#210#255#210#210#210#255#212#212#212#255#145#145#145#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#142#142#143#255#214#214
+  +#214#255#212#212#212#255#211#211#211#255#210#210#210#255#210#210#210#255#210
+  +#210#210#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210#210#255
+  +#210#210#210#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210#210
+  +#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210#210#255#212#212
+  +#212#255#142#142#143#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#140#140#141#255#213#213#213#255#211#211#211#255#210#210#210
+  +#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210
+  +#210#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210#210#255#210
+  +#210#210#255#210#210#210#255#210#210#210#255#210#210#210#255#210#210#210#255
+  +#210#210#210#255#210#210#210#255#212#212#212#255#140#140#141#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#138#138#139#255#211#211
+  +#211#255#209#209#209#255#209#209#209#255#209#209#209#255#209#209#209#255#209
+  +#209#209#255#209#209#209#255#209#209#209#255#209#209#209#255#209#209#209#255
+  +#209#209#209#255#209#209#209#255#209#209#209#255#209#209#209#255#209#209#209
+  +#255#209#209#209#255#209#209#209#255#209#209#209#255#209#209#209#255#211#211
+  +#211#255#138#138#139#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#136#136#137#255#210#210#210#255#208#208#208#255#208#208#208
+  +#255#208#208#208#255#208#208#208#255#208#208#208#255#208#208#208#255#208#208
+  +#208#255#208#208#208#255#208#208#208#255#208#208#208#255#208#208#208#255#208
+  +#208#208#255#208#208#208#255#208#208#208#255#208#208#208#255#208#208#208#255
+  +#208#208#208#255#208#208#208#255#210#210#210#255#136#136#137#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#134#134#135#255#208#208
+  +#208#255#206#206#206#255#206#206#206#255#206#206#206#255#206#206#206#255#206
+  +#206#206#255#206#206#206#255#206#206#206#255#206#206#206#255#206#206#206#255
+  +#206#206#206#255#206#206#206#255#206#206#206#255#206#206#206#255#206#206#206
+  +#255#206#206#206#255#206#206#206#255#206#206#206#255#206#206#206#255#208#208
+  +#208#255#134#134#135#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
+  +#0#0#0#0#132#132#133#255#207#207#207#255#205#205#205#255#205#205#205#255#205
+  +#205#205#255#205#205#205#255#205#205#205#255#205#205#205#255#205#205#205#255
+  +#205#205#205#255#205#205#205#255#205#205#205#255#205#205#205#255#205#205#205
+  +#255#205#205#205#255#205#205#205#255#205#205#205#255#205#205#205#255#205#205
+  +#205#255#205#205#205#255#207#207#207#255#132#132#133#255#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#0#0#0#1#130#130#131#255#207#207#207#255#204#204#204#255
+  +#204#204#204#255#204#204#204#255#204#204#204#255#204#204#204#255#204#204#204
+  +#255#204#204#204#255#204#204#204#255#204#204#204#255#204#204#204#255#204#204
+  +#204#255#204#204#204#255#204#204#204#255#204#204#204#255#204#204#204#255#204
+  +#204#204#255#204#204#204#255#204#204#204#255#207#207#207#255#130#130#131#255
+  +#0#0#0#1#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#128#128#128#2#129#129#130#255#206#206
+  +#206#255#203#203#203#255#203#203#203#255#203#203#203#255#203#203#203#255#203
+  +#203#203#255#203#203#203#255#203#203#203#255#203#203#203#255#203#203#203#255
+  +#203#203#203#255#203#203#203#255#203#203#203#255#203#203#203#255#203#203#203
+  +#255#203#203#203#255#203#203#203#255#203#203#203#255#203#203#203#255#206#206
+  +#206#255#129#129#130#255'@@@'#4#0#0#0#1#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'UUU'#3#127#127
+  +#128#255#217#217#217#255#223#223#223#255#223#223#223#255#223#223#223#255#223
+  +#223#223#255#223#223#223#255#223#223#223#255#223#223#223#255#223#223#223#255
+  +#223#223#223#255#223#223#223#255#223#223#223#255#223#223#223#255#223#223#223
+  +#255#223#223#223#255#223#223#223#255#223#223#223#255#223#223#223#255#223#223
+  +#223#255#217#217#217#255#127#127#128#255'UUU'#6#0#0#0#1#255#255#255#0#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#128#128#2'~~'#127#153'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~'
+  +'~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'
+  +#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127
+  +#255'~~'#127#255'~~'#127#255'~~'#127#255'}}~'#155'@@@'#4#0#0#0#1#255#255#255
+  +#0#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#0#1#128#128#128#2'fff'#5'MMM'#10'[[['#14'ZZZ'#17'UUU'#18'YYY'
+  +#20'UUU'#24'RRR'#28'XXX'#29'UUU'#30'UUU'#30'UUU'#30'XXX'#29'XXX'#26'UUU'#21
+  +'QQQ'#19'ZZZ'#17'UUU'#15'UUU'#12'III'#7'UUU'#3#0#0#0#1#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#0#0#0#0#0#0#0#0#0#0#0#1#0#0#0#1#128#128#128#2#128#128#128#2#128
+  +#128#128#2'UUU'#3'@@@'#4'fff'#5'fff'#5'UUU'#6'UUU'#6'UUU'#6'fff'#5#128#128
+  +#128#4'UUU'#3#128#128#128#2#128#128#128#2#128#128#128#2#0#0#0#1#0#0#0#1#0#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#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#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#171#171#0#171#171#171#0#171#171#171#0#171
+  +#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0#171#171
+  +#171#27#171#171#171'l'#171#171#171#183#171#171#171#204#171#171#171#252#171
+  +#171#171#252#171#171#171#204#171#171#171#183#171#171#171'l'#171#171#171#27
+  +#171#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0#171
+  +#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#170#170#170#0#170#170#170#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#170#170#170'3'#170
+  ,#170#170#156#178#178#178#255#203#201#202#255#228#224#225#255#234#230#231#255
+  +#247#242#243#255#247#244#245#255#234#233#234#255#227#226#226#255#202#201#201
+  +#255#178#178#178#255#170#170#170#156#170#170#170'3'#255#255#255#0#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#170#170#170#0#170#170#170#0#170
+  +#170#170#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#169#169
+  +#169#0#169#169#169#0#255#255#255#0#255#255#255#0#255#255#255#0#169#169#169
+  +#138#177#177#177#255#218#215#216#255#248#243#243#255#249#242#243#255#245#237
+  +#239#255#243#234#235#255#241#234#235#255#241#237#238#255#243#241#242#255#244
+  +#243#243#255#246#244#244#255#245#244#244#255#218#218#218#255#177#177#177#255
+  +#169#169#169#138#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#169
+  +#169#169#0#169#169#169#0#169#169#169#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#167#167#168#0#167#167#168#0#255#255#255#0#167#167#168#6
+  +#167#167#168#150#191#189#190#255#242#240#242#255#246#243#244#255#245#239#241
+  +#255#243#234#235#255#241#231#233#255#239#231#233#255#237#231#232#255#239#237
+  +#238#255#239#239#239#255#239#239#239#255#239#239#239#255#241#240#240#255#243
+  +#243#243#255#242#241#241#255#193#192#193#255#167#167#168#150#167#167#168#6
+  +#255#255#255#0#255#255#255#0#167#167#168#0#167#167#168#0#167#167#168#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#166#166#166#0#166#166
+  +#166#0#255#255#255#0#166#166#166#150#199#197#197#255#244#241#241#255#243#240
+  +#241#255#242#237#239#255#242#237#239#255#241#235#237#255#239#230#232#255#237
+  +#230#232#255#235#231#234#255#236#235#237#255#235#237#238#255#236#237#237#255
+  +#236#237#237#255#237#237#237#255#237#237#237#255#241#240#240#255#243#243#243
+  +#255#202#202#202#255#166#166#166#150#255#255#255#0#255#255#255#0#166#166#166
+  +#0#166#166#166#0#166#166#166#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#164#164#164#0#164#164#164#0#164#164#164#138#186#185#186#255#241
+  +#239#239#255#241#239#239#255#239#237#237#255#239#237#238#255#239#236#238#255
+  +#239#235#238#255#238#230#234#255#234#230#232#255#233#230#233#255#234#235#237
+  +#255#234#235#237#255#234#235#237#255#234#236#237#255#234#236#237#255#235#236
+  +#237#255#236#237#237#255#239#239#239#255#241#241#241#255#189#188#188#255#164
+  +#164#164#138#255#255#255#0#164#164#164#0#164#164#164#0#164#164#164#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#163#163#163#0#163#163#163'6'
+  +#170#170#170#255#232#230#231#255#239#238#239#255#236#235#236#255#236#235#236
+  +#255#235#235#236#255#235#235#237#255#236#234#237#255#235#230#235#255#233#228
+  +#233#255#232#231#234#255#231#234#237#255#230#234#236#255#230#234#236#255#230
+  +#234#236#255#231#234#235#255#232#235#235#255#234#235#236#255#235#235#236#255
+  +#239#238#239#255#236#235#235#255#170#170#170#255#163#163#163'6'#163#163#163#0
+  +#163#163#163#0#163#163#163#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#161#161#161#0#161#161#161#159#203#202#203#255#237#236#237#255#235
+  +#234#235#255#234#234#235#255#233#234#235#255#232#234#235#255#232#233#235#255
+  +#233#233#237#255#234#230#235#255#231#228#233#255#229#229#234#255#228#232#236
+  +#255#227#232#235#255#227#232#235#255#227#232#235#255#228#233#235#255#230#233
+  +#235#255#232#234#235#255#233#234#235#255#234#234#235#255#239#238#239#255#207
+  +#207#207#255#161#161#161#159#161#161#161#0#161#161#161#0#161#161#161#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#159#159#159'!'#168#168
+  +#168#255#227#226#227#255#235#235#235#255#234#233#234#255#232#232#234#255#230
+  +#232#234#255#229#232#234#255#229#232#234#255#230#232#236#255#232#233#238#255
+  +#232#232#238#255#231#235#240#255#230#237#242#255#229#235#239#255#225#233#237
+  +#255#225#232#234#255#225#231#234#255#227#232#234#255#228#232#234#255#231#232
+  +#234#255#232#232#234#255#236#235#235#255#233#231#232#255#168#168#168#255#159
+  +#159#159'!'#159#159#159#0#159#159#159#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#157#157#157'x'#187#187#187#255#230#229#230#255#232#232
+  +#232#255#231#232#232#255#230#231#232#255#228#230#232#255#226#230#233#255#226
+  +#230#234#255#229#234#237#255#220#224#229#255#207#208#210#255#195#196#196#255
+  +#196#196#197#255#207#209#211#255#217#224#228#255#224#233#236#255#223#230#233
+  +#255#224#230#232#255#226#230#232#255#228#230#233#255#230#231#233#255#232#232
+  +#233#255#235#234#235#255#189#188#188#255#157#157#157'x'#157#157#157#0#157#157
+  +#157#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#155#155#155
+  +#189#201#200#201#255#229#229#229#255#230#230#230#255#229#229#230#255#227#229
+  +#230#255#225#228#230#255#224#228#231#255#225#230#234#255#217#222#226#255#196
+  +#196#198#255#211#212#212#157#236#237#237'm'#238#238#238'k'#212#212#212#155
+  +#196#196#198#255#214#221#224#255#221#229#233#255#221#228#230#255#224#228#231
+  +#255#226#228#231#255#228#229#231#255#230#229#231#255#233#232#233#255#207#205
+  +#206#255#155#155#155#189#155#155#155#0#155#155#155#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#152#152#153#228#210#208#209#255#230#229
+  ,#229#255#229#228#229#255#227#228#229#255#225#228#229#255#223#227#229#255#221
+  +#226#230#255#223#228#233#255#203#205#207#255#211#211#211#155#253#255#255'Z'
+  +#253#255#255'Z'#255#255#255'Y'#255#255#255'Y'#211#211#211#155#202#204#207#255
+  +#220#228#232#255#219#226#230#255#221#226#230#255#224#227#230#255#226#228#230
+  +#255#228#228#230#255#231#230#231#255#217#214#215#255#152#152#153#228#171#171
+  +#171#0#171#171#171#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#150#150#151#249#214#212#213#255#229#228#228#255#228#227#228#255#226#226#228
+  +#255#224#226#228#255#222#226#228#255#220#225#228#255#220#226#231#255#191#191
+  +#192#255#237#237#237'k'#253#255#255'Z'#253#255#255'Z'#255#255#255'Y'#255#255
+  +#255'Y'#237#237#237'k'#191#191#192#255#218#226#231#255#218#224#228#255#219
+  +#225#228#255#222#226#228#255#224#226#228#255#226#226#228#255#228#228#229#255
+  +#215#212#213#255#150#150#151#249#171#171#171#0#171#171#171#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#148#148#149#249#213#211#212#255
+  +#213#210#212#255#211#210#212#255#209#209#212#255#205#208#212#255#202#208#212
+  +#255#199#207#212#255#196#206#213#255#154#155#156#255#141#141#141#30#170#170
+  +#170#152#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255#171
+  +#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255
+  +#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171
+  +#255#170#170#170#152'222'#2#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#146#146#146#228#207#204#206#255#213#209#211#255#209#207#210#255#207
+  +#206#210#255#204#206#210#255#200#205#209#255#196#204#209#255#199#208#215#255
+  +#168#171#174#255#139#139#139'j'#169#169#169#255#252#252#252#255#250#250#250
+  +#255#250#250#250#255#250#250#250#255#250#250#250#255#250#250#250#255#250#250
+  +#250#255#250#250#250#255#250#250#250#255#250#250#250#255#250#250#250#255#250
+  +#250#250#255#250#250#250#255#252#252#252#255#169#169#169#255'222'#6#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#144#144#144#186#194#191#193
+  +#255#212#207#210#255#208#204#207#255#205#203#207#255#202#203#207#255#198#202
+  +#207#255#195#201#206#255#197#207#213#255#186#195#200#255#149#150#152#255#166
+  +#166#166#255#243#243#243#255#218#218#218#255#205#205#205#255#205#205#205#255
+  +#205#205#205#255#205#205#205#255#205#205#205#255#205#205#205#255#205#205#205
+  +#255#205#205#205#255#205#205#205#255#205#205#205#255#218#218#218#255#243#243
+  +#243#255#166#166#166#255'222'#13#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#141#141#142'x'#174#173#174#255#212#207#210#255#206#202#205#255
+  +#204#201#205#255#201#201#205#255#197#200#205#255#194#200#204#255#194#202#208
+  +#255#199#210#216#255#177#188#193#255#163#163#163#255#237#237#237#255#201#201
+  +#201#255'r'#202#250#255'{'#205#250#255'y'#205#250#255'v'#203#250#255'u'#203
+  +#250#255's'#203#250#255'r'#202#249#255'q'#201#249#255'j'#199#249#255'M'#188
+  +#248#255#201#201#201#255#237#237#237#255#163#163#163#255'222'#18#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#139#139#140#27#147#146#147#255
+  +#211#207#209#255#208#203#206#255#203#200#203#255#200#199#203#255#197#199#203
+  +#255#194#198#202#255#192#198#202#255#191#200#206#255#185#193#201#255#159#159
+  +#159#255#237#237#237#255#201#201#201#255'R'#190#248#255'W'#192#248#255'W'#191
+  +#249#255'U'#191#249#255'T'#191#249#255'Q'#189#248#255'L'#187#248#255'E'#185
+  +#248#255'7'#180#247#255#21#166#246#255#201#201#201#255#237#237#237#255#159
+  +#159#159#255'222'#20#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#137#137#138#0#137#137#138#150#181#179#180#255#209#206#208#255#201#198#201
+  +#255#199#197#201#255#196#197#200#255#193#196#200#255#191#196#200#255#190#196
+  +#200#255#176#183#188#255#155#155#155#255#237#237#237#255#201#201#201#255'>'
+  +#163#238#255'X'#179#242#255'P'#177#243#255'L'#176#242#255'J'#175#242#255'F'
+  +#173#242#255'@'#170#242#255'5'#165#241#255'%'#158#239#255#22#144#235#255#201
+  +#201#201#255#237#237#237#255#155#155#155#255'222'#20#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#135#135#136#0#135#135#136'-'#142#142#143
+  +#255#206#204#205#255#205#202#204#255#197#196#198#255#195#195#198#255#193#195
+  +#198#255#191#194#198#255#189#194#198#255#177#182#186#255#150#150#151#255#237
+  +#237#237#255#201#201#201#255'&'#137#228#255'='#155#234#255'L'#163#236#255'S'
+  +#167#237#255'W'#169#237#255'W'#169#237#255'S'#167#237#255'L'#163#236#255'='
+  +#155#234#255'&'#137#228#255#201#201#201#255#237#237#237#255#150#150#151#255
+  +'222'#20#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#133#133#134
+  +#0#133#133#134#0#133#133#134#135#155#154#155#255#209#207#208#255#201#199#201
+  +#255#195#194#196#255#193#193#196#255#192#193#196#255#190#193#196#255#178#179
+  +#184#255#146#146#146#255#237#237#237#255#201#201#201#255#22'r'#220#255'%'#128
+  +#224#255'5'#138#227#255'@'#144#229#255'F'#148#230#255'J'#150#230#255'L'#151
+  +#230#255'P'#153#231#255'X'#158#231#255'>'#138#225#255#201#201#201#255#237#237
+  +#237#255#146#146#146#255'222'#20#255#255#255#0#255#255#255#0#255#255#255#0
+  ,#255#255#255#0#132#132#133#0#132#132#133#0#132#132#133#0#132#132#133#147#163
+  +#162#163#255#208#206#208#255#199#199#200#255#192#192#194#255#192#191#194#255
+  +#191#191#194#255#177#178#182#255#141#141#142#255#237#237#237#255#201#201#201
+  +#255#11'V'#206#255#13'W'#207#255#19'\'#208#255#25'`'#210#255#30'c'#211#255'!'
+  +'e'#211#255'"g'#212#255'$h'#212#255'+m'#213#255'=z'#217#255#201#201#201#255
+  +#237#237#237#255#141#141#142#255'222'#20#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#130#130#131#0#0#0#0#1#128#128#128#2'fff'#5#129#129#130
+  +#151#153#153#154#255#207#206#207#255#205#202#204#255#196#194#196#255#192#190
+  +#193#255#178#174#179#255#137#137#138#255#237#237#237#255#201#201#201#255#7'9'
+  +#154#255#4'5'#150#255#4'5'#150#255#5'5'#151#255#6'7'#152#255#7'7'#153#255#8
+  +'9'#153#255#11'<'#156#255#18'C'#160#255'#U'#171#255#201#201#201#255#237#237
+  +#237#255#137#137#138#255'222'#20#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#129#129#129#0#128#128#128#2'mmm'#7'UUU'#18'UUU!{{{'#157#135
+  +#135#135#255#180#179#180#255#212#209#211#255#209#205#208#255#189#184#187#255
+  +#133#133#134#255#232#232#232#255#207#207#207#255#196#196#196#255#196#196#196
+  +#255#196#196#196#255#196#196#196#255#196#196#196#255#196#196#196#255#196#196
+  +#196#255#196#196#196#255#196#196#196#255#196#196#196#255#207#207#207#255#232
+  +#232#232#255#133#133#134#255'222'#20#255#255#255#0#255#255#255#0#255#255#255
+  +#0#255#255#255#0#127#127#128#0'UUU'#3']]]'#11'XXX'#29'WWW5XXXKgghvwwx'#189
+  +#135#135#136#255#164#162#164#255#182#176#180#255#130#130#131#255#228#228#228
+  +#255#217#217#218#255#217#217#218#255#217#217#218#255#217#217#218#255#217#217
+  +#218#255#217#217#218#255#217#217#218#255#217#217#218#255#217#217#218#255#217
+  +#217#218#255#217#217#218#255#217#217#218#255#228#228#228#255#130#130#131#255
+  +'222'#18#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'~~'#127#0
+  +#128#128#128#2'mmm'#7'UUU'#18'UUU!WWW/WWW8YYY<cccRsss'#144'ttu'#205'wwx'#243
+  +#127#127#128#255#127#127#128#255#127#127#128#255#127#127#128#255#127#127#128
+  +#255#127#127#128#255#127#127#128#255#127#127#128#255#127#127#128#255#127#127
+  +#128#255#127#127#128#255#127#127#128#255#127#127#128#255#127#127#128#255'wwx'
+  +#166'222'#13#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'}}~'#0#0
+  +#0#0#1#128#128#128#2'fff'#5'MMM'#10'[[['#14'ZZZ'#17'UUU'#18'YYY'#20'UUU'#24
+  +'KKK!FFF/===A:::M999S999R999P777L666K777I666G555E333A333>1116222(222'#20'222'
+  +#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'}}~'#0'}}~'#0'}}~'
+  +#0#0#0#0#1#0#0#0#1#128#128#128#2#128#128#128#2#128#128#128#2'UUU'#3'@@@'#4'V'
+  +'VV'#7'III'#11'<<<'#19':::'#24'999'#26';;;'#25'>>>'#24'666'#23'888'#22'888'
+  +#22'888'#22'000'#21'000'#21'222'#20'222'#18'222'#13'222'#6'222'#2#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#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
+  +#171#171#150#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255
+  +#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171
+  +#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171
+  +#171#255#170#170#170#255#167#167#167#255#167#167#167#255#169#169#169#153#171
+  +#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0#171#171#171#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#170#170#170#255#239#239#239#255#243#243#243#255
+  +#243#243#243#255#243#243#243#255#243#243#243#255#243#243#243#255#243#243#243
+  +#255#243#243#243#255#243#243#243#255#243#243#243#255#243#243#243#255#243#243
+  +#243#255#243#243#243#255#243#243#243#255#239#239#239#255#213#213#213#255#197
+  +#197#197#255#183#183#183#255#170#170#170#132#171#171#171#0#171#171#171#0#171
+  +#171#171#0#171#171#171#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#169#169#169
+  +#255#241#240#241#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240
+  +#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240
+  +#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255
+  +#235#235#235#255#208#208#208#255#185#185#185#255#220#220#220#255#178#178#178
+  +#255#169#169#169'c'#171#171#171#0#171#171#171#0#171#171#171#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#167#167#167#255#242#242#242#255#242#241#241#255#241
+  +#241#241#255#241#241#241#255#241#241#241#255#241#242#241#255#241#241#241#255
+  +#242#241#242#255#242#241#242#255#242#241#241#255#241#242#241#255#241#241#241
+  +#255#241#241#241#255#242#242#241#255#237#237#237#255#210#210#210#255#184#184
+  +#184#255#226#226#226#255#222#222#222#255#169#169#169#255#167#167#167'-'#171
+  +#171#171#0#171#171#171#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#166#166#166
+  +#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240
+  +#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240
+  +#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255
+  +#235#235#235#255#205#205#205#255#182#182#182#255#215#216#216#255#225#225#225
+  +#255#196#196#196#255#163#163#163#156#171#171#171#1#171#171#171#0#255#255#255
+  +#0#255#255#255#0#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#164#164#255#239#239#239#255#238#238#238#255#238
+  +#238#238#255#172#172#172#255'}}~'#255'}}~'#255'}}~'#255#172#172#172#255#238
+  +#238#239#255#238#238#238#255#238#238#238#255#239#238#238#255#172#172#172#255
+  +'}}~'#255'zz{'#255#134#134#135#255#168#168#169#255#180#180#180#255#183#183
+  +#183#255#183#183#183#255#157#157#157#255#171#171#171#7#171#171#171#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#162#162#162#255#237#237#237#255#236#237#237#255
+  +#237#237#237#255'zz{'#255#179#179#180#255#182#182#182#255#180#180#181#255'zz'
+  +'{'#255#237#237#237#255#236#237#237#255#237#237#237#255#237#237#237#255#155
+  +#155#156#255#180#180#181#255#180#180#180#255#151#151#152#255'uuu'#255#221#221
+  +#221#255#223#223#223#255#222#222#222#255#160#160#160#255#171#171#171#9#171
+  +#171#171#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#160#160#160#255#235#235#235
+  +#255#235#235#235#255#235#234#234#255'vvw'#255#170#171#171#255#166#166#166#255
+  +#174#174#175#255'vvw'#255'vvw'#255'vvw'#255'vvw'#255'vvw'#255#150#150#151#255
+  +#175#175#175#255#165#165#166#255#146#146#147#255'uuv'#255#235#234#234#255#235
+  +#235#235#255#232#232#232#255#158#158#158#255#171#171#171#4#171#171#171#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#158#158#158#255#234#234#234#255#233#233
+  +#233#255#233#233#233#255'rrr'#255#157#157#158#255#216#216#216#255#169#169#170
+  +#255#172#172#173#255#174#174#175#255#175#175#176#255#175#175#176#255#174#174
+  +#175#255#172#172#173#255#169#169#170#255#216#216#216#255#133#133#134#255'rrr'
+  +#255#233#233#233#255#233#233#233#255#232#232#232#255#158#158#158#255#171#171
+  +#171#0#171#171#171#0#255#255#255#0#255#255#255#0#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#156#156#255#232
+  +#232#232#255#230#231#231#255#231#231#231#255'llm'#255#152#152#153#255#175#175
+  +#176#255#145#145#146#255#215#214#214#255#215#214#214#255#214#214#215#255#215
+  +#215#215#255#214#214#214#255#214#215#215#255#145#145#146#255#175#175#176#255
+  +#131#131#132#255'llm'#255#230#230#230#255#228#228#228#255#224#224#224#255#155
+  +#155#155#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
+  +#154#154#154#255#230#230#230#255#229#229#229#255#229#229#229#255'ggg'#255#146
+  +#146#147#255#145#145#146#255#137#137#138#255#211#211#211#255#206#127#199#255
+  +#206#127#199#255#206#127#199#255#206#127#199#255#211#211#211#255#137#137#138
+  +#255#145#145#146#255#128#128#129#255'ggg'#255#224#223#224#255#224#223#224#255
+  +#222#221#222#255#154#154#154#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#151#151#152#255#228#228#228#255#227#227#227#255#227
+  +#227#227#255'aaa'#255#143#142#142#255#203#203#203#255#132#132#132#255#208#208
+  +#207#255#202'|'#195#255#203'|'#195#255#203'|'#195#255#202'|'#195#255#207#207
+  +#208#255#132#132#132#255#203#203#203#255#127#127#127#255'aaa'#255#223#222#223
+  +#255#223#223#223#255#221#221#221#255#151#151#152#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#149#149#150#255#226#226#226#255
+  +#225#225#226#255#225#226#225#255'[[['#255#138#138#138#255#162#162#162#255#127
+  +#127#128#255#192#192#192#255#176'8'#172#255#176'8'#172#255#176'8'#172#255#176
+  +'8'#172#255#192#192#192#255#127#127#128#255#162#162#162#255'|||'#255'[[['#255
+  +#222#222#222#255#222#222#222#255#221#221#221#255#149#149#150#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#147#147#147#255#218#218
+  +#218#255#216#216#216#255#216#216#216#255'TTU'#255'yyy'#255'vvv'#255'iii'#255
+  +#201#201#201#255#178#6#173#255#178#6#173#255#178#6#173#255#178#6#173#255#201
+  +#201#201#255'iii'#255'vvv'#255'yyy'#255'TTU'#255#211#211#211#255#211#211#211
+  +#255#213#213#213#255#147#147#147#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#145#145#145#255#216#216#216#255#214#214#214#255#214
+  +#214#214#255'NNO'#255'vvw'#255#211#211#211#255'eef'#255#171#171#171#255'`'#26
+  +'h'#255'`'#26'h'#255'`'#26'h'#255'`'#26'h'#255#171#171#171#255'eef'#255#211
+  +#211#211#255'vvw'#255'NNO'#255#210#210#210#255#210#210#210#255#212#212#212
+  +#255#145#145#145#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#142#142#143#255#214#214#214#255#212#212#212#255#211#211#211#255'H'
+  +'HI'#255'sst'#255#151#151#151#255']]]'#255#171#171#171#255#171#171#171#255
+  +#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255']]]'#255#151
+  +#151#151#255'sst'#255'HHI'#255#210#210#210#255#210#210#210#255#212#212#212
+  +#255#142#142#143#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#140#140#141#255#213#213#213#255#211#211#211#255#210#210#210#255'C'
+  +'CC'#255'rrr'#255'\\\'#255'eef'#255'QQR'#255'LLM'#255'LLM'#255'LLM'#255'LLM'
+  +#255'QQR'#255'eef'#255'\\\'#255'rrr'#255'CCC'#255#210#210#210#255#210#210#210
+  +#255#212#212#212#255#140#140#141#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#138#138#139#255#211#211#211#255#209#209#209#255#209
+  +#209#209#255'==>'#255'eee'#255'LLL'#255'UUU'#255'==>'#255'==>'#255'==>'#255
+  +'==>'#255'==>'#255'==>'#255'UUU'#255'LLL'#255'eee'#255'==>'#255#209#209#209
+  +#255#209#209#209#255#211#211#211#255#138#138#139#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#136#136#137#255#210#210#210#255
+  +#208#208#208#255#208#208#208#255'999'#255'NNO'#255'IIJ'#255'IIJ'#255'999'#255
+  +#208#208#208#255#208#208#208#255#208#208#208#255#208#208#208#255'999'#255'II'
+  +'J'#255'IIJ'#255'NNO'#255'999'#255#208#208#208#255#208#208#208#255#210#210
+  +#210#255#136#136#137#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#134#134#135#255#208#208#208#255#206#206#206#255#206#206#206
+  +#255'ttt'#255'555'#255'555'#255'555'#255'ttt'#255#206#206#206#255#206#206#206
+  +#255#206#206#206#255#206#206#206#255'ttt'#255'555'#255'555'#255'555'#255'ttt'
+  +#255#206#206#206#255#206#206#206#255#208#208#208#255#134#134#135#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#0#0#0#0#132#132#133#255#207#207
+  +#207#255#205#205#205#255#205#205#205#255#205#205#205#255#205#205#205#255#205
+  +#205#205#255#205#205#205#255#205#205#205#255#205#205#205#255#205#205#205#255
+  +#205#205#205#255#205#205#205#255#205#205#205#255#205#205#205#255#205#205#205
+  +#255#205#205#205#255#205#205#205#255#205#205#205#255#205#205#205#255#207#207
+  +#207#255#132#132#133#255#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#0#0#0#1#130
+  +#130#131#255#207#207#207#255#204#204#204#255#204#204#204#255#204#204#204#255
+  +#204#204#204#255#204#204#204#255#204#204#204#255#204#204#204#255#204#204#204
+  +#255#204#204#204#255#204#204#204#255#204#204#204#255#204#204#204#255#204#204
+  +#204#255#204#204#204#255#204#204#204#255#204#204#204#255#204#204#204#255#204
+  +#204#204#255#207#207#207#255#130#130#131#255#0#0#0#1#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#128#128#128#2#129#129#130#255#206#206#206#255#203#203#203#255#203
+  +#203#203#255#203#203#203#255#203#203#203#255#203#203#203#255#203#203#203#255
+  +#203#203#203#255#203#203#203#255#203#203#203#255#203#203#203#255#203#203#203
+  +#255#203#203#203#255#203#203#203#255#203#203#203#255#203#203#203#255#203#203
+  +#203#255#203#203#203#255#203#203#203#255#206#206#206#255#129#129#130#255'@@@'
+  +#4#0#0#0#1#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0'UUU'#3#127#127#128#255#217#217#217#255#223
+  +#223#223#255#223#223#223#255#223#223#223#255#223#223#223#255#223#223#223#255
+  +#223#223#223#255#223#223#223#255#223#223#223#255#223#223#223#255#223#223#223
+  +#255#223#223#223#255#223#223#223#255#223#223#223#255#223#223#223#255#223#223
+  +#223#255#223#223#223#255#223#223#223#255#223#223#223#255#217#217#217#255#127
+  +#127#128#255'UUU'#6#0#0#0#1#255#255#255#0#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#128#128#2'~~'#127#153'~'
+  +'~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'
+  +#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127
+  +#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255
+  +'~~'#127#255'}}~'#155'@@@'#4#0#0#0#1#255#255#255#0#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#0#1#128#128
+  +#128#2'fff'#5'MMM'#10'[[['#14'ZZZ'#17'UUU'#18'YYY'#20'UUU'#24'RRR'#28'XXX'#29
+  +'UUU'#30'UUU'#30'UUU'#30'XXX'#29'XXX'#26'UUU'#21'QQQ'#19'ZZZ'#17'UUU'#15'UUU'
+  +#12'III'#7'UUU'#3#0#0#0#1#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#0#0#0#0#0#0#0#0#0#0
+  +#0#1#0#0#0#1#128#128#128#2#128#128#128#2#128#128#128#2'UUU'#3'@@@'#4'fff'#5
+  +'fff'#5'UUU'#6'UUU'#6'UUU'#6'fff'#5#128#128#128#4'UUU'#3#128#128#128#2#128
+  +#128#128#2#128#128#128#2#0#0#0#1#0#0#0#1#0#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
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'222'#4'222'#15'222'#24
+  +'222'#15'222'#4'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'
+  +#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'222'#15#19#140
+  +'k|'#9#168'}'#212#21#133'g'#134'222)222'#18'222'#4'222'#0'222'#0'222'#0'222'
+  +#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0'222 '#10#165'z'#216'k'#223#201#255'1'#198#160#255#9#167'{'#225#19#137
+  +'i'#144'222+222'#19'222'#5'g'#233#216#0'g'#233#216#0'g'#233#216#0'g'#233#216
+  +#0'g'#233#216#0'g'#233#216#0'g'#233#216#0'g'#233#216#0'g'#233#216#0'222'#0'2'
+  +'22'#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0'222*'#5#178#129#255'h'#228#208#255#130#233#217#255
+  +'{'#227#207#255'='#201#165#255#9#167'z'#232#19#139'i'#156'/:73222'#22'222'#6
+  +'222'#1'g'#233#216#0'g'#233#216#0'g'#233#216#0'g'#233#216#0'g'#233#216#0'g'
+  +#233#216#0'222'#0'222'#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0'222-'#5#175'~'#255'W'#225#202#255
+  +'Z'#225#202#255'l'#228#208#255#128#232#215#255'~'#228#209#255'G'#203#170#255
+  +#7#176#127#255#18#140'i'#167'+F>:222'#24'222'#7'222'#1'g'#233#216#0'g'#233
+  +#216#0'g'#233#216#0'g'#233#216#0'222'#0'222'#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'222-'#5
+  +#172'z'#255'W'#224#200#255'T'#223#198#255'T'#223#198#255'Y'#223#200#255'h'
+  +#226#206#255'}'#231#213#255#130#230#210#255'M'#204#173#255#11#175'~'#255#17
+  +#140'g'#174'&SED222'#27'222'#9'222'#1'g'#233#216#0'g'#233#216#0'222'#0'222'#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0'222-'#6#168'v'#255'U'#222#198#255'R'#221#196#255'R'#221
+  +#196#255'R'#221#196#255'R'#221#196#255'U'#221#198#255'd'#225#203#255'z'#230
+  +#211#255#131#230#212#255'V'#206#176#255#17#173'~'#255#16#140'f'#184' cNW222'
+  +#29'222'#11'222'#2'222'#0'222'#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'222-'#6#163'q'#255'S'
+  +#221#196#255'P'#220#195#255'P'#220#195#255'P'#220#195#255'P'#220#195#255'P'
+  +#220#195#255'P'#220#195#255'S'#221#195#255'`'#224#201#255'u'#228#209#255#130
+  +#230#212#255'_'#208#180#255#20#171'}'#255#15#139'c'#191#29'hP_222'#29'222'#8
+  +'222'#1#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0'222-'#7#159'm'#255'R'#220#195#255'O'#219#193#255'O'
+  +#219#193#255'O'#219#193#255'O'#219#193#255'O'#219#193#255'O'#219#193#255'O'
+  +#219#193#255'O'#219#193#255'P'#219#193#255']'#222#198#255's'#227#207#255#130
+  +#229#211#255'd'#209#183#255#30#171#127#255#16#136'a'#186'#WF5222'#7#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0'222-'#7#155'h'#255'P'#218#193#255'N'#217#191#255'N'#217#191#255'N'
+  +#217#191#255'N'#217#191#255'N'#217#191#255'N'#217#191#255'N'#217#191#255'N'
+  +#217#191#255'N'#217#191#255'N'#217#191#255'N'#217#191#255'V'#219#195#255'['
+  +#220#196#255'W'#219#194#255'1'#191#154#255#16#132'\'#157'222'#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#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0'222-'#8#150'c'#255'A'#208#177#255'='#206#173#255'='#206#173#255'='#206
+  +#173#255'='#206#173#255'='#206#173#255'='#206#173#255'='#206#173#255'='#206
+  +#173#255'='#206#173#255'>'#207#174#255'E'#211#180#255'P'#217#190#255'Q'#214
+  +#187#255'('#178#137#255#9#151'd'#255'&O@?222'#7#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'222-'#9
+  ,#145'^'#255'>'#208#173#255':'#205#169#255':'#205#169#255':'#205#169#255':'
+  +#205#169#255':'#205#169#255':'#205#169#255':'#205#169#255';'#205#170#255'A'
+  +#209#175#255'M'#216#186#255'Q'#216#188#255','#178#139#255#11#147'`'#255#21'v'
+  +'R'#167'/850222'#13'222'#1#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0'222-'#9#141'Y'#255'<'#205#170#255
+  +'8'#202#166#255'8'#202#166#255'8'#202#166#255'8'#202#166#255'8'#202#166#255
+  +'9'#202#167#255'>'#206#172#255'I'#212#182#255'Q'#214#187#255'1'#181#142#255
+  +#13#145'^'#255#20'uO'#174'.<68222'#22'222'#6'222'#0'222'#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +'222-'#10#137'U'#255':'#203#166#255'5'#200#162#255'5'#200#162#255'5'#200#162
+  +#255'5'#200#162#255':'#203#167#255'F'#210#178#255'O'#214#186#255'4'#182#145
+  +#255#15#143'\'#255#20'tL'#179'&L<G222'#25'222'#6'222'#0'222'#0'222'#0'222'#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0'222-'#10#132'P'#255'7'#202#163#255'2'#199#159#255'2'#199
+  +#159#255'7'#202#163#255'B'#209#174#255'L'#214#184#255'6'#184#146#255#17#140
+  +'Z'#255#19'qI'#184'"R>S222'#27'222'#8'222'#1'222'#0'222'#0'222'#0'222'#0'222'
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0'222-'#11#128'L'#255'5'#199#161#255'4'#199#160#255'>'#205
+  +#170#255'K'#213#183#255'9'#185#149#255#21#141'\'#255#19'oF'#191#31'W>_222'#29
+  +'222'#9'222'#1'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0'222*'#11'}H'#255'>'#205#169#255'I'#212#181#255'<'#190#153#255#23#141
+  +'\'#255#18'oD'#200#29'Z>k222 222'#11'222'#2'222'#0'222'#0'222'#0'222'#0'222'
+  +#0'222'#0'222'#0'222'#0'222'#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0'222 '#16'qC'#216'7'#187#150
+  +#255#25#142'^'#255#17'oB'#210#27'\=z222"222'#12'222'#3'222'#0'222'#0'222'#0
+  +'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +'222'#15#24'a=|'#16'o@'#212#26'^<'#133'222%222'#14'222'#4'222'#0'222'#0'222'
+  +#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0'222'#4'222'#15'222'#24'222'#15'222'#4'222'#0'222'#0'222'#0'22'
+  +'2'#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0'222'#0
+  +'222'#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#4#183#134#0#4#183#134#0#4#183#134
+  +#0#4#183#134#0#4#183#134#0#4#183#134#0#4#183#134#0#4#183#134#0#4#183#134#27#4
+  +#183#134'l'#4#183#134#183#4#183#134#204#4#183#134#252#4#183#134#252#4#183#134
+  +#204#4#183#134#183#4#183#134'l'#4#183#134#27#4#183#134#0#4#183#134#0#4#183
+  +#134#0#4#183#134#0#4#183#134#0#4#183#134#0#4#183#134#0#4#183#134#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#4#182#132#0#4#182#132#0#4#182#132#0#4#182#132#0#4#182#132#0#4#182#132#0#4
+  +#182#132'3'#4#182#132#156#21#188#142#255'K'#206#172#255'}'#223#200#255#139
+  +#228#208#255#171#238#226#255#171#238#226#255#139#228#208#255'}'#223#200#255
+  +'K'#206#172#255#21#188#142#255#4#182#132#156#4#182#132'3'#4#182#132#0#4#182
+  +#132#0#4#182#132#0#4#182#132#0#4#182#132#0#4#182#132#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#4#180#131#0#4
+  +#180#131#0'g'#233#216#0'g'#233#216#0'g'#233#216#0#4#180#131#138#20#186#140
+  +#255'g'#215#189#255#155#235#222#255#134#232#216#255'q'#229#211#255'c'#227#206
+  +#255'\'#226#204#255'\'#226#204#255'c'#227#206#255'q'#229#211#255#134#232#216
+  +#255#155#235#222#255'g'#215#189#255#20#186#140#255#4#180#131#138'g'#233#216#0
+  +'g'#233#216#0'g'#233#216#0#4#180#131#0#4#180#131#0#255#255#255#0#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#5#178#128#0#5#178
+  +#128#0'g'#233#216#0#5#178#128#6#5#178#128#150'1'#195#156#255#143#231#215#255
+  +'x'#229#210#255'`'#226#204#255'W'#224#201#255'V'#224#201#255'V'#224#201#255
+  +'V'#224#201#255'V'#224#201#255'V'#224#201#255'V'#224#201#255'W'#224#201#255
+  +'`'#226#204#255'x'#229#210#255#143#231#215#255'1'#195#156#255#5#178#128#150#5
+  +#178#128#6'g'#233#216#0#5#178#128#0#5#178#128#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#5#175'~'#0#5#175'~'
+  +#0'g'#233#216#0#5#175'~'#150'>'#199#164#255#130#230#212#255'g'#227#207#255'U'
+  +#223#200#255'U'#223#200#255'U'#223#200#255'U'#223#200#255'U'#223#200#255'U'
+  +#223#200#255'U'#223#200#255'U'#223#200#255'U'#223#200#255'U'#223#200#255'U'
+  +#223#200#255'U'#223#200#255'g'#227#207#255#130#230#212#255'>'#199#164#255#5
+  +#175'~'#150'g'#233#216#0#5#175'~'#0#5#175'~'#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#5#173'{'#0#5#173'{'
+  +#0#5#173'{'#138')'#190#148#255'z'#228#208#255'b'#226#204#255'T'#223#198#255
+  +'T'#223#198#255'T'#223#198#255'T'#223#198#255'T'#223#198#255'T'#223#198#255
+  +'T'#223#198#255'T'#223#198#255'T'#223#198#255'T'#223#198#255'T'#223#198#255
+  +'T'#223#198#255'T'#223#198#255'U'#223#198#255'b'#226#204#255'z'#228#208#255
+  +')'#190#148#255#5#173'{'#138#5#173'{'#0#5#173'{'#0#255#255#255#0#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#6#170'y'#0#6#170
+  +'y6'#17#176#130#255'j'#221#199#255'd'#226#204#255'S'#222#198#255'S'#222#198
+  +#255'S'#222#198#255'S'#222#198#255'S'#222#198#255'S'#222#198#255'S'#222#198
+  ,#255'S'#222#198#255'S'#222#198#255'S'#222#198#255'S'#222#198#255'S'#222#198
+  +#255'S'#222#198#255'W'#223#199#255'T'#187#169#255'W'#223#199#255'd'#226#204
+  +#255'j'#221#199#255#17#176#130#255#6#170'y6'#6#170'y'#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#6#167'u'#0#6
+  +#167'u'#159'>'#199#166#255'h'#224#202#255'S'#221#197#255'R'#221#196#255'R'
+  +#221#196#255'R'#221#196#255'R'#221#196#255'R'#221#196#255'R'#221#196#255'R'
+  +#221#196#255'R'#221#196#255'R'#221#196#255'R'#221#196#255'R'#221#196#255'R'
+  +#221#196#255'Y'#223#199#255'V'#186#168#255';NK'#255'^'#224#200#255'S'#221#197
+  +#255'h'#224#202#255'>'#199#166#255#6#167'u'#159#6#167'u'#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#6#164'r!'
+  +#17#171'|'#255'['#218#191#255'['#223#198#255'Q'#220#195#255'Q'#220#195#255'Q'
+  +#220#195#255'Q'#220#195#255'Q'#220#195#255'Q'#220#195#255'Q'#220#195#255'Q'
+  +#220#195#255'Q'#220#195#255'Q'#220#195#255'Q'#220#195#255'Q'#220#195#255'Z'
+  +#222#198#255'\'#194#175#255'9@?'#255'Frj'#255']'#223#199#255'Q'#220#195#255
+  +'['#223#198#255'['#218#191#255#17#171'|'#255#6#164'r!'#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#161'ox'''
+  +#185#145#255'Z'#219#193#255'Q'#219#193#255'P'#219#193#255'P'#219#193#255'P'
+  +#219#193#255'P'#219#193#255'P'#219#193#255'P'#219#193#255'P'#219#193#255'P'
+  +#219#193#255'P'#219#193#255'P'#219#193#255'P'#219#193#255'['#221#197#255'c'
+  +#206#186#255'>KH'#255'@SO'#255'e'#214#193#255'V'#220#195#255'P'#219#193#255
+  +'Q'#219#193#255'Z'#219#193#255''''#185#145#255#7#161'ox'#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#158'l'
+  +#189'2'#197#161#255'W'#219#194#255'N'#218#192#255'N'#218#192#255'N'#218#192
+  +#255'N'#218#192#255'N'#218#192#255'N'#218#192#255'N'#218#192#255'N'#218#192
+  +#255'N'#218#192#255'N'#218#192#255'N'#218#192#255'Y'#220#196#255'g'#210#190
+  +#255'CSP'#255'=@?'#255'b'#193#175#255'['#221#196#255'N'#218#192#255'N'#218
+  +#192#255'N'#218#192#255'W'#219#194#255'2'#197#161#255#7#158'l'#189#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#155'h'#228'<'#204#171#255'S'#219#192#255'N'#217#191#255'N'#217#191#255'O'
+  +#217#191#255'U'#219#194#255'U'#219#194#255'U'#219#194#255'N'#217#191#255'N'
+  +#217#191#255'N'#217#191#255'N'#217#191#255'Y'#220#195#255'o'#219#199#255'Jb^'
+  +#255'@@@'#255']'#161#148#255'b'#222#198#255'N'#217#191#255'N'#217#191#255'N'
+  +#217#191#255'N'#217#191#255'S'#219#192#255'<'#204#171#255#7#155'h'#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#8#152'e'#249'@'#209#175#255'O'#217#190#255'L'#217#189#255'M'#217#189
+  +#255't'#222#201#255'k'#194#177#255'k'#194#177#255'k'#194#177#255't'#224#202
+  +#255'V'#219#193#255'L'#217#189#255'V'#219#193#255't'#222#201#255'Qnh'#255'CC'
+  +'C'#255'U{s'#255'g'#223#199#255'L'#217#189#255'L'#217#189#255'L'#217#189#255
+  +'L'#217#189#255'L'#217#189#255'O'#217#190#255'@'#209#175#255#8#152'e'#249#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#8#148'a'#249'@'#207#173#255'='#206#172#255'<'#205#171#255'<'#205#171
+  +#255'Y'#212#183#255'X'#135'|'#255'GGG'#255'GGG'#255'Uyq'#255'o'#216#192#255
+  +'G'#208#176#255']'#213#185#255'U{r'#255'GGG'#255'M]Z'#255'm'#211#187#255'H'
+  +#208#176#255'<'#205#171#255'<'#205#171#255'<'#205#171#255'<'#205#171#255'<'
+  +#205#171#255'='#206#172#255'@'#207#173#255#8#148'a'#249#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9#145'^'#228
+  +';'#201#166#255'='#206#172#255':'#204#169#255':'#204#169#255'C'#206#173#255
+  +'`'#214#185#255'Y}t'#255'JJJ'#255'JJJ'#255'Z'#129'w'#255'i'#216#189#255']'
+  +#139#128#255'JJJ'#255'KON'#255'm'#195#174#255'S'#211#180#255':'#204#169#255
+  +':'#204#169#255':'#204#169#255':'#204#169#255':'#204#169#255':'#204#169#255
+  +'='#206#172#255';'#201#166#255#9#145'^'#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#9#142'Z'#186'2'#190#152
+  +#255'='#206#172#255'8'#203#167#255'8'#203#167#255'8'#203#167#255'G'#207#174
+  +#255'w'#217#192#255'[yr'#255'NNN'#255'NNN'#255'Vid'#255'NNN'#255'NNN'#255'h'
+  +#165#150#255'['#212#182#255'8'#203#167#255'8'#203#167#255'8'#203#167#255'8'
+  +#203#167#255'8'#203#167#255'8'#203#167#255'8'#203#167#255'='#206#172#255'2'
+  +#190#152#255#9#142'Z'#186#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#9#139'Wx#'#172#128#255'?'#207#173#255'6'
+  +#202#165#255'6'#202#165#255'6'#202#165#255'6'#202#165#255'J'#207#174#255'z'
+  +#215#193#255'Znj'#255'QQQ'#255'QQQ'#255'QQQ'#255'a'#132'{'#255'b'#213#185#255
+  +'6'#202#165#255'6'#202#165#255'6'#202#165#255'6'#202#165#255'6'#202#165#255
+  +'6'#202#165#255'6'#202#165#255'6'#202#165#255'?'#207#173#255'#'#172#128#255#9
+  +#139'Wx'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+  +#0#255#255#255#0#10#136'T'#27#16#144'^'#255'A'#207#173#255':'#203#167#255'5'
+  ,#200#162#255'5'#200#162#255'5'#200#162#255'5'#200#162#255'R'#208#175#255'~'
+  +#213#190#255'\lh'#255'TTT'#255'[kg'#255#127#216#193#255'F'#205#170#255'5'#200
+  +#162#255'5'#200#162#255'5'#200#162#255'5'#200#162#255'5'#200#162#255'5'#200
+  +#162#255'5'#200#162#255':'#203#167#255'A'#207#173#255#16#144'^'#255#10#136'T'
+  +#27#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#10#133'P'#0#10#133'P'#150','#178#136#255'?'#207#172#255'4'#199#161
+  +#255'3'#199#160#255'3'#199#160#255'3'#199#160#255'3'#199#160#255'U'#208#176
+  +#255#128#207#186#255'^nj'#255'}'#199#180#255'V'#208#176#255'3'#199#160#255'3'
+  +#199#160#255'3'#199#160#255'3'#199#160#255'3'#199#160#255'3'#199#160#255'3'
+  +#199#160#255'4'#199#161#255'?'#207#172#255'+'#178#136#255#10#133'P'#150#10
+  +#133'P'#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+  +#0#255#255#255#0#10#130'M'#0#10#130'M-'#15#137'V'#255'A'#203#170#255';'#203
+  +#167#255'2'#197#158#255'2'#197#158#255'2'#197#158#255'2'#197#158#255'2'#197
+  +#158#255'V'#207#175#255#136#220#198#255'V'#207#175#255'2'#197#158#255'2'#197
+  +#158#255'2'#197#158#255'2'#197#158#255'2'#197#158#255'2'#197#158#255'2'#197
+  +#158#255'2'#197#158#255';'#203#167#255'A'#203#170#255#16#138'W'#255#10#130'M'
+  +'-'#10#130'M'#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#11#127'K'#0#11#127'K'#0#11#127'K'#135#28#150'h'#255
+  +'D'#208#176#255'8'#201#164#255'0'#196#156#255'0'#196#156#255'0'#196#156#255
+  +'0'#196#156#255'0'#196#156#255'1'#196#157#255'0'#196#156#255'0'#196#156#255
+  +'0'#196#156#255'0'#196#156#255'0'#196#156#255'0'#196#156#255'0'#196#156#255
+  +'0'#196#156#255'8'#201#164#255'D'#208#176#255#28#150'h'#255#11#127'K'#135#11
+  +#127'K'#0#11#127'K'#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#11'}H'#0#11'}H'#0#11'}H'#0#11'}H'#147'#'#159'r'
+  +#255'E'#209#176#255'9'#201#164#255'0'#195#155#255'/'#195#154#255'/'#195#154
+  +#255'/'#195#154#255'/'#195#154#255'/'#195#154#255'/'#195#154#255'/'#195#154
+  +#255'/'#195#154#255'/'#195#154#255'/'#195#154#255'0'#195#155#255'9'#201#164
+  +#255'E'#209#176#255'#'#159'r'#255#11'}H'#147#11'}H'#0#11'}H'#0#11'}H'#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#11'zF'#0#0#0#0#1#128#128#128#2'fff'#5#13'yF'#151#29#148'f'#255'G'#209
+  +#176#255'?'#206#171#255'3'#198#159#255'-'#194#153#255'-'#194#153#255'-'#194
+  +#153#255'-'#194#153#255'-'#194#153#255'-'#194#153#255'-'#194#153#255'-'#194
+  +#153#255'3'#198#159#255'?'#206#171#255'G'#209#176#255#29#148'f'#255#13'yF'
+  +#152'III'#7'UUU'#3#0#0#0#1#11'zF'#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#12'xC'#0#128#128#128#2'mmm'#7'UUU'
+  +#18'UUU!'#23'sF'#157#16'~K'#255'4'#177#138#255'J'#212#181#255'C'#208#175#255
+  +':'#202#165#255'3'#198#158#255'0'#196#155#255'0'#196#155#255'3'#198#158#255
+  +':'#202#165#255'C'#208#175#255'J'#212#181#255'4'#177#138#255#16'~K'#255#24't'
+  +'F'#159'WWW&UUU'#24']]]'#11'@@@'#4#0#0#0#1#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#12'vB'#0'UUU'#3']]]'#11
+  +'XXX'#29'WWW5XXXK<dPv'#28'pG'#189#18#127'M'#255'('#158's'#255'='#189#153#255
+  +'C'#198#164#255'M'#212#182#255'M'#212#182#255'C'#198#164#255'='#189#153#255
+  +'('#158's'#255#18#127'M'#255#28'pG'#190'<dPyXXXQVVV>WWW&UUU'#18'UUU'#6#0#0#0
+  +#1#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#12'u@'#0#128#128#128#2'mmm'#7'UUU'#18'UUU!WWW/WWW8YYY<BaQR"lG'#144
+  +#20'rC'#202#18'sB'#220#13't@'#245#13't@'#245#18'sB'#220#21'rC'#203'#lG'#146
+  +'CbRSXXX=YYY9ZZZ3WWW&UUU'#24']]]'#11'@@@'#4#0#0#0#1#255#255#255#0#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#12'u@'#0#0#0#0#1
+  +#128#128#128#2'fff'#5'MMM'#10'[[['#14'ZZZ'#17'UUU'#18'YYY'#20'UUU'#24'RRR'#28
+  +'XXX'#29'UUU'#30'UUU'#30'UUU'#30'XXX'#29'XXX'#26'UUU'#21'QQQ'#19'ZZZ'#17'UUU'
+  +#15'UUU'#12'III'#7'UUU'#3#0#0#0#1#12'u@'#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#12'u@'#0#12'u@'#0#12'u@'
+  +#0#0#0#0#1#0#0#0#1#128#128#128#2#128#128#128#2#128#128#128#2'UUU'#3'@@@'#4'f'
+  +'ff'#5'fff'#5'UUU'#6'UUU'#6'UUU'#6'fff'#5#128#128#128#4'UUU'#3#128#128#128#2
+  +#128#128#128#2#128#128#128#2#0#0#0#1#0#0#0#1#12'u@'#0#12'u@'#0#12'u@'#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#11'?'#213#0#11'?'#213#0#11'?'#213#0#11'?'#213#0#11'?'#213#0#11'?'#213
+  +#0#11'?'#213#0#11'?'#213#0#11'?'#213#27#11'?'#213'l'#11'?'#213#183#11'?'#213
+  +#204#11'?'#213#252#11'?'#213#252#11'?'#213#204#11'?'#213#183#11'?'#213'l'#11
+  +'?'#213#27#11'?'#213#0#11'?'#213#0#11'?'#213#0#11'?'#213#0#11'?'#213#0#11'?'
+  +#213#0#11'?'#213#0#11'?'#213#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#11'?'#212#0#11'?'#212#0#11'?'#212#0#11
+  +'?'#212#0#11'?'#212#0#11'?'#212#0#11'?'#212'3'#11'?'#212#156#25'K'#215#255'I'
+  +'q'#223#255'u'#148#231#255#129#157#234#255#157#180#239#255#157#180#239#255
+  +#129#157#234#255'u'#148#231#255'Iq'#223#255#25'K'#215#255#11'?'#212#156#11'?'
+  +#212'3'#11'?'#212#0#11'?'#212#0#11'?'#212#0#11'?'#212#0#11'?'#212#0#11'?'#212
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#11'>'#211#0#11'>'#211#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#11'>'#211#138#24'I'#214#255'a'#131#228#255#143#168#237#255#129#158#234#255
+  +'p'#144#232#255']'#130#229#255'X~'#228#255'X~'#228#255']'#130#229#255'p'#144
+  +#232#255#129#158#234#255#143#168#237#255'a'#131#228#255#24'I'#214#255#11'>'
+  +#211#138#255#255#255#0#255#255#255#0#255#255#255#0#11'>'#211#0#11'>'#211#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#11'>'#210#0#11'>'#210#0#255#255#255#0#11'>'#210#6#11'>'#210#150'0'
+  +'\'#217#255#129#158#234#255's'#147#231#255'\'#130#228#255'Nw'#225#255'Mv'#225
+  +#255'Mv'#225#255'Mv'#225#255'Mv'#225#255'Mv'#225#255'Mv'#225#255'Nw'#225#255
+  +'\'#130#228#255's'#147#231#255#129#158#234#255'0\'#217#255#11'>'#210#150#11
+  +'>'#210#6#255#255#255#0#11'>'#210#0#11'>'#210#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#11'>'#208#0#11'>'
+  +#208#0#255#255#255#0#11'>'#208#150'9c'#218#255'x'#150#232#255'g'#137#229#255
+  +'Nv'#225#255'Lu'#225#255'Lu'#225#255'Lu'#225#255'Lu'#225#255'Lu'#225#255'Lu'
+  +#225#255'Lu'#225#255'Lu'#225#255'Lu'#225#255'Lu'#225#255'Nv'#225#255'g'#137
+  +#229#255'x'#150#232#255'9c'#218#255#11'>'#208#150#255#255#255#0#11'>'#208#0
+  +#11'>'#208#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#10'='#207#0#10'='#207#0#10'='#207#138'%S'#214#255'm'#142
+  +#231#255'b'#132#229#255'Ks'#225#255'Ks'#225#255'Ks'#225#255'Ks'#225#255'Ks'
+  +#225#255'Ks'#225#255'Ks'#225#255'Ks'#225#255'Ks'#225#255'Ks'#225#255'Ks'#225
+  +#255'Ks'#225#255'Ks'#225#255'Ks'#225#255'b'#132#229#255'm'#142#231#255'%S'
+  +#214#255#10'='#207#138#10'='#207#0#10'='#207#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#10'<'#205#0#10'<'
+  +#205'6'#18'C'#207#255'V}'#226#255'd'#135#229#255'Js'#225#255'Js'#225#255'Js'
+  +#225#255'Js'#225#255'Js'#225#255'Js'#225#255'Js'#225#255'Js'#225#255'Js'#225
+  ,#255'Js'#225#255'Js'#225#255'Js'#225#255'Js'#225#255'Js'#225#255'Js'#225#255
+  +'Js'#225#255'd'#135#229#255'V}'#226#255#18'C'#207#255#10'<'#205'6'#10'<'#205
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#10'<'#203#0#10'<'#203#159'/\'#217#255'`'#132#229#255'Js'#225#255
+  +'Hr'#225#255'Hr'#225#255'Hr'#225#255'Hr'#225#255'Hr'#225#255'Hr'#225#255'Hr'
+  +#225#255'Hr'#225#255'Hr'#225#255'Hr'#225#255'Hr'#225#255'Hr'#225#255'Hr'#225
+  +#255'Hr'#225#255'Hr'#225#255'Hr'#225#255'Js'#225#255'`'#132#229#255'/\'#217
+  +#255#10'<'#203#159#10'<'#203#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#10';'#201'!'#17'A'#204#255'Cm'#224#255
+  +'W|'#227#255'Gp'#224#255'Gp'#224#255'Gp'#224#255'Gp'#224#255'Gp'#224#255'Gp'
+  +#224#255'Gp'#224#255'Gp'#224#255'Gp'#224#255'Gp'#224#255'Gp'#224#255'Gp'#224
+  +#255'Gp'#224#255'Gp'#224#255'Gp'#224#255'Gp'#224#255'Gp'#224#255'Gp'#224#255
+  +'W|'#227#255'Cm'#224#255#17'A'#204#255#10';'#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#10';'#200'x'#26'K'
+  +#209#255'Ir'#225#255'Eo'#224#255'En'#224#255'En'#224#255'En'#224#255'En'#224
+  +#255'En'#224#255'En'#224#255'En'#224#255'En'#224#255'En'#224#255'En'#224#255
+  +'En'#224#255'En'#224#255'En'#224#255'En'#224#255'En'#224#255'En'#224#255'En'
+  +#224#255'En'#224#255'Eo'#224#255'Ir'#225#255#26'K'#209#255#10';'#200'x'#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#10':'#198#189#29'M'#213#255'Lt'#225#255'Dm'#224#255'Dm'#224#255'Dm'
+  +#224#255'Dm'#224#255'Dm'#224#255'Dm'#224#255'Dm'#224#255'Dm'#224#255'Dm'#224
+  +#255'Dm'#224#255'Dm'#224#255'Dm'#224#255'Dm'#224#255'Dm'#224#255'Dm'#224#255
+  +'Dm'#224#255'Dm'#224#255'Dm'#224#255'Dm'#224#255'Dm'#224#255'Lt'#225#255#29
+  +'M'#213#255#10':'#198#189#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#9'9'#196#228#31'Q'#216#255'Iq'#224#255'Bl'
+  +#223#255'Bl'#223#255'Bl'#223#255'Mt'#225#255'222'#255'222'#255'222'#255'222'
+  +#255'222'#255'222'#255'222'#255'222'#255'222'#255'222'#255'222'#255'222'#255
+  +'Mt'#225#255'Bl'#223#255'Bl'#223#255'Bl'#223#255'Iq'#224#255#31'Q'#216#255#9
+  +'9'#196#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#9'9'#194#249#31'R'#217#255'Bl'#223#255'@j'#223#255'@j'
+  +#223#255'@j'#223#255'Z~'#227#255':::'#255':::'#255':::'#255':::'#255':::'#255
+  +':::'#255':::'#255':::'#255':::'#255':::'#255':::'#255':::'#255'Z~'#227#255
+  +'@j'#223#255'@j'#223#255'@j'#223#255'Bl'#223#255#31'R'#217#255#9'9'#194#249
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#9'8'#191#249#31'S'#218#255#30'P'#217#255#29'O'#217#255#29'O'#217
+  +#255#29'O'#217#255'Qw'#226#255'EEE'#255'EEE'#255'EEE'#255'EEE'#255'EEE'#255
+  +'EEE'#255'EEE'#255'EEE'#255'EEE'#255'EEE'#255'EEE'#255'EEE'#255'Qw'#226#255
+  +#29'O'#217#255#29'O'#217#255#29'O'#217#255#30'P'#217#255#31'S'#218#255#9'8'
+  +#191#249#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+  +#0#255#255#255#0#9'8'#189#228#30'O'#217#255#29'O'#218#255#27'L'#217#255#27'L'
+  +#217#255#27'L'#217#255'd'#134#229#255'PPP'#255'PPP'#255'PPP'#255'PPP'#255'PP'
+  +'P'#255'PPP'#255'PPP'#255'PPP'#255'PPP'#255'PPP'#255'PPP'#255'PPP'#255'd'#134
+  +#229#255#27'L'#217#255#27'L'#217#255#27'L'#217#255#29'O'#218#255#30'O'#217
+  +#255#9'8'#189#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#9'7'#187#186#24'K'#211#255#28'P'#218#255#24'K'#216
+  +#255#24'K'#216#255#24'K'#216#255'Nu'#225#255't'#147#231#255't'#147#231#255't'
+  +#147#231#255't'#147#231#255't'#147#231#255't'#147#231#255't'#147#231#255't'
+  +#147#231#255't'#147#231#255't'#147#231#255't'#147#231#255't'#147#231#255'Nu'
+  +#225#255#24'K'#216#255#24'K'#216#255#24'K'#216#255#28'P'#218#255#24'K'#211
+  +#255#9'7'#187#186#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#8'6'#185'x'#19'D'#201#255#29'Q'#219#255#23'I'#215
+  +#255#23'I'#215#255#23'I'#215#255#23'I'#215#255#23'I'#215#255#23'I'#215#255#23
+  +'I'#215#255#23'I'#215#255#23'I'#215#255#23'I'#215#255#23'I'#215#255#23'I'#215
+  +#255#23'I'#215#255#23'I'#215#255#23'I'#215#255#23'I'#215#255#23'I'#215#255#23
+  +'I'#215#255#23'I'#215#255#23'I'#215#255#29'Q'#219#255#19'D'#201#255#8'6'#185
+  +'x'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#8'6'#184#27#10'9'#188#255#30'T'#220#255#25'M'#217#255#21'H'#215
+  +#255#21'H'#215#255#21'H'#215#255#21'H'#215#255#21'H'#215#255#21'H'#215#255#21
+  +'H'#215#255#21'H'#215#255#21'H'#215#255#21'H'#215#255#21'H'#215#255#21'H'#215
+  +#255#21'H'#215#255#21'H'#215#255#21'H'#215#255#21'H'#215#255#21'H'#215#255#21
+  +'H'#215#255#25'M'#217#255#30'T'#220#255#10'9'#188#255#8'6'#184#27#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#8'5'
+  +#182#0#8'5'#182#150#21'H'#205#255#27'R'#219#255#19'G'#214#255#19'F'#214#255
+  +#19'F'#214#255#19'F'#214#255#19'F'#214#255#19'F'#214#255#19'F'#214#255#19'F'
+  ,#214#255#19'F'#214#255#19'F'#214#255#19'F'#214#255#19'F'#214#255#19'F'#214
+  +#255#19'F'#214#255#19'F'#214#255#19'F'#214#255#19'F'#214#255#19'G'#214#255#27
+  +'R'#219#255#21'H'#205#255#8'5'#182#150#8'5'#182#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#8'5'#180#0#8'5'#180
+  +'-'#10'8'#184#255#28'S'#220#255#23'M'#218#255#17'D'#214#255#17'D'#214#255#17
+  +'D'#214#255#17'D'#214#255#17'D'#214#255#17'D'#214#255#17'D'#214#255#17'D'#214
+  +#255#17'D'#214#255#17'D'#214#255#17'D'#214#255#17'D'#214#255#17'D'#214#255#17
+  +'D'#214#255#17'D'#214#255#17'D'#214#255#23'M'#218#255#28'S'#220#255#10'8'#184
+  +#255#8'5'#180'-'#8'5'#180#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#8'4'#178#0#8'4'#178#0#8'4'#178#135#14'>'
+  +#191#255#29'W'#222#255#20'J'#217#255#15'C'#214#255#15'C'#214#255#15'C'#214
+  +#255#15'C'#214#255#15'C'#214#255#15'C'#214#255#15'C'#214#255#15'C'#214#255#15
+  +'C'#214#255#15'C'#214#255#15'C'#214#255#15'C'#214#255#15'C'#214#255#15'C'#214
+  +#255#20'J'#217#255#29'W'#222#255#14'>'#191#255#8'4'#178#135#8'4'#178#0#8'4'
+  +#178#0#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'3'#177#0#7'3'#177#0#7'3'#177#0#7'3'#177#147#17'B'#196#255#30
+  +'W'#223#255#21'K'#218#255#14'C'#214#255#14'B'#214#255#14'B'#214#255#14'B'#214
+  +#255#14'B'#214#255#14'B'#214#255#14'B'#214#255#14'B'#214#255#14'B'#214#255#14
+  +'B'#214#255#14'B'#214#255#14'C'#214#255#21'K'#218#255#30'W'#223#255#17'B'#196
+  +#255#7'3'#177#147#7'3'#177#0#7'3'#177#0#7'3'#177#0#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'3'#175#0#0#0#0#1
+  +#128#128#128#2'fff'#5#9'4'#172#151#14'?'#190#255#31'Z'#224#255#25'Q'#221#255
+  +#17'E'#216#255#13'@'#214#255#13'@'#214#255#13'@'#214#255#13'@'#214#255#13'@'
+  +#214#255#13'@'#214#255#13'@'#214#255#13'@'#214#255#17'E'#216#255#25'Q'#221
+  +#255#31'Z'#224#255#14'?'#190#255#9'4'#172#152'III'#7'UUU'#3#0#0#0#1#7'3'#175
+  +#0#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'3'#174#0#128#128#128#2'mmm'#7'UUU'#18'UUU!'#18'8'#162#157#9'6'
+  +#178#255#24'O'#206#255'!]'#226#255#28'V'#223#255#22'M'#219#255#17'G'#216#255
+  +#15'D'#215#255#15'D'#215#255#17'G'#216#255#22'M'#219#255#28'V'#223#255'!]'
+  +#226#255#24'O'#206#255#9'6'#178#255#19'9'#161#159'WWW&UUU'#24']]]'#11'@@@'#4
+  +#0#0#0#1#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'2'#173#0'UUU'#3']]]'#11'XXX'#29'WWW5XXXK:Jyv'#24':'#156
+  +#189#9'6'#178#255#19'E'#195#255#27'U'#213#255#30'Y'#218#255'"`'#226#255'"`'
+  +#226#255#30'Y'#218#255#27'U'#213#255#19'E'#195#255#9'6'#178#255#24':'#155#190
+  +':JxyXXXQVVV>WWW&UUU'#18'UUU'#6#0#0#0#1#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'2'#172#0#128#128#128#2'mm'
+  +'m'#7'UUU'#18'UUU!WWW/WWW8YYY<@MqR'#30'='#147#144#16'6'#163#202#13'5'#166#220
+  +#9'3'#170#245#9'3'#170#245#13'5'#166#220#16'6'#163#203#31'='#146#146'BNrSXXX'
+  +'=YYY9ZZZ3WWW&UUU'#24']]]'#11'@@@'#4#0#0#0#1#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'2'#172#0#0#0#0#1#128
+  +#128#128#2'fff'#5'MMM'#10'[[['#14'ZZZ'#17'UUU'#18'YYY'#20'UUU'#24'RRR'#28'XX'
+  +'X'#29'UUU'#30'UUU'#30'UUU'#30'XXX'#29'XXX'#26'UUU'#21'QQQ'#19'ZZZ'#17'UUU'
+  +#15'UUU'#12'III'#7'UUU'#3#0#0#0#1#7'2'#172#0#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'2'#172#0#7'2'#172#0#7
+  +'2'#172#0#0#0#0#1#0#0#0#1#128#128#128#2#128#128#128#2#128#128#128#2'UUU'#3'@'
+  +'@@'#4'fff'#5'fff'#5'UUU'#6'UUU'#6'UUU'#6'fff'#5#128#128#128#4'UUU'#3#128#128
+  +#128#2#128#128#128#2#128#128#128#2#0#0#0#1#0#0#0#1#7'2'#172#0#7'2'#172#0#7'2'
+  +#172#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0'ddd'#0'ddd'#0'ddd'#0'ddd'#0'ddd'#0'ddd'#0'ddd'#0'ddd'#0#205'|'
+  +'='#27#205'|=l'#205'|='#183#205'|='#204#205'|='#252#205'|='#252#205'|='#204
+  +#205'|='#183#205'|=l'#205'|='#27'ddd'#0'ddd'#0'ddd'#0'ddd'#0'ddd'#0'ddd'#0
+  +#205'|='#0#205'|='#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0'ddd'#0'ddd'#0'ddd'#0'ddd'#0'ddd'#0'ddd'#0#204'{'
+  +'=3'#204'{='#156#209#135'K'#255#224#172'w'#255#237#205#159#255#236#210#167
+  +#255#241#229#190#255#246#233#194#255#241#214#171#255#238#206#160#255#224#172
+  +'w'#255#209#135'K'#255#204'{='#156#204'{=3ddd'#0'ddd'#0'ddd'#0'ddd'#0#204'{='
+  +#0#204'{='#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0'ddd'#0'ddd'#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#203'z<'#138#205#132'H'#255#221#183#137#255#234#220#179#255#240#225#182#255
+  +#240#225#179#255#230#218#180#255#236#231#216#255#233#218#174#255#238#222#171
+  +#255#239#224#179#255#242#228#184#255#247#233#188#255#232#192#143#255#208#134
+  +'I'#255#203'z<'#138#255#255#255#0#255#255#255#0#255#255#255#0#203'z<'#0#203
+  +'z<'#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0'ddd'#0'ddd'#0#255#255#255#0#202'y;'#6#200'x;'#151#209#150'^'
+  +#255#225#209#166#255#227#220#201#255#239#237#233#255#216#203#179#255#192#167
+  +#128#255#193#173#154#255#184#161#139#255#180#155#128#255#187#163#133#255#200
+  +#181#159#255#217#201#171#255#239#221#176#255#247#230#182#255#247#228#180#255
+  +#216#155'a'#255#202'y;'#150#202'y;'#6#255#255#255#0#202'y;'#0#202'y;'#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0'ddd'#0'ddd'#0#255#255#255#0#199'v;'#151#211#158'h'#255#222#209#174#255
+  +#236#234#228#255#229#224#219#255#196#176#159#255#176#158#142#255#168#159#150
+  +#255#169#164#159#255#167#167#166#255#167#167#166#255#169#164#159#255#169#160
+  +#152#255#176#158#142#255#192#167#138#255#229#208#158#255#248#231#185#255#248
+  +#230#179#255#221#166'm'#255#201'w;'#150#255#255#255#0#201'w;'#0#201'w;'#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0'ddd'#0'ddd'#0#198't:'#139#204#142'V'#255#220#207#175#255#237#237#236
+  +#255#217#207#198#255#185#160#138#255#173#163#155#255#178#178#178#255#188#188
+  +#188#255#195#195#195#255#199#199#199#255#199#199#199#255#195#195#195#255#188
+  +#188#188#255#178#178#178#255#173#162#153#255#182#147'f'#255#226#200#149#255
+  +#248#229#182#255#247#225#173#255#214#149'Z'#255#200'u:'#138#200'u:'#0#200'u:'
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0'ddd'#0#197't:7'#196'z@'#255#214#195#155#255#237#236#236#255#217
+  +#206#197#255#175#159#146#255#178#173#170#255#193#193#193#255#206#206#206#255
+  +#214#214#214#255#219#219#219#255#185#185#185#255#185#185#185#255#219#219#219
+  +#255#214#214#214#255#205#205#206#255#192#192#193#255#177#168#158#255#178#152
+  +'x'#255#228#201#148#255#247#228#181#255#242#214#152#255#204#127'C'#255#199't'
+  +'96ddd'#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+  +#0#255#255#255#0'ddd'#0#192'p9'#162#204#163'o'#255#231#229#227#255#225#219
+  +#214#255#186#159#138#255#184#179#176#255#203#203#203#255#217#217#217#255#226
+  +#226#226#255#231#231#231#255#233#233#233#255#187#187#187#255'^^^'#255#233#233
+  +#233#255#231#231#231#255#226#226#226#255#216#216#216#255#201#201#201#255#183
+  +#173#160#255#192#153'i'#255#236#210#159#255#245#222#170#255#224#174'm'#255
+  +#197'r9'#159'ddd'#0#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'p8!'#196'x@'#255#213#200#172#255#231#231#231
+  +#255#196#173#156#255#184#174#167#255#206#206#206#255#223#223#223#255#232#232
+  +#232#255#236#236#236#255#237#237#237#255#237#237#237#255#237#237#237#255'aaa'
+  +#255#237#237#237#255#237#237#237#255#236#236#236#255#231#231#231#255#221#221
+  +#221#255#204#204#205#255#185#168#148#255#206#169'y'#255#245#222#175#255#240
+  +#207#142#255#202'|B'#255#196'p8!'#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'n7x'#209#148'U'#255#217#197
+  +#159#255#208#197#186#255#182#161#146#255#204#204#205#255#224#224#224#255#234
+  +#234#234#255#237#237#237#255#238#238#238#255#238#238#238#255#238#238#238#255
+  +#238#238#238#255'aaa'#255#238#238#238#255#238#238#238#255#238#238#238#255#237
+  +#237#237#255#233#233#233#255#222#222#222#255#202#202#203#255#187#154'w'#255
+  ,#231#201#151#255#241#212#153#255#214#152'W'#255#194'n7x'#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#193'l6'
+  +#189#223#170'c'#255#234#206#156#255#193#162#127#255#192#180#172#255#220#220
+  +#221#255#235#235#235#255#239#239#239#255#240#240#240#255#240#240#240#255#240
+  +#240#240#255#240#240#240#255#240#240#240#255'aaa'#255#240#240#240#255#240#240
+  +#240#255#240#240#240#255#240#240#240#255#239#239#239#255#234#234#234#255#219
+  +#219#219#255#193#174#155#255#212#174'~'#255#242#213#160#255#224#171'c'#255
+  +#193'l6'#189#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#191'j5'#228#229#181'l'#255#239#211#162#255#190#150'm'
+  +#255#206#201#197#255#230#230#230#255#240#240#240#255#241#241#241#255#241#241
+  +#241#255#241#241#241#255#241#241#241#255#241#241#241#255#241#241#241#255'aaa'
+  +#255#241#241#241#255#241#241#241#255#241#241#241#255#241#241#241#255#241#241
+  +#241#255#239#239#239#255#230#230#230#255#205#198#191#255#195#151'k'#255#236
+  +#209#160#255#228#180'k'#255#191'j5'#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#189'h4'#249#232#186'o'#255
+  +#239#209#160#255#189#144'd'#255#220#218#216#255#238#238#238#255#191#191#191
+  +#255#191#191#191#255'~~~'#255#186#186#186#255#238#238#238#255#243#243#243#255
+  +#243#243#243#255'aaa'#255#243#243#243#255#243#243#243#255#243#243#243#255#243
+  +#243#243#255#191#191#191#255#191#191#191#255#237#237#237#255#220#219#218#255
+  +#189#154#127#255#226#204#170#255#226#181'l'#255#189'h4'#249#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#188'e3'
+  +#249#231#184'n'#255#230#183'k'#255#186#129'G'#255#224#221#219#255#241#241#241
+  +#255#189#189#189#255#189#189#189#255#229#229#229#255#163#163#163#255'ppp'#255
+  +#156#156#156#255#218#218#218#255'aaa'#255#244#244#244#255#244#244#244#255#244
+  +#244#244#255#244#244#244#255#189#189#189#255#189#189#189#255#241#241#241#255
+  +#226#226#227#255#184#150#129#255#212#203#189#255#219#175'h'#255#188'e3'#249
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#186'c2'#228#225#175'h'#255#232#188'y'#255#191#137'S'#255#224#216
+  +#211#255#245#245#245#255#246#246#246#255#246#246#246#255#246#246#246#255#246
+  +#246#246#255#242#242#242#255#188#188#188#255'vvv'#255'aaa'#255#199#199#236
+  +#255#246#246#246#255#246#246#246#255#246#246#246#255#246#246#246#255#246#246
+  +#246#255#245#245#245#255#228#224#222#255#187#155#137#255#202#183#152#255#214
+  +#167'f'#255#186'c2'#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#184'a1'#186#218#159']'#255#231#187'y'#255#196
+  +#147'`'#255#215#200#191#255#246#246#246#255#247#247#247#255#247#247#247#255
+  +#247#247#247#255#247#247#247#255#247#247#247#255#247#247#247#255#247#247#247
+  +#255#247#247#247#255#204#204#238#255#201#201#237#255#247#247#247#255#247#247
+  +#247#255#247#247#247#255#247#247#247#255#246#246#246#255#217#204#196#255#196
+  +#171#158#255#207#198#184#255#205#150'X'#255#184'a1'#186#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'_0x'#205
+  +#135'M'#255#228#183'u'#255#206#167'{'#255#199#169#153#255#246#246#246#255#249
+  +#249#249#255#249#249#249#255#249#249#249#255#249#249#249#255#249#249#249#255
+  +#249#249#249#255#249#249#249#255#249#249#249#255#249#249#249#255#206#206#240
+  +#255#202#202#239#255#249#249#249#255#249#249#249#255#249#249#249#255#247#247
+  +#247#255#203#177#164#255#203#190#184#255#205#195#180#255#194#128'I'#255#183
+  +'_0x'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#181']/'#27#186'f5'#255#226#178'k'#255#216#181#134#255#195#165
+  +#150#255#220#201#190#255#250#250#250#255#250#250#250#255#250#250#250#255#250
+  +#250#250#255#250#250#250#255#250#250#250#255#250#250#250#255#250#250#250#255
+  +#250#250#250#255#250#250#250#255#205#205#240#255#204#204#240#255#250#250#250
+  +#255#250#250#250#255#228#215#209#255#190#155#138#255#210#209#209#255#200#172
+  +#131#255#181'c3'#255#181']/'#27#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0'ddd'#0#180'[.'#150#208#142'S'#255#219
+  +#177'y'#255#204#188#174#255#187#143'y'#255#233#217#205#255#251#251#251#255
+  +#251#251#251#255#251#251#251#255#251#251#251#255#251#251#251#255#194#194#194
+  +#255#194#194#194#255#251#251#251#255#251#251#251#255#251#251#251#255#205#205
+  +#241#255#251#251#251#255#243#238#236#255#203#173#159#255#203#192#186#255#203
+  +#193#178#255#194#133'M'#255#178'[.'#151'ddd'#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'ddd'#0#178'Y.-'#183
+  +'a4'#255#219#168'f'#255#210#181#144#255#203#188#182#255#207#167#140#255#239
+  +#225#215#255#252#252#252#255#252#252#252#255#252#252#252#255#252#252#252#255
+  +#191#191#191#255#191#191#191#255#252#252#252#255#252#252#252#255#252#252#252
+  +#255#252#252#252#255#244#239#237#255#212#188#176#255#199#178#169#255#206#203
+  +#199#255#204#164'n'#255#180'`4'#255#178'Y.-ddd'#0#255#255#255#0#255#255#255#0
+  ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'ddd'#0'ddd'#0#177'X'
+  +'-'#135#190'q?'#255#215#170'l'#255#205#191#173#255#200#164#134#255#192#131'X'
+  +#255#227#201#184#255#253#253#253#255#253#253#253#255#253#253#253#255#253#253
+  +#253#255#253#253#253#255#253#253#253#255#253#253#253#255#253#253#253#255#231
+  +#216#209#255#189#147#127#255#199#179#169#255#206#205#204#255#202#170#128#255
+  +#185'n='#255#177'X-'#135#235#235#235#0'ddd'#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'ddd'#0'ddd'#0#235#235
+  +#235#0#176'V,'#147#194'yF'#255#209#167'm'#255#205#192#178#255#213#202#197#255
+  +#198#159#138#255#202#159#136#255#227#209#200#255#241#233#229#255#249#245#244
+  +#255#250#248#247#255#241#233#229#255#230#214#207#255#208#176#162#255#192#156
+  +#140#255#201#190#185#255#202#201#200#255#194#167#129#255#188'uD'#255#174'V,'
+  +#148#235#235#235#0#235#235#235#0'ddd'#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0'ddd'#0#0#0#0#1#128#128#128#2
+  +'fff'#5#172'T-'#151#185'l>'#255#200#163's'#255#191#184#174#255#206#206#207
+  +#255#205#195#190#255#197#168#154#255#193#157#142#255#191#149#132#255#190#148
+  +#130#255#193#157#141#255#195#166#154#255#199#186#181#255#200#200#200#255#188
+  +#182#174#255#194#158'o'#255#182'k='#255#170'S-'#153'III'#7'UUU'#3#0#0#0#1'dd'
+  +'d'#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0'ddd'#0#128#128#128#2'mmm'#7'UUU'#18'UUU!'#161'T1'#158#173'X/'
+  +#255#193#133'R'#255#195#161'q'#255#180#159#133#255#183#174#164#255#192#190
+  +#189#255#192#192#192#255#192#192#193#255#192#192#192#255#187#181#175#255#179
+  +#163#142#255#191#161'w'#255#192#133'R'#255#173'X/'#255#160'T2'#160'WWW&UUU'
+  +#24']]]'#11'@@@'#4#0#0#0#1#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0'ddd'#0'UUU'#3']]]'#11'XXX'#29'WWW5XXXKyVG'
+  +'v'#155'S4'#190#175'Z0'#255#188'vF'#255#200#146'['#255#200#152'_'#255#199#164
+  +'q'#255#196#164't'#255#198#151'`'#255#199#145'Z'#255#187'vE'#255#173'Z0'#255
+  +#154'R4'#191'xVGyXXXQVVV>WWW&UUU'#18'UUU'#6#0#0#0#1#255#255#255#0#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'ddd'#0#128#128#128
+  +#2'mmm'#7'UUU'#18'UUU!WWW/WWW8YYY<qVJR'#147'S7'#144#163'R/'#202#166'R-'#220
+  +#168'P*'#245#168'P*'#245#165'Q-'#220#163'R/'#203#146'S8'#146'rWLSXXX=YYY9ZZZ'
+  +'3WWW&UUU'#24']]]'#11'@@@'#4#0#0#0#1#255#255#255#0#255#255#255#0#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#172'Q*'#0#0#0#0#1#128#128#128#2
+  +'fff'#5'MMM'#10'[[['#14'ZZZ'#17'UUU'#18'YYY'#20'UUU'#24'RRR'#28'XXX'#29'UUU'
+  +#30'UUU'#30'UUU'#30'XXX'#29'XXX'#26'UUU'#21'QQQ'#19'ZZZ'#17'UUU'#15'UUU'#12
+  +'III'#7'UUU'#3#0#0#0#1'ddd'#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#172'Q*'#0#172'Q*'#0'ddd'#0#0#0#0#1#0#0
+  +#0#1#128#128#128#2#128#128#128#2#128#128#128#2'UUU'#3'@@@'#4'fff'#5'fff'#5'U'
+  +'UU'#6'UUU'#6'UUU'#6'fff'#5#128#128#128#4'UUU'#3#128#128#128#2#128#128#128#2
+  +#128#128#128#2#0#0#0#1#0#0#0#1'ddd'#0'ddd'#0'ddd'#0#255#255#255#0#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#220#152','#150#220
+  +#152','#255#220#152','#255#220#152','#255#220#152','#255#220#152','#255#220
+  +#152','#255#220#152','#255#220#152','#255#220#152','#255#220#152','#255#220
+  +#152','#255#220#152','#150#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#217#147'*'
+  +#255#249#229#167#255#249#231#172#255#249#231#174#255#249#231#174#255#249#231
+  +#174#255#249#231#174#255#249#231#174#255#249#231#174#255#249#231#174#255#249
+  +#231#172#255#249#229#167#255#217#147'*'#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#171
+  +#171#171#0#212#139''''#255#244#218#147#255#243#212#130#255#243#213#132#255
+  +#243#213#132#255#243#213#132#255#243#213#132#255#243#213#132#255#243#213#132
+  +#255#243#213#132#255#243#212#130#255#244#218#147#255#212#139''''#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#171#171#171#0#207#130'$'#255#239#205#130#255#236#194'e'
+  +#255#236#194'e'#255#236#194'e'#255#236#194'e'#255#236#194'e'#255#236#194'e'
+  +#255#236#194'e'#255#236#194'e'#255#236#194'e'#255#239#205#130#255#207#130'$'
+  +#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#171#171#171#0#201'y '#255#235#191'o'#255
+  +#230#177'N'#255#230#177'N'#255#230#177'N'#255#230#177'N'#255#230#177'N'#255
+  +#230#177'N'#255#230#177'N'#255#230#177'N'#255#230#177'N'#255#235#191'o'#255
+  +#201'y '#255'XXX'#0'XXX'#0'XXX'#0'XXX'#0'XXX'#0'XXX'#0'XXX'#0'XXX'#0'XXX'#0
+  +'XXX'#0'XXX'#0'XXX'#0'XXX'#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#171#171#171#0#181#147'q'#255#171#171#171#255#171#171
+  +#171#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255#171
+  +#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255
+  +#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171
+  +#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171#171#255#171#171
+  +#171#255#171#171#171#255#171#171#171#255#171#171#171#150'XXX'#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'XXX'#2#170#170#170
+  +#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#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#170#170
+  +#170#255'XXX'#2#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0'XXX'#7#169#169#169#255#254#254#254#255#254#254#254#255#254#254#254
+  +#255#254#254#254#255#254#254#254#255#254#254#254#255#254#254#254#255#254#254
+  +#254#255#254#254#254#255#254#254#254#255#254#254#254#255#254#254#254#255#254
+  +#254#254#255#254#254#254#255#254#254#254#255#254#254#254#255#254#254#254#255
+  +#254#254#254#255#254#254#254#255#254#254#254#255#254#254#254#255#254#254#254
+  +#255#254#254#254#255#169#169#169#255'XXX'#7#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0'XXX'#14#167#167#167#255#250#250#250
+  +#255#251#251#251#255#186#186#186#255#219#219#219#255#186#186#186#255#252#252
+  +#252#255#252#252#252#255#252#252#252#255#252#252#252#255#252#252#252#255#252
+  +#252#252#255#252#252#252#255#252#252#252#255#252#252#252#255#252#252#252#255
+  +#252#252#252#255#252#252#252#255#252#252#252#255#252#252#252#255#252#252#252
+  +#255#252#252#252#255#251#251#251#255#250#250#250#255#167#167#167#255'XXX'#14
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'XXX'
+  +#19#165#165#166#255#249#249#249#255#249#249#249#255#174#174#174#255#164#164
+  +#164#255#174#174#174#255#142#142#142#255#175#175#175#255#175#175#175#255#142
+  +#142#142#255#175#175#175#255#251#251#251#255#251#251#251#255#251#251#251#255
+  +#251#251#251#255#251#251#251#255#251#251#251#255#251#251#251#255#250#250#250
+  +#255#250#250#250#255#250#250#250#255#250#250#250#255#249#249#249#255#249#249
+  +#249#255#165#165#166#255'XXX'#19#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0'XXX'#21#164#164#164#255#247#247#247#255#247#247
+  +#247#255#173#173#173#255#227#227#227#255#141#141#141#255#141#141#141#255#163
+  +#163#163#255#173#173#173#255#152#152#152#255#185#185#185#255#206#206#206#255
+  +#206#206#206#255#206#206#206#255#249#249#249#255#249#249#249#255#248#248#248
+  +#255#248#248#248#255#248#248#248#255#248#248#248#255#248#248#248#255#248#248
+  +#248#255#247#247#247#255#247#247#247#255#164#164#164#255'XXX'#21#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'XXX'#21#162#162
+  +#162#255#245#245#245#255#243#243#243#255#244#244#244#255#244#244#244#255#245
+  +#245#245#255#245#245#245#255#245#245#245#255#245#245#245#255#245#245#245#255
+  +#245#245#245#255#245#245#245#255#246#246#246#255#245#245#245#255#245#245#245
+  +#255#245#245#245#255#245#245#245#255#245#245#245#255#245#245#245#255#245#245
+  +#245#255#244#244#244#255#244#244#244#255#243#243#243#255#245#245#245#255#162
+  +#162#162#255'XXX'#21#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0'XXX'#21#160#160#160#255#243#243#243#255#240#240#240#255#200
+  +#200#200#255#170#170#170#255#201#201#201#255#242#242#242#255#242#242#242#255
+  +#242#242#242#255#242#242#242#255#243#243#243#255#243#243#243#255#243#243#243
+  +#255#243#243#243#255#243#243#243#255#242#242#242#255#242#242#242#255#242#242
+  +#242#255#242#242#242#255#242#242#242#255#241#241#241#255#241#241#241#255#240
+  +#240#240#255#243#243#243#255#160#160#160#255'XXX'#21#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0'XXX'#21#157#157#158#255#241
+  +#241#241#255#238#238#238#255#169#169#169#255#239#239#239#255#169#169#169#255
+  +#159#159#159#255#149#149#149#255#170#170#170#255#129#129#129#255#221#221#221
+  +#255#139#139#139#255#159#159#159#255#241#241#241#255#241#241#241#255#241#241
+  +#241#255#241#241#241#255#240#240#240#255#240#240#240#255#240#240#240#255#239
+  +#239#239#255#239#239#239#255#238#238#238#255#241#241#241#255#157#157#158#255
+  +'XXX'#21#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+  +#0'XXX'#21#155#155#155#255#240#240#240#255#236#236#236#255#177#177#177#255
+  ,#167#167#167#255#177#177#177#255#158#158#158#255#148#148#148#255#168#168#168
+  +#255#128#128#128#255#209#209#209#255#169#169#169#255#169#169#169#255#199#199
+  +#199#255#199#199#199#255#199#199#199#255#238#238#238#255#238#238#238#255#238
+  +#238#238#255#237#237#237#255#237#237#237#255#237#237#237#255#236#236#236#255
+  +#240#240#240#255#155#155#155#255'XXX'#21#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0'XXX'#21#153#153#153#255#238#238#238#255
+  +#233#233#233#255#234#234#234#255#234#234#234#255#235#235#235#255#176#176#176
+  +#255#236#236#236#255#236#236#236#255#236#236#236#255#237#237#237#255#237#237
+  +#237#255#237#237#237#255#237#237#237#255#237#237#237#255#236#236#236#255#236
+  +#236#236#255#236#236#236#255#235#235#235#255#235#235#235#255#234#234#234#255
+  +#234#234#234#255#233#233#233#255#238#238#238#255#153#153#153#255'XXX'#21#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'XXX'#21
+  +#150#150#151#255#236#236#236#255#231#231#231#255#231#231#231#255#232#232#232
+  +#255#232#232#232#255#233#233#233#255#234#234#234#255#234#234#234#255#234#234
+  +#234#255#235#235#235#255#235#235#235#255#235#235#235#255#235#235#235#255#235
+  +#235#235#255#234#234#234#255#234#234#234#255#234#234#234#255#233#233#233#255
+  +#232#232#232#255#232#232#232#255#231#231#231#255#231#231#231#255#236#236#236
+  +#255#150#150#151#255'XXX'#21#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0'XXX'#21#148#148#149#255#235#235#235#255#199#199#199
+  +#255#200#200#200#255#200#200#200#255#200#200#200#255#201#201#201#255#201#201
+  +#201#255#201#201#201#255#201#201#201#255#201#201#201#255#202#202#202#255#202
+  +#202#202#255#202#202#202#255#201#201#201#255#201#201#201#255#201#201#201#255
+  +#201#201#201#255#201#201#201#255#200#200#200#255#200#200#200#255#200#200#200
+  +#255#199#199#199#255#235#235#235#255#148#148#149#255'XXX'#21#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'XXX'#21#146#146#146
+  +#255#233#233#233#255#226#226#226#255#226#226#226#255#227#227#227#255#228#228
+  +#228#255#228#228#228#255#229#229#229#255#229#229#229#255#230#230#230#255#230
+  +#230#230#255#231#231#231#255#231#231#231#255#231#231#231#255#230#230#230#255
+  +#230#230#230#255#229#229#229#255#229#229#229#255#228#228#228#255#228#228#228
+  +#255#227#227#227#255#226#226#226#255#226#226#226#255#233#233#233#255#146#146
+  +#146#255'XXX'#21#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0'XXX'#21#143#143#144#255#231#231#231#255#223#223#223#255#151#151
+  +#151#255#170#170#170#255#225#225#225#255#226#226#226#255#226#226#226#255#227
+  +#227#227#255#227#227#227#255#228#228#228#255#228#228#228#255#228#228#228#255
+  +#228#228#228#255#228#228#228#255#227#227#227#255#227#227#227#255#226#226#226
+  +#255#226#226#226#255#225#225#225#255#224#224#224#255#224#224#224#255#223#223
+  +#223#255#231#231#231#255#143#143#144#255'XXX'#21#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0'XXX'#21#141#141#142#255#230#230
+  +#230#255#220#220#220#255#141#141#141#255#177#177#177#255#160#160#160#255#142
+  +#142#142#255#161#161#161#255#197#197#197#255#161#161#161#255#134#134#134#255
+  +#226#226#226#255#226#226#226#255#226#226#226#255#225#225#225#255#225#225#225
+  +#255#224#224#224#255#224#224#224#255#223#223#223#255#223#223#223#255#222#222
+  +#222#255#221#221#221#255#220#220#220#255#230#230#230#255#141#141#142#255'XXX'
+  +#21#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'XX'
+  +'X'#21#139#139#139#255#228#228#228#255#218#218#218#255#157#157#157#255#149
+  +#149#149#255'{{{'#255#141#141#141#255#203#203#203#255'|||'#255#159#159#159
+  +#255'|||'#255#223#223#223#255#224#224#224#255#223#223#223#255#223#223#223#255
+  +#222#222#222#255#222#222#222#255#221#221#221#255#221#221#221#255#220#220#220
+  +#255#219#219#219#255#218#218#218#255#218#218#218#255#228#228#228#255#139#139
+  +#139#255'XXX'#21#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0'XXX'#21#136#136#137#255#226#226#226#255#215#215#215#255#216#216
+  +#216#255#217#217#217#255#218#218#218#255#219#219#219#255#219#219#219#255#220
+  +#220#220#255#220#220#220#255#221#221#221#255#221#221#221#255#222#222#222#255
+  +#221#221#221#255#221#221#221#255#220#220#220#255#220#220#220#255#219#219#219
+  +#255#219#219#219#255#218#218#218#255#217#217#217#255#216#216#216#255#215#215
+  +#215#255#226#226#226#255#136#136#137#255'XXX'#21#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0'XXX'#21#134#134#135#255#225#225
+  +#225#255#213#213#213#255#147#147#147#255#164#164#164#255#216#216#216#255#216
+  +#216#216#255#217#217#217#255#218#218#218#255#218#218#218#255#219#219#219#255
+  +#219#219#219#255#220#220#220#255#149#149#149#255#210#210#210#255#218#218#218
+  +#255#218#218#218#255#217#217#217#255#216#216#216#255#216#216#216#255#215#215
+  +#215#255#214#214#214#255#213#213#213#255#225#225#225#255#134#134#135#255'XXX'
+  +#21#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'XX'
+  +'X'#21#132#132#133#255#224#224#224#255#211#211#211#255#138#138#138#255#171
+  ,#171#171#255#155#155#155#255#138#138#138#255#156#156#156#255#156#156#156#255
+  +#156#156#156#255#131#131#131#255#217#217#217#255#200#200#200#255#131#131#131
+  +#255#157#157#157#255'rrr'#255#198#198#198#255#215#215#215#255#214#214#214#255
+  +#214#214#214#255#213#213#213#255#212#212#212#255#211#211#211#255#224#224#224
+  +#255#132#132#133#255'XXX'#21#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0'XXX'#21#131#131#131#255#223#223#223#255#209#209#209
+  +#255#153#153#153#255#145#145#145#255'yyy'#255#138#138#138#255#163#163#163#255
+  +#155#155#155#255#155#155#155#255'zzz'#255#215#215#215#255#164#164#164#255#173
+  +#173#173#255#155#155#155#255'qqq'#255#189#189#189#255#196#196#196#255#195#195
+  +#195#255#179#179#179#255#211#211#211#255#210#210#210#255#209#209#209#255#223
+  +#223#223#255#131#131#131#255'XXX'#21#255#255#255#0#255#255#255#0#255#255#255
+  +#0#255#255#255#0#255#255#255#0'XXX'#21#129#129#130#255#219#219#219#255#202
+  +#202#202#255#203#203#203#255#204#204#204#255#204#204#204#255#205#205#205#255
+  +#206#206#206#255#206#206#206#255#207#207#207#255#207#207#207#255#207#207#207
+  +#255#208#208#208#255#207#207#207#255#207#207#207#255#207#207#207#255#206#206
+  +#206#255#206#206#206#255#205#205#205#255#204#204#204#255#204#204#204#255#203
+  +#203#203#255#202#202#202#255#219#219#219#255#129#129#130#255'XXX'#21#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'XXX'#21#127
+  +#127#128#255#211#211#211#255#210#210#210#255#210#210#210#255#211#211#211#255
+  +#211#211#211#255#212#212#212#255#212#212#212#255#212#212#212#255#212#212#212
+  +#255#212#212#212#255#212#212#212#255#212#212#212#255#212#212#212#255#212#212
+  +#212#255#212#212#212#255#212#212#212#255#212#212#212#255#212#212#212#255#211
+  +#211#211#255#211#211#211#255#210#210#210#255#210#210#210#255#211#211#211#255
+  +#127#127#128#255'XXX'#21#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0'XXX'#19'yyz'#173'~~'#127#255'~~'#127#255'~~'#127#255'~~'
+  +#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127
+  +#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255
+  +'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'#127#255'~~'
+  +#127#255'yyz'#173'XXX'#19#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0'XXX'#14'XXX+XXXUXXXqXXX'#127'XXX'#127'XXX'#127'XXX'#127
+  +'XXX'#127'XXX'#127'XXX'#127'XXX'#127'XXX'#127'XXX'#127'XXX'#127'XXX'#127'XXX'
+  +#127'XXX'#127'XXX'#127'XXX'#127'XXX'#127'XXX'#127'XXX'#127'XXXqXXXUXXX+XXX'
+  +#14#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'XX'
+  +'X'#7'XXX'#21'XXX+XXX9XXX@XXX@XXX@XXX@XXX@XXX@XXX@XXX@XXX@XXX@XXX@XXX@XXX@XX'
+  +'X@XXX@XXX@XXX@XXX@XXX@XXX9XXX+XXX'#21'XXX'#7#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0'XXX'#2'XXX'#7'XXX'#14'XXX'#19'XXX'#21
+  +'XXX'#21'XXX'#21'XXX'#21'XXX'#21'XXX'#21'XXX'#21'XXX'#21'XXX'#21'XXX'#21'XXX'
+  +#21'XXX'#21'XXX'#21'XXX'#21'XXX'#21'XXX'#21'XXX'#21'XXX'#21'XXX'#21'XXX'#19
+  +'XXX'#14'XXX'#7'XXX'#2#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0'XXX'#0'XXX'#1'XXX'#1'XXX'#3'XXX'#4'XXX'#6'XXX'#6
+  +'XXX'#7'XXX'#7'XXX'#7'XXX'#7'XXX'#7'XXX'#7'XXX'#7'XXX'#7'XXX'#7'XXX'#7'XXX'#7
+  +'XXX'#7'XXX'#6'XXX'#6'XXX'#4'XXX'#3'XXX'#1'XXX'#1'XXX'#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'XXX'#1'XX'
+  +'X'#3'XXX'#5'XXX'#8'XXX'#13'XXX'#16'XXX'#19'XXX'#20'XXX'#22'XXX'#22'XXX'#22
+  +'XXX'#22'XXX'#22'XXX'#22'XXX'#22'XXX'#22'XXX'#22'XXX'#22'XXX'#20'XXX'#19'XXX'
+  +#16'XXX'#13'XXX'#8'XXX'#5'XXX'#3'XXX'#1#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0'XXX'#1'XXX'#5'XXX'#11#14'@'
+  +#208#157#11'?'#213#255#11'?'#213#255#11'?'#213#255#11'?'#213#255#11'?'#213
+  +#255#11'?'#213#255#11'?'#213#255#11'?'#213#255#11'?'#213#255#11'?'#213#255#11
+  +'?'#213#255#11'?'#213#255#11'?'#213#255#11'?'#213#255#11'?'#213#255#11'?'#213
+  +#255#11'?'#213#255#11'?'#213#255#14'@'#208#157'XXX'#11'XXX'#5'XXX'#1#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +'XXX'#3'XXX'#8'XXX'#17#11'>'#210#255'w'#150#233#255#159#181#239#255#159#181
+  +#239#255#159#181#239#255#159#181#239#255#159#181#239#255#159#181#239#255#159
+  +#181#239#255#159#181#239#255#159#181#239#255#159#181#239#255#159#181#239#255
+  +#159#181#239#255#159#181#239#255#159#181#239#255#159#181#239#255#159#181#239
+  +#255'w'#150#233#255#11'>'#210#255'XXX'#17'XXX'#8'XXX'#3#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'XXX'#4'XXX'#13
+  +'XXX'#26#10'<'#205#255'Nx'#227#255'Kt'#225#255'Kt'#225#255'Kt'#225#255'Kt'
+  +#225#255'Kt'#225#255'Kt'#225#255'Kt'#225#255'Kt'#225#255'Kt'#225#255'Kt'#225
+  +#255'Kt'#225#255'Kt'#225#255'Kt'#225#255'Kt'#225#255'Kt'#225#255'Kt'#225#255
+  +'Nx'#227#255#10'<'#205#255'XXX'#26'XXX'#13'XXX'#4#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'XXX'#6'XXX'#16'XXX!'
+  +#10';'#199#255'Hs'#226#255'Eo'#224#255'Eo'#224#255'Eo'#224#255'Eo'#224#255'E'
+  +'o'#224#255'Eo'#224#255'Eo'#224#255'Eo'#224#255'Eo'#224#255'Eo'#224#255'Eo'
+  +#224#255'Eo'#224#255'Eo'#224#255'Eo'#224#255'Eo'#224#255'Eo'#224#255'Hs'#226
+  +#255#10';'#199#255'XXX!XXX'#16'XXX'#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'XXX'#6'XXX'#18'XXX$'#9'9'#192
+  ,#255'!S'#219#255#30'O'#217#255#30'O'#217#255#30'O'#217#255#30'O'#217#255#30
+  +'O'#217#255#30'O'#217#255#30'O'#217#255#30'O'#217#255#30'O'#217#255#30'O'#217
+  +#255#30'O'#217#255#30'O'#217#255#30'O'#217#255#30'O'#217#255#30'O'#217#255#30
+  +'O'#217#255'!S'#219#255#9'9'#192#255'XXX$XXX'#18'XXX'#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'XXX'#6'XXX'#18
+  +'XXX$'#8'6'#186#255#25'M'#217#255#22'I'#215#255#22'I'#215#255#22'I'#215#255
+  +#22'I'#215#255#22'I'#215#255#22'I'#215#255#22'I'#215#255#22'I'#215#255#22'I'
+  +#215#255#22'I'#215#255#22'I'#215#255#22'I'#215#255#22'I'#215#255#22'I'#215
+  +#255#22'I'#215#255#22'I'#215#255#25'M'#217#255#8'6'#186#255'XXX$XXX'#18'XXX'
+  +#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'XXX'#6'XXX'#16'XXX!'#8'5'#180#255'!['#225#255'(f'#230#255'(f'#230
+  +#255'(f'#230#255'(f'#230#255'(f'#230#255'(f'#230#255'(f'#230#255'(f'#230#255
+  +'(f'#230#255'(f'#230#255'(f'#230#255'(f'#230#255'(f'#230#255'(f'#230#255'(f'
+  +#230#255'(f'#230#255'!['#225#255#8'5'#180#255'XXX!XXX'#16'XXX'#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'XXX'
+  +#4'XXX'#13'XXX'#26#16'7'#166#168#7'3'#175#255#7'3'#175#255#7'3'#175#255#7'3'
+  +#175#255#7'3'#175#255#7'3'#175#255#7'3'#175#255#7'3'#175#255#7'3'#175#255#7
+  +'3'#175#255#7'3'#175#255#7'3'#175#255#7'3'#175#255#7'3'#175#255#7'3'#175#255
+  +#7'3'#175#255#7'3'#175#255#7'3'#175#255#16'7'#166#168'XXX'#26'XXX'#13'XXX'#4
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0'XXX'#3'XXX'#8'XXX'#17'XXX'#29'XXX+XXX7XXX?XXXEXXXHXXXHXXXHXXXHXXX'
+  +'HXXXHXXXHXXXHXXXHXXXHXXXEXXX?XXX7XXX+XXX'#29'XXX'#17'XXX'#8'XXX'#3#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +'XXX'#1'XXX'#5'XXX'#11'XXX'#17'XXX'#26'XXX!XXX&XXX)XXX+XXX+XXX+XXX+XXX+XXX+X'
+  +'XX+XXX+XXX+XXX+XXX)XXX&XXX!XXX'#26'XXX'#17'XXX'#11'XXX'#5'XXX'#1#255#255#255
+  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'XXX'
+  +#1'XXX'#3'XXX'#5'XXX'#8'XXX'#13'XXX'#16'XXX'#19'XXX'#20'XXX'#22'XXX'#22'XXX'
+  +#22'XXX'#22'XXX'#22'XXX'#22'XXX'#22'XXX'#22'XXX'#22'XXX'#22'XXX'#20'XXX'#19
+  +'XXX'#16'XXX'#13'XXX'#8'XXX'#5'XXX'#3'XXX'#1#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'XXX'#0'XXX'#1'XXX'#1'XX'
+  +'X'#3'XXX'#4'XXX'#6'XXX'#6'XXX'#7'XXX'#7'XXX'#7'XXX'#7'XXX'#7'XXX'#7'XXX'#7
+  +'XXX'#7'XXX'#7'XXX'#7'XXX'#7'XXX'#7'XXX'#6'XXX'#6'XXX'#4'XXX'#3'XXX'#1'XXX'#1
+  +'XXX'#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#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#10'TPopupMenu'#6'pmGrid'
+  +#4'left'#3#192#1#3'top'#3#146#1#0#9'TMenuItem'#10'lmCopyCell'#7'Caption'#6#4
+  +'Copy'#7'OnClick'#7#15'lmCopyCellClick'#0#0#9'TMenuItem'#15'lmExportAsComma'
+  +#7'Caption'#6#30'Export Grid as Comma Delemited'#7'OnClick'#7#20'lmExportAsC'
+  +'ommaClick'#0#0#9'TMenuItem'#14'lmExportAsHTML'#7'Caption'#6#19'Export Grid '
+  +'as HTML'#7'OnClick'#7#19'lmExportAsHTMLClick'#0#0#0#0
+]);

+ 1030 - 0
querywindow.pas

@@ -0,0 +1,1030 @@
+unit QueryWindow;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, IBConnection, sqldb, db, FileUtil, LResources, Forms,
+  Controls, Graphics, Dialogs, ExtCtrls, PairSplitter, StdCtrls, Buttons,
+  DBGrids, Menus, ComCtrls, SynEdit, SynHighlighterSQL, Reg, sqlscript,
+  SynEditTypes, Clipbrd;
+
+type
+
+  { TfmQueryWindow }
+
+  TfmQueryWindow = class(TForm)
+    bbClose: TBitBtn;
+    FindDialog1: TFindDialog;
+    imTools: TImageList;
+    imTabs: TImageList;
+    lmCloseTab: TMenuItem;
+    lmCopy: TMenuItem;
+    lmPaste: TMenuItem;
+    lmSelectAll: TMenuItem;
+    lmUndo: TMenuItem;
+    MainMenu1: TMainMenu;
+    MenuItem1: TMenuItem;
+    MenuItem10: TMenuItem;
+    lmCut: TMenuItem;
+    lmExport: TMenuItem;
+    lmCommaDelemited: TMenuItem;
+    lmHTML: TMenuItem;
+    lmRedo: TMenuItem;
+    MenuItem2: TMenuItem;
+    lmFind: TMenuItem;
+    lmFindAgain: TMenuItem;
+    MenuItem3: TMenuItem;
+    lmCopyCell: TMenuItem;
+    lmExportAsComma: TMenuItem;
+    lmExportAsHTML: TMenuItem;
+    MenuItem5: TMenuItem;
+    lmRun: TMenuItem;
+    lmRunSelect: TMenuItem;
+    lmRunExec: TMenuItem;
+    lmRunScript: TMenuItem;
+    OpenDialog1: TOpenDialog;
+    PageControl1: TPageControl;
+    Panel1: TPanel;
+    Panel2: TPanel;
+    pmTab: TPopupMenu;
+    pmMemo: TPopupMenu;
+    pmGrid: TPopupMenu;
+    SaveDialog1: TSaveDialog;
+    Splitter1: TSplitter;
+    meQuery: TSynEdit;
+    SynSQLSyn1: TSynSQLSyn;
+    ToolBar1: TToolBar;
+    tbNew: TToolButton;
+    tbOpen: TToolButton;
+    tbSave: TToolButton;
+    ToolButton1: TToolButton;
+    tbRun: TToolButton;
+    tbCommit: TToolButton;
+    tbRollback: TToolButton;
+    ToolButton2: TToolButton;
+    ToolButton3: TToolButton;
+    tbHistory: TToolButton;
+    ToolButton5: TToolButton;
+    tbMenu: TToolButton;
+    ToolButton6: TToolButton;
+    procedure bbRunClick(Sender: TObject);
+    procedure DBGrid1DblClick(Sender: TObject);
+    procedure FindDialog1Find(Sender: TObject);
+    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
+    procedure FormShow(Sender: TObject);
+    procedure lmCloseTabClick(Sender: TObject);
+    procedure lmCommaDelemitedClick(Sender: TObject);
+    procedure lmCopyCellClick(Sender: TObject);
+    procedure lmCopyClick(Sender: TObject);
+    procedure lmCutClick(Sender: TObject);
+    procedure lmExportAsCommaClick(Sender: TObject);
+    procedure lmExportAsHTMLClick(Sender: TObject);
+    procedure lmHTMLClick(Sender: TObject);
+    procedure lmPasteClick(Sender: TObject);
+    procedure lmRedoClick(Sender: TObject);
+    procedure lmRunClick(Sender: TObject);
+    procedure lmRunExecClick(Sender: TObject);
+    procedure lmRunScriptClick(Sender: TObject);
+    procedure lmRunSelectClick(Sender: TObject);
+    procedure lmSelectAllClick(Sender: TObject);
+    procedure lmUndoClick(Sender: TObject);
+    procedure lmFindClick(Sender: TObject);
+    procedure lmFindAgainClick(Sender: TObject);
+    procedure SQLScript1Exception(Sender: TObject; Statement: TStrings;
+      TheException: Exception; var Continue: boolean);
+    procedure tbCloseClick(Sender: TObject);
+    procedure tbCommitClick(Sender: TObject);
+    procedure tbHistoryClick(Sender: TObject);
+    procedure tbMenuClick(Sender: TObject);
+    procedure tbNewClick(Sender: TObject);
+    procedure tbOpenClick(Sender: TObject);
+    procedure tbRollbackClick(Sender: TObject);
+    procedure tbRunClick(Sender: TObject);
+    procedure tbSaveClick(Sender: TObject);
+  private
+    { private declarations }
+    fdbIndex: Integer;
+    RegRec: TRegisteredDatabase;
+    ResultControls: array of TObject;
+    ParentResultControls: array of TObject;
+    fOptions: set of TSynSearchOption;
+    ibConnection: TIBConnection;
+    SqlTrans: TSQLTransaction;
+  public
+    OnCommit: TNotifyEvent;
+    procedure Init(dbIndex: Integer);
+    function GetQueryType(AQuery: string): Integer;
+    function GetQuery: string;
+    function CreateResultTab(QueryType: Byte; var SqlQuery: TSQLQuery; var SQLScript: TSqlScript;
+      var meResult: TMemo; AdditionalTitle: string = ''): TTabSheet;
+    procedure ExecuteQuery(QueryType: Integer);
+    function ExecuteScript(Script: string): Boolean;
+    procedure AddResultControl(ParentControl: TObject; AControl: TObject);
+    procedure RemoveControls;
+    function FindSqlQuery: TSqlQuery;
+    function GetSQLType(Query: string; var Command: string): string;
+    function GetSQLSegment(QueryList: TStringList; StartLine: Integer; var QueryType, EndLine: Integer;
+      var SQLSegment: string; var IsDDL: Boolean): Boolean;
+    procedure QueryAfterScroll(DataSet: TDataSet);
+
+    { public declarations }
+  end; 
+
+var
+  fmQueryWindow: TfmQueryWindow;
+
+implementation
+
+{ TfmQueryWindow }
+
+uses main, SQLHistory;
+
+procedure TfmQueryWindow.SQLScript1Exception(Sender: TObject;
+  Statement: TStrings; TheException: Exception; var Continue: boolean);
+begin
+  ShowMessage(TheException.Message);
+end;
+
+procedure TfmQueryWindow.tbCloseClick(Sender: TObject);
+begin
+  Close;
+  Parent.Free;
+end;
+
+procedure TfmQueryWindow.tbCommitClick(Sender: TObject);
+var
+  meResult: TMemo;
+  SqlQuery: TSQLQuery;
+  SqlScript: TSQLScript;
+  ATab: TTabSheet;
+begin
+  RemoveControls;
+  SqlTrans.Commit;
+  ATab:= CreateResultTab(2, SqlQuery, SqlScript, meResult);
+  ATab.ImageIndex:= 4;
+  meResult.Lines.Add('Commited');
+  meResult.Font.Color:= clGreen;
+  if OnCommit <> nil then
+    OnCommit(self);
+  OnCommit:= nil;
+end;
+
+procedure TfmQueryWindow.tbHistoryClick(Sender: TObject);
+begin
+  fmSQLHistory.Init(RegRec.Title, Self);
+  fmSQLHistory.Show;
+end;
+
+procedure TfmQueryWindow.tbMenuClick(Sender: TObject);
+begin
+  pmTab.PopUp;
+end;
+
+procedure TfmQueryWindow.tbNewClick(Sender: TObject);
+var
+  i: Integer;
+begin
+  for i:= 1 to 1000 do
+  begin
+    if fmMain.FindQueryWindow(RegRec.Title + ': Query Window # ' + IntToStr(i)) = nil then
+    begin
+      fmMain.ShowCompleteQueryWindow(fdbIndex, 'Query Window # ' + IntToStr(i), '');
+      Break;
+    end;
+  end;
+end;
+
+procedure TfmQueryWindow.tbOpenClick(Sender: TObject);
+begin
+  OpenDialog1.DefaultExt:= '.sql';
+  if OpenDialog1.Execute then
+    meQuery.Lines.LoadFromFile(OpenDialog1.FileName);
+end;
+
+procedure TfmQueryWindow.tbRollbackClick(Sender: TObject);
+var
+  meResult: TMemo;
+  SqlQuery: TSQLQuery;
+  SqlScript: TSQLScript;
+  ATab: TTabSheet;
+begin
+  RemoveControls;
+  SqlTrans.Rollback;
+  ATab:= CreateResultTab(2, SqlQuery, SqlScript, meResult);
+  ATab.ImageIndex:= 5;
+  meResult.Lines.Add('Rollback');
+  meResult.Font.Color:= $AA6666;
+end;
+
+procedure TfmQueryWindow.tbRunClick(Sender: TObject);
+begin
+  ExecuteQuery(0);
+end;
+
+procedure TfmQueryWindow.tbSaveClick(Sender: TObject);
+begin
+  SaveDialog1.DefaultExt:= '.sql';
+  if SaveDialog1.Execute then
+    meQuery.Lines.SaveToFile(SaveDialog1.FileName);
+end;
+
+procedure TfmQueryWindow.Init(dbIndex: Integer);
+begin
+  fdbIndex:= dbIndex;
+  RegRec:= fmMain.RegisteredDatabases[dbIndex].RegRec;
+  ibConnection:= fmMain.RegisteredDatabases[dbIndex].IBConnection;
+  with fmMain.RegisteredDatabases[dbIndex] do
+  begin
+  //  Self.ibConnection.Close;
+    Self.ibConnection.DatabaseName:= RegRec.DatabaseName;
+    Self.ibConnection.UserName:= RegRec.UserName;
+    Self.ibConnection.Password:= RegRec.Password;
+    Self.IBConnection.CharSet:= RegRec.Charset;
+    Self.ibConnection.Role:= RegRec.Role;
+  end;
+  SqlTrans:= fmMain.RegisteredDatabases[dbIndex].SQLTrans;
+
+  SynSQLSyn1.TableNames.CommaText:= fmMain.GetTableNames(dbIndex);
+end;
+
+(************* Is Selectable (Check statement type Select, Update, Alter, etc) *******************)
+
+function TfmQueryWindow.GetQueryType(AQuery: string): Integer;
+var
+  List: TStringList;
+  i: Integer;
+  Line: string;
+  StartPos, EndPos: Integer;
+begin
+  List:= TStringList.Create;
+  List.Text:= AQuery;
+
+  Result:= 2; // Default Execute
+
+  for i:= 0 to List.Count - 1 do
+  begin
+    Line:= List[i];
+    // Remove comments
+    if Pos('--', Line) > 0 then
+      Line:= Copy(Line, 1, Pos('--', Line) - 1);
+    if (Pos('/*', Line) > 0) and (Pos('*/', Line) > 0) then
+    begin
+      StartPos:= (Pos('/*', Line));
+      EndPos:= (Pos('*/', Line));
+      Delete(Line, StartPos, EndPos - StartPos + 1);
+    end;
+
+    if (Pos('select', LowerCase(Trim(Line))) = 1) then
+    begin
+      Result:= 1; // Selectable
+      Break;
+    end
+    else
+    if Pos('setterm', LowerCase(StringReplace(Line, ' ', '', [rfReplaceAll]))) = 1 then
+    begin
+      Result:= 3;
+      Break;
+    end;
+
+    if Trim(Line) <> '' then
+    begin
+      Result:= 2; // Executable
+      Break;
+    end;
+
+  end;
+  List.Free;
+end;
+
+function TfmQueryWindow.GetQuery: string;
+begin
+  Result:= meQuery.SelText;
+  if Result = '' then
+    Result:= meQuery.Lines.Text;
+end;
+
+function TfmQueryWindow.CreateResultTab(QueryType: Byte; var SqlQuery: TSQLQuery; var SQLScript: TSqlScript;
+  var meResult: TMemo; AdditionalTitle: string = ''): TTabSheet;
+var
+  ATab: TTabSheet;
+  DBGrid: TDBGrid;
+  DataSource: TDataSource;
+  StatusBar: TStatusBar;
+begin
+  ATab:= TTabSheet.Create(nil);
+  Result:= ATab;
+  ATab.Parent:= PageControl1;
+  ATab.Caption:= 'Result # ' + IntToStr(PageControl1.PageCount) + AdditionalTitle;
+  if QueryType = 1 then // Select, need record set result
+  begin
+    // Query
+    SqlQuery:= TSQLQuery.Create(nil);
+    SqlQuery.DataBase:= ibConnection;
+    SqlQuery.Transaction:= SqlTrans;
+    SqlQuery.AfterScroll:= @QueryAfterScroll;
+    AddResultControl(ATab, SqlQuery);
+
+
+    // Status Bar
+    StatusBar:= TStatusBar.Create(nil);
+    StatusBar.Parent:= ATab;
+    AddResultControl(ATab, StatusBar);
+
+    // Datasource
+    DataSource:= TDataSource.Create(nil);
+    DataSource.DataSet:= SqlQuery;
+    AddResultControl(ATab, DataSource);
+
+    // Query result Grid
+    DBGrid:= TDBGrid.Create(nil);
+    DBGrid.Parent:= ATab;
+    DBGrid.DataSource:= DataSource;
+    DBGrid.Align:= alClient;
+    DBGrid.OnDblClick:= @DBGrid1DblClick;
+    DBGrid.ReadOnly:= False;
+    DBGrid.AutoEdit:= False;
+    DBGrid.FixedColor:= $00DDDACF;
+    DBGrid.PopupMenu:= pmGrid;
+    DBGrid.Options:= DBGrid.Options + [dgAutoSizeColumns];
+    AddResultControl(ATab, DBGrid);
+  end
+  else
+  if QueryType in [2, 3] then
+  begin
+    meResult:= TMemo.Create(nil);
+    meResult.Parent:= ATab;
+    meResult.ReadOnly:= True;
+    meResult.Align:= alClient;
+    AddResultControl(ATab, meResult);
+
+    if QueryType = 2 then
+    begin
+      SqlQuery:= TSQLQuery.Create(nil);
+      SqlQuery.DataBase:= ibConnection;
+      SqlQuery.Transaction:= SqlTrans;
+      AddResultControl(ATab, SqlQuery);
+    end;
+
+
+    if QueryType = 3 then // Script
+    begin
+      SQLScript:= TSQLScript.Create(nil);
+      SQLScript.DataBase:= ibConnection;
+      SQLScript.Transaction:= SqlTrans;
+      AddResultControl(ATab, SQLScript);
+    end;
+  end;
+  AddResultControl(nil, ATab);
+end;
+
+(***************  Execute Query   ******************)
+
+procedure TfmQueryWindow.ExecuteQuery(QueryType: Integer);
+var
+  Query: string;
+  StartTime: TDateTime;
+  QueryPart: string;
+  Cnt: Integer;
+  SqlQuery: TSQLQuery;
+  SqlScript: TSQLScript;
+  meResult: TMemo;
+  ATab: TTabSheet;
+  SqlType: string;
+  List: TStringList;
+  EndLine: Integer;
+  StartLine: Integer;
+  Command: string;
+  IsDDL: Boolean;
+  Affected: Integer;
+begin
+  try
+    RemoveControls;
+    Query:= Trim(GetQuery);
+
+    if QueryType = 0 then // Auto
+      QueryType:= GetQueryType(Query);
+
+    Cnt:= 0;
+
+    // Script
+    if (QueryType = 3) then
+    begin
+      ExecuteScript(Query);
+      SqlType:= GetSQLType(Query, Command);
+      fmMain.AddToSQLHistory(RegRec.Title, SqlType, Query);
+    end
+    else       // normal statement / Multi statements
+    begin
+      List:= TStringList.Create;
+      List.Text:= Query;
+      StartLine:= 0;
+      repeat
+        Inc(Cnt);
+        if not GetSQLSegment(List, Startline, QueryType, EndLine, QueryPart, IsDDL) then
+          Break;
+
+        if EndLine < StartLine then
+          StartLine:= StartLine + 1
+        else
+          StartLine:= EndLine + 1;
+
+
+        if Trim(QueryPart) <> '' then   // Select
+        if QueryType = 1 then
+        begin
+          try
+            ATab:= CreateResultTab(1, SqlQuery, SqlScript, meResult);
+            ATab.ImageIndex:= 0;
+            SQLQuery.SQL.Text:= QueryPart;
+            SQLQuery.Open;
+            fmMain.AddToSQLHistory(RegRec.Title, 'SELECT', QueryPart);
+
+          except
+          on e: exception do
+          begin
+            ATab.Free;
+            SetLength(ResultControls, High(ResultControls));
+            setlength(ParentResultControls, High(ParentResultControls));
+            ATab:= CreateResultTab(2, SqlQuery, SqlScript, meResult);
+            PageControl1.ActivePage:= ATab;
+
+            meResult.Text:= e.message;
+            meResult.Lines.Add(QueryPart);
+            meResult.Font.Color:= clRed;
+            ATab.Font.Color:= clRed;
+            ATab.ImageIndex:= 3;
+          end;
+          end;
+        end
+        else  // Execute
+        if QueryType = 2 then
+        begin
+          ATab:= CreateResultTab(2, SqlQuery, SqlScript, meResult);
+          ATab.ImageIndex:= 1;
+          SqlType:= GetSQLType(QueryPart, Command);
+          StartTime:= Now;
+          Affected:= 0;
+          try
+            if IsDDL then
+              ibConnection.ExecuteDirect(QueryPart)
+            else
+            begin   // DML
+              SqlQuery.Close;
+              SqlQuery.SQL.Text:= QueryPart;
+              SqlQuery.ExecSQL;
+              Affected:= sqlQuery.RowsAffected;
+            end;
+
+            fmMain.AddToSQLHistory(RegRec.Title, SQLType, QueryPart);
+            meResult.Visible:= True;
+            meResult.Clear;
+            meResult.Lines.Add('statement #' + IntToStr(cnt));
+            if IsDDL then
+              meResult.Lines.Add(FormatDateTime('hh:nn:ss.z', Now) + ' - DDL Executed. Takes (H:M:S.MS) ' +
+                FormatDateTime('HH:nn:ss.z', Now - StartTime))
+            else // DML
+            begin
+              meResult.Lines.Add(FormatDateTime('hh:nn:ss.z', Now) + ' - DML Executed. Takes (H:M:S.MS) ' +
+                FormatDateTime('HH:nn:ss.z', Now - StartTime));
+              meResult.Lines.Add('Rows affected: ' + Format('%3.0n', [Affected / 1]));
+
+            end;
+
+          except
+          on e: exception do
+          begin
+            ATab:= CreateResultTab(2, SqlQuery, SqlScript, meResult);
+            PageControl1.ActivePage:= ATab;
+            meResult.Text:= e.message;
+            meResult.Lines.Add(QueryPart);
+            meResult.Font.Color:= clRed;
+            ATab.Font.Color:= clRed;
+            ATab.ImageIndex:= 3;
+          end;
+          end
+
+        end
+        else  // Script
+        begin
+          if ExecuteScript(QueryPart) then
+          begin
+            SqlType:= GetSQLType(QueryPart, Command);
+            fmMain.AddToSQLHistory(RegRec.Title, SqlType, Query);
+          end;
+        end;
+
+        Application.ProcessMessages;
+      until StartLine >= List.Count;
+      List.Free;
+    end;
+
+  except
+  on e: exception do
+  begin
+    ATab:= CreateResultTab(2, SqlQuery, SqlScript, meResult);
+    ATab.ImageIndex:= 2;
+    PageControl1.ActivePage:= ATab;
+
+    meResult.Text:= e.message;
+    meResult.Lines.Add(QueryPart);
+    meResult.Font.Color:= clRed;
+  end;
+  end;
+
+end;
+
+function TfmQueryWindow.ExecuteScript(Script: string): Boolean;
+var
+  StartTime: TDateTime;
+  SqlQuery: TSQLQuery;
+  SqlScript: TSQLScript;
+  meResult: TMemo;
+  ATab: TTabSheet;
+begin
+  try
+    StartTime:= Now;
+    ATab:= CreateResultTab(3, SqlQuery, SqlScript, meResult);
+    ATab.ImageIndex:= 2;
+    SQLScript.Script.Text:= Script;
+    SQLScript.ExecuteScript;
+    Result:= True;
+    meResult.Lines.Text:= FormatDateTime('hh:nn:ss.z', Now) + ' - Script Executed. It takes (H:M:S.MS) ' +
+      FormatDateTime('HH:nn:ss.z', Now - StartTime);
+
+  except
+  on e: exception do
+  begin
+    Result:= False;
+    ATab:= CreateResultTab(2, SqlQuery, SqlScript, meResult);
+    PageControl1.ActivePage:= ATab;
+    meResult.Text:= e.Message;
+    meResult.Lines.Add(Script);
+    meResult.Font.Color:= clRed;
+    ATab.Font.Color:= clRed;
+    ATab.ImageIndex:= 3;
+  end;
+
+  end;
+end;
+
+procedure TfmQueryWindow.AddResultControl(ParentControl: TObject; AControl: TObject);
+begin
+  SetLength(ResultControls, Length(ResultControls) + 1);
+  SetLength(ParentResultControls, Length(ParentResultControls) + 1);
+  ResultControls[High(ParentResultControls)]:= AControl;
+  ParentResultControls[High(ParentResultControls)]:= ParentControl;
+end;
+
+procedure TfmQueryWindow.RemoveControls;
+var
+  i: Integer;
+  CannotFree: Boolean;
+begin
+  for i:= High(ResultControls) downto  0 do
+  begin
+    if ResultControls[i] is TSQLQuery then
+      (ResultControls[i] as TSQLQuery).Close;
+
+    //    CannotFree:= (ResultControls[i] is TStatusBar) or (ResultControls[i] is TSQLQuery);
+
+    //  if not CannotFree then
+    ResultControls[i].Free;
+  end;
+
+  SetLength(ResultControls, 0);
+  SetLength(ParentResultControls, 0);
+end;
+
+function TfmQueryWindow.FindSqlQuery: TSqlQuery;
+var
+  i: Integer;
+begin
+  Result:= nil;
+  if PageControl1.PageCount > 0 then
+  begin
+    with PageControl1.ActivePage do
+      for i:= 0 to ControlCount - 1 do
+        if Controls[i] is TDBGrid then
+        begin
+          Result:= TSqlQuery((Controls[i] as TDBGrid).DataSource.DataSet);
+          Break;
+        end;
+  end;
+
+end;
+
+function TfmQueryWindow.GetSQLType(Query: string; var Command: string): string;
+begin
+  Query:= Trim(Query);
+  if (Query <> '') and (Pos(' ', Query) > 0) then
+  begin
+    Command:= Copy(Query, 1, Pos(' ', Query) - 1);
+    Command:= LowerCase(Command);
+    if (Command = 'alter') or (Command = 'create') or (Command = 'drop') or (Command = 'grant') or
+       (Command = 'revoke') then
+      Result:= 'DDL'
+    else
+      Result:= 'DML';
+  end;
+end;
+
+function TfmQueryWindow.GetSQLSegment(QueryList: TStringList; StartLine: Integer; var QueryType, EndLine: Integer;
+  var SQLSegment: string; var IsDDL: Boolean): Boolean;
+var
+  i: Integer;
+  RealStartLine: Integer;
+  SecondRealStart: Integer;
+  MultiComment: Boolean;
+  Comment: Boolean;
+  BeginExist: Boolean;
+begin
+  // Get start
+  MultiComment:= False;
+  SQLSegment:= '';
+  RealStartLine:= StartLine;
+  SecondRealStart:= -1;
+  Result:= False;
+
+  // Remove comment
+  for i:= StartLine to QueryList.Count - 1 do
+  begin
+    if Pos('/*', Trim(QueryList[i])) = 1 then
+    begin
+      MultiComment:= True;
+      Comment:= False;
+    end;
+
+    if not MultiComment then
+      Comment:= Pos('--', Trim(QueryList[i])) = 1;
+
+    if (Trim(QueryList[i]) <> '') and (not Comment) and (not MultiComment) then
+    begin
+      RealStartLine:= i;
+      Break;
+    end;
+
+    if MultiComment and (Pos('*/', QueryList[i]) > 0) then // End of multi-line comment
+    begin
+      QueryList[i]:= Trim(Copy(QueryList[i], Pos('*/', QueryList[i]) + 2, Length(QueryList[i])));
+      RealStartLine:= i;
+      MultiComment:= False;
+      Comment:= False;
+      if (i = QueryList.Count - 1) or
+         ((Trim(QueryList[i + 1]) <> '') and  (Pos('/*', Trim(QueryList[i + 1])) <> 1) and
+         (Pos('--', Trim(QueryList[i + 1])) <> 1)) then
+          Break;
+    end;
+
+  end;
+
+  SecondRealStart:= RealStartLine;
+  // remove empty lines
+  for i:= RealStartLine to QueryList.Count - 1 do
+  begin
+     if Trim(QueryList[i]) <> '' then
+     begin
+       SecondRealStart:= i;
+       Break;
+     end;
+  end;
+
+
+  IsDDL:= False;
+  if SecondRealStart < QueryList.Count then
+  begin
+    SQLSegment:= SQLSegment + QueryList[SecondRealStart];
+
+    if (Pos('select', LowerCase(Trim(SQLSegment))) = 1) then
+      QueryType:= 1 // Selectable
+    else
+    if Pos('setterm', LowerCase(StringReplace(SQLSegment, ' ', '', [rfReplaceAll]))) = 1 then
+      QueryType:= 3 // Script
+    else
+    begin
+      QueryType:= 2; // Executable
+      IsDDL:= (Pos('create', lowerCase(Trim(SQLSegment))) = 1) or (Pos('alter', lowerCase(Trim(SQLSegment))) = 1) or
+         (Pos('modify', lowerCase(Trim(SQLSegment))) = 1);
+    end;
+  end;
+
+  // Concatinate
+  SQLSegment:= '';
+  BeginExist:= False;
+    for i:= SecondRealStart to QueryList.Count - 1 do
+    begin
+      if Pos('begin', Trim(LowerCase(QueryList[i]))) > 0 then
+        BeginExist:= True;
+
+      SQLSegment:= SQLSegment + QueryList[i] + #10;
+
+      if (QueryType in [1, 2]) and
+        (((Pos(';', QueryList[i]) > 0) and (Not BeginExist)) or
+        ((Pos('end', LowerCase(Trim(QueryList[i]))) = 1) and BeginExist)
+        or (i = QueryList.Count - 1)) then
+      begin
+        Result:= True;
+        if (not BeginExist) and (Pos(';', QueryList[i]) > 0) then
+        begin
+          QueryList[i]:= Trim(Copy(QueryList[i],  Pos(';', QueryList[i]) + 1, Length(QueryList[i])));
+          if QueryList[i] = '' then
+           EndLine:= i
+          else
+          begin
+            EndLine:= i - 1;
+            SQLSegment:= Trim(Copy(SQLSegment, 1, Pos(';',  SQLSegment)));
+          end;
+
+        end
+        else
+          EndLine:= i;
+        Break;
+      end
+      else
+      if (QueryType = 3) and (i > SecondRealStart) and (Pos('setterm', LowerCase(StringReplace(QueryList[i],
+        ' ', '', [rfReplaceAll]))) > 0) then
+      begin
+        Result:= True;
+        EndLine:= i;
+        Break;
+      end;
+    end;
+
+end;
+
+
+procedure TfmQueryWindow.bbRunClick(Sender: TObject);
+begin
+  ExecuteQuery(0);
+end;
+
+
+
+procedure TfmQueryWindow.DBGrid1DblClick(Sender: TObject);
+begin
+  if (Sender as TDBGrid).SelectedField.DataType in [ftBlob, ftMemo] then
+    ShowMessage((Sender as TDBGrid).SelectedField.AsString);
+end;
+
+procedure TfmQueryWindow.FindDialog1Find(Sender: TObject);
+begin
+  fOptions:= [];
+
+  if frMatchCase in FindDialog1.Options then
+    fOptions:= fOptions + [ssoMatchCase];
+
+  if frWholeWord in FindDialog1.Options then
+    fOptions:= fOptions + [ssoWholeWord];
+
+  if not (frDown in FindDialog1.Options) then
+    fOptions:= fOptions + [ssoBackwards];
+
+   if frEntireScope in FindDialog1.Options then
+     fOptions:= fOptions + [ssoEntireScope];
+
+  meQuery.SearchReplace(FindDialog1.FindText, '', fOptions);
+end;
+
+
+procedure TfmQueryWindow.FormClose(Sender: TObject;
+  var CloseAction: TCloseAction);
+begin
+  RemoveControls;
+  if SqlTrans.Active then
+  begin
+    SqlTrans.Commit;
+    if OnCommit <> nil then
+      OnCommit(self);
+    OnCommit:= nil;
+  end;
+  IBConnection.Close;
+  CloseAction:= caFree;
+end;
+
+procedure TfmQueryWindow.FormShow(Sender: TObject);
+begin
+  meQuery.SetFocus;
+end;
+
+procedure TfmQueryWindow.lmCloseTabClick(Sender: TObject);
+begin
+  Close;
+  Parent.Free;
+end;
+
+
+procedure TfmQueryWindow.lmCommaDelemitedClick(Sender: TObject);
+var
+  i: Integer;
+  F: TextFile;
+  SqlQuery: TSQLQuery;
+begin
+  SaveDialog1.DefaultExt:= '.txt';
+  SqlQuery:= FindSqlQuery;
+  if SqlQuery = nil then
+  begin
+    ShowMessage('There is no record set in result');
+    Exit;
+  end;
+  if (not SQLQuery.Active) or (SQLQuery.RecordCount = 0) then
+    MessageDlg('No data', mtError, [mbOk], 0)
+  else
+  if SaveDialog1.Execute then
+  begin
+    SQLQuery.DisableControls;
+    SQLQuery.First;
+    AssignFile(F, SaveDialog1.FileName);
+    Rewrite(F);
+    for i:= 0 to SQLQuery.FieldCount - 1 do
+    begin
+      Write(F, '"', SQLQuery.Fields[i].FieldName, '"');
+      if i = SQLQuery.FieldCount - 1 then
+        Writeln(F)
+      else
+        Write(F, ', ');
+    end;
+
+    while not SQLQuery.EOF do
+    begin
+      for i:= 0 to SQLQuery.FieldCount - 1 do
+      begin
+        Write(F, '"', SQLQuery.Fields[i].AsString, '"');
+        if i = SQLQuery.FieldCount - 1 then
+          Writeln(F)
+        else
+          Write(F, ', ');
+      end;
+      SQLQuery.Next;
+    end;
+    CloseFile(F);
+    SQLQuery.EnableControls;
+  end;
+
+end;
+
+procedure TfmQueryWindow.lmCopyCellClick(Sender: TObject);
+begin
+  Clipboard.AsText:= TdbGrid(pmGrid.PopupComponent).SelectedField.AsString;
+end;
+
+procedure TfmQueryWindow.lmCopyClick(Sender: TObject);
+begin
+  meQuery.CopyToClipboard;
+end;
+
+procedure TfmQueryWindow.lmCutClick(Sender: TObject);
+begin
+  meQuery.CutToClipboard;
+end;
+
+procedure TfmQueryWindow.lmExportAsCommaClick(Sender: TObject);
+begin
+  lmCommaDelemitedClick(nil);
+end;
+
+procedure TfmQueryWindow.lmExportAsHTMLClick(Sender: TObject);
+begin
+  lmHTMLClick(nil);
+end;
+
+
+procedure TfmQueryWindow.lmHTMLClick(Sender: TObject);
+var
+  i: Integer;
+  F: TextFile;
+  SqlQuery: TSQLQuery;
+begin
+  SaveDialog1.DefaultExt:= '.htm';
+  SqlQuery:= FindSqlQuery;
+  if SqlQuery = nil then
+  begin
+    ShowMessage('There is no record set in result');
+  end
+  else
+  if (not SQLQuery.Active) or (SQLQuery.RecordCount = 0) then
+    MessageDlg('No data', mtError, [mbOk], 0)
+  else
+  if SaveDialog1.Execute then
+  begin
+    SQLQuery.DisableControls;
+    SQLQuery.First;
+    AssignFile(F, SaveDialog1.FileName);
+    Rewrite(F);
+    Writeln(F, '<table border=0><tr bgcolor="DDDDDD">');
+    for i:= 0 to SQLQuery.FieldCount - 1 do
+    begin
+      Write(F, '<th>', SQLQuery.Fields[i].FieldName, '</th>');
+      if i = SQLQuery.FieldCount - 1 then
+        Writeln(F, '</tr>');
+    end;
+
+    while not SQLQuery.EOF do
+    begin
+      Write(f, '<tr bgcolor="');
+      if SQLQuery.RecNo mod 2 = 0 then
+        Write(F, '#EEDDFF">')
+      else
+        Write(F, '#FFFFFF">');
+
+      for i:= 0 to SQLQuery.FieldCount - 1 do
+      begin
+        Write(F, '<td>', SQLQuery.Fields[i].AsString, '</td>');
+        if i = SQLQuery.FieldCount - 1 then
+          Writeln(F, '</tr>');
+      end;
+      SQLQuery.Next;
+    end;
+    Writeln(F, '</table>');
+    CloseFile(F);
+    SQLQuery.EnableControls;
+  end;
+
+end;
+
+
+
+procedure TfmQueryWindow.lmPasteClick(Sender: TObject);
+begin
+  meQuery.PasteFromClipboard;
+end;
+
+procedure TfmQueryWindow.lmRedoClick(Sender: TObject);
+begin
+  meQuery.Redo;
+end;
+
+procedure TfmQueryWindow.lmRunClick(Sender: TObject);
+begin
+  ExecuteQuery(0);
+end;
+
+procedure TfmQueryWindow.lmRunExecClick(Sender: TObject);
+begin
+  ExecuteQuery(2);
+end;
+
+procedure TfmQueryWindow.lmRunScriptClick(Sender: TObject);
+begin
+  ExecuteQuery(3);
+end;
+
+procedure TfmQueryWindow.lmRunSelectClick(Sender: TObject);
+begin
+  ExecuteQuery(1);
+end;
+
+procedure TfmQueryWindow.lmSelectAllClick(Sender: TObject);
+begin
+  meQuery.SelectAll;
+end;
+
+
+procedure TfmQueryWindow.lmUndoClick(Sender: TObject);
+begin
+  meQuery.Undo;
+end;
+
+
+procedure TfmQueryWindow.lmFindClick(Sender: TObject);
+begin
+  FindDialog1.Execute;
+end;
+
+procedure TfmQueryWindow.lmFindAgainClick(Sender: TObject);
+begin
+  meQuery.SearchReplace(FindDialog1.FindText, '', fOptions);
+end;
+
+
+procedure TfmQueryWindow.QueryAfterScroll(DataSet: TDataSet);
+var
+  TabSheet: TTabSheet;
+  i: Integer;
+begin
+  TabSheet:= nil;
+  // Get DataSet's TTabsheet
+  for i:= 0 to High(ResultControls) do
+  if DataSet = ResultControls[i] then
+  begin
+    TabSheet:= ParentResultControls[i] as TTabSheet;
+    Break;
+  end;
+
+  if TabSheet <> nil then
+  for i:= 0 to High(ResultControls) do
+    if  (ParentResultControls[i] <> nil) and ((ParentResultControls[i] as TTabSheet) = TabSheet)
+      and (ResultControls[i] is TStatusBar) then
+      begin
+      (ResultControls[i] as TStatusBar).SimpleText:= IntToStr(DataSet.RecordCount) +
+        ' records fetched. At record # ' + IntToStr(DataSet.RecNo);
+      break;
+  end;
+
+end;
+
+initialization
+  {$I querywindow.lrs}
+
+end.
+

+ 278 - 0
reg.lfm

@@ -0,0 +1,278 @@
+object fmReg: TfmReg
+  Left = 407
+  Height = 348
+  Top = 201
+  Width = 592
+  ActiveControl = edTitle
+  Caption = 'Register Firebird Database'
+  ClientHeight = 348
+  ClientWidth = 592
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object Label1: TLabel
+    Left = 13
+    Height = 18
+    Top = 70
+    Width = 106
+    Caption = 'server:database'
+    ParentColor = False
+  end
+  object Label2: TLabel
+    Left = 13
+    Height = 18
+    Top = 117
+    Width = 72
+    Caption = 'User name'
+    ParentColor = False
+  end
+  object Label3: TLabel
+    Left = 13
+    Height = 18
+    Top = 165
+    Width = 62
+    Caption = 'Password'
+    ParentColor = False
+  end
+  object Label4: TLabel
+    Left = 13
+    Height = 18
+    Top = 19
+    Width = 30
+    Caption = 'Title'
+    ParentColor = False
+  end
+  object Label5: TLabel
+    Left = 13
+    Height = 18
+    Top = 211
+    Width = 51
+    Caption = 'Charset'
+    ParentColor = False
+  end
+  object Label6: TLabel
+    Left = 13
+    Height = 18
+    Top = 248
+    Width = 29
+    Caption = 'Role'
+    ParentColor = False
+  end
+  object edDatabaseName: TEdit
+    Left = 126
+    Height = 27
+    Top = 64
+    Width = 289
+    TabOrder = 1
+  end
+  object btBrowse: TButton
+    Left = 424
+    Height = 25
+    Top = 66
+    Width = 27
+    Caption = '...'
+    OnClick = btBrowseClick
+    TabOrder = 2
+  end
+  object edUserName: TEdit
+    Left = 126
+    Height = 27
+    Top = 110
+    Width = 145
+    TabOrder = 3
+  end
+  object edPassword: TEdit
+    Left = 126
+    Height = 27
+    Top = 156
+    Width = 145
+    EchoMode = emPassword
+    PasswordChar = '-'
+    TabOrder = 4
+  end
+  object bbReg: TBitBtn
+    Left = 13
+    Height = 30
+    Top = 296
+    Width = 91
+    Caption = 'Register'
+    Color = 16249563
+    Default = True
+    Glyph.Data = {
+      76060000424D7606000000000000360000002800000014000000140000000100
+      2000000000004006000064000000640000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000093E0D3A083D0DCA073C0DF9083C0EA90037120E00000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000073B0E6C073D0DFA0D6217FF0D6617FF073C
+      0DFF063C0D9D0000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000083C0E840944
+      0FFF149023FF18AF2AFF18AE2AFF084810FF073C0DFB093C111E000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000063C0D780A5012FF169F26FF22B233FFA3DFAAFF61C86EFF0C5D
+      15FF073C0DFF073C0DAD053C0B2F004000080000000000000000000000000000
+      000000000000000000000000000000000000063B0E5B094D11FE17A628FF2FB7
+      3FFFC6EBCAFFA0DEA7FF30B741FF138D22FF0E6A19FF0D6417FF0A5113FF073E
+      0EFD083C0DCB063C0D770037120E00000000000000000000000000000000083E
+      0C3E094911FA16A127FF23B334FF5CC769FF24B335FF18AF2AFF18AF2AFF18AF
+      2AFF38BA47FF44BE53FF46BF55FF4DBB5AFF1B8028FF09440FFF073C0DEB063C
+      0E59000000000000000000400008073D0DDC149423FF18AF2AFF19AF2BFF18AF
+      2AFF18AF2AFF18AF2AFF18AD2AFF149D24FF15A025FF16A828FF18AF2AFF20B2
+      32FF72CE7DFF82CD8BFF125819FF073C0DFE063C0E5A00000000063C0D510A52
+      13FF17AB29FF18AF2AFF18AF2AFF18AF2AFF18AF2AFF18AF2AFF16A527FF0F8B
+      1FFF108D1FFF0F8B1EFF108D1FFF139B24FF17AB28FF3DBC4CFF9FDAA6FF0A4A
+      11FF073C0DF10C3D0C15083C0B44073F0EFF108B1FFF139B23FF17AB29FF18AF
+      2AFF18AF2AFF18AF2AFF149F25FF0E7B1BFF073E0EFF0A5612FF0E7C1CFF0F8B
+      1FFF108C1EFF14A025FF56C463FF63AF6CFF073C0DFF073D0E6D00000001073B
+      0DB008400DFF0F811DFF0F8C1FFF139A24FF17A928FF18AF2AFF129823FF0D69
+      17FF073D0DB1063C0D78073C0DDE08450FFF10871EFF0F8B1EFF16A426FF8ED7
+      97FF08450FFF063C0DA200000000003B140D083C0EAA073C0DFF0C5E16FF108B
+      1FFF0F8B1FFF119422FF108F20FF0A5213FF083B0D630000000000400004083C
+      0CA508430FFF0F8B1EFF149F25FF68CB74FF196622FF073C0DB4000000000000
+      000000000000063B0C52073C0DD5073C0DFF0C6517FF108C1FFF108E1FFF073D
+      0DFF063D0C2A0000000000000000083C0C40073D0DFF0F8A1FFF16A426FF29B5
+      3AFF307F39FF083D0CA40000000000000000000000000000000000000001093D
+      0D3B073C0D99073C0DF008430FFF073C0DD2000000000000000000000000063D
+      0C5308460FFF0F8B1EFF17AB29FF18AF2AFF136B1DFF063D0D7A000000000000
+      0000000000000000000000000000000000000000000000550003063D0B2E0739
+      0E24000000000000000000000000073D0C930C6116FF119121FF18AF2AFF18AF
+      2AFF0B5413FF093C0D3C00000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000083C
+      0DCC0F7B1CFF119321FF18AF2AFF16A127FF063E0DEC00550003000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000073C0DD50F801DFF0F8B1EFF149C24FF0C5F
+      16FF073D0C8F0000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000073D
+      0C9308450FFF0E731AFF0C5413FF073C0DEA0B400B1800000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000D360D13073C0DB4073C0DFD073C0DD8063D
+      0C2A000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000049000700000000000000000000000000000000
+    }
+    OnClick = bbRegClick
+    TabOrder = 9
+  end
+  object bbCancel: TBitBtn
+    Left = 120
+    Height = 30
+    Top = 296
+    Width = 80
+    Caption = 'Cancel'
+    Color = 16249563
+    Kind = bkCancel
+    ModalResult = 2
+    TabOrder = 10
+  end
+  object edTitle: TEdit
+    Left = 127
+    Height = 27
+    Top = 16
+    Width = 289
+    TabOrder = 0
+  end
+  object bbTest: TBitBtn
+    Left = 296
+    Height = 30
+    Top = 296
+    Width = 136
+    Caption = 'Test connection'
+    Color = 16249563
+    Kind = bkAll
+    OnClick = bbTestClick
+    TabOrder = 8
+  end
+  object cxSavePassword: TCheckBox
+    Left = 279
+    Height = 22
+    Top = 160
+    Width = 121
+    Caption = 'Save Password'
+    TabOrder = 5
+  end
+  object edRole: TEdit
+    Left = 127
+    Height = 27
+    Top = 248
+    Width = 144
+    TabOrder = 7
+  end
+  object cbCharset: TComboBox
+    Left = 129
+    Height = 29
+    Top = 200
+    Width = 140
+    ItemHeight = 0
+    ItemIndex = 0
+    Items.Strings = (
+      'NONE'
+      'TRIM'
+      'ASCII'
+      'BIG_5'
+      'CP943C'
+      'CYRL'
+      'DOS437'
+      'DOS737'
+      'DOS775'
+      'DOS850'
+      'DOS852'
+      'DOS857'
+      'DOS858'
+      'DOS860'
+      'DOS861'
+      'DOS862'
+      'DOS863'
+      'DOS864'
+      'DOS865'
+      'DOS866'
+      'DOS869'
+      'EUCJ_0208'
+      'GBK'
+      'GB_2312'
+      'ISO8859_1'
+      'ISO8859_13'
+      'ISO8859_2'
+      'ISO8859_3'
+      'ISO8859_4'
+      'ISO8859_5'
+      'ISO8859_6'
+      'ISO8859_7'
+      'ISO8859_8'
+      'ISO8859_9'
+      'KOI8R'
+      'KOI8U'
+      'KSC_5601'
+      'NEXT'
+      'OCTETS'
+      'SJIS_0208'
+      'TIS620'
+      'UNICODE_FSS'
+      'UTF8'
+      'WIN1250'
+      'WIN1251'
+      'WIN1252'
+      'WIN1253'
+      'WIN1254'
+      'WIN1255'
+      'WIN1256'
+      'WIN1257'
+      'WIN1258'
+    )
+    TabOrder = 6
+    Text = 'NONE'
+  end
+  object IBConnection1: TIBConnection
+    Connected = False
+    LoginPrompt = False
+    KeepConnection = False
+    left = 347
+    top = 159
+  end
+  object OpenDialog1: TOpenDialog
+    DefaultExt = '.fdb'
+    Filter = 'Firebird Database|*.fdb|All Files|*.*'
+    left = 456
+    top = 96
+  end
+end

+ 109 - 0
reg.lrs

@@ -0,0 +1,109 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmReg','FORMDATA',[
+  'TPF0'#6'TfmReg'#5'fmReg'#4'Left'#3#151#1#6'Height'#3'\'#1#3'Top'#3#201#0#5'W'
+  +'idth'#3'P'#2#13'ActiveControl'#7#7'edTitle'#7'Caption'#6#26'Register Firebi'
+  +'rd Database'#12'ClientHeight'#3'\'#1#11'ClientWidth'#3'P'#2#8'Position'#7#14
+  +'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#6'TLabel'#6'Label1'#4'Left'#2
+  +#13#6'Height'#2#18#3'Top'#2'F'#5'Width'#2'j'#7'Caption'#6#15'server:database'
+  +#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#13#6'Height'#2#18#3'Top'
+  +#2'u'#5'Width'#2'H'#7'Caption'#6#9'User name'#11'ParentColor'#8#0#0#6'TLabel'
+  +#6'Label3'#4'Left'#2#13#6'Height'#2#18#3'Top'#3#165#0#5'Width'#2'>'#7'Captio'
+  +'n'#6#8'Password'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#2#13#6'H'
+  +'eight'#2#18#3'Top'#2#19#5'Width'#2#30#7'Caption'#6#5'Title'#11'ParentColor'
+  +#8#0#0#6'TLabel'#6'Label5'#4'Left'#2#13#6'Height'#2#18#3'Top'#3#211#0#5'Widt'
+  +'h'#2'3'#7'Caption'#6#7'Charset'#11'ParentColor'#8#0#0#6'TLabel'#6'Label6'#4
+  +'Left'#2#13#6'Height'#2#18#3'Top'#3#248#0#5'Width'#2#29#7'Caption'#6#4'Role'
+  +#11'ParentColor'#8#0#0#5'TEdit'#14'edDatabaseName'#4'Left'#2'~'#6'Height'#2
+  +#27#3'Top'#2'@'#5'Width'#3'!'#1#8'TabOrder'#2#1#0#0#7'TButton'#8'btBrowse'#4
+  +'Left'#3#168#1#6'Height'#2#25#3'Top'#2'B'#5'Width'#2#27#7'Caption'#6#3'...'#7
+  +'OnClick'#7#13'btBrowseClick'#8'TabOrder'#2#2#0#0#5'TEdit'#10'edUserName'#4
+  +'Left'#2'~'#6'Height'#2#27#3'Top'#2'n'#5'Width'#3#145#0#8'TabOrder'#2#3#0#0#5
+  +'TEdit'#10'edPassword'#4'Left'#2'~'#6'Height'#2#27#3'Top'#3#156#0#5'Width'#3
+  +#145#0#8'EchoMode'#7#10'emPassword'#12'PasswordChar'#6#1'-'#8'TabOrder'#2#4#0
+  +#0#7'TBitBtn'#5'bbReg'#4'Left'#2#13#6'Height'#2#30#3'Top'#3'('#1#5'Width'#2
+  +'['#7'Caption'#6#8'Register'#5'Color'#4#219#242#247#0#7'Default'#9#10'Glyph.'
+  +'Data'#10'z'#6#0#0'v'#6#0#0'BMv'#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#20#0#0#0#20
+  +#0#0#0#1#0' '#0#0#0#0#0'@'#6#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#0#0#0#0#0#0#0#9'>'#13':'#8'='#13#202#7'<'#13
+  +#249#8'<'#14#169#0'7'#18#14#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#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';'#14'l'#7
+  +'='#13#250#13'b'#23#255#13'f'#23#255#7'<'#13#255#6'<'#13#157#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#8'<'#14#132#9'D'#15#255#20#144'#'#255#24#175'*'#255#24#174'*'
+  +#255#8'H'#16#255#7'<'#13#251#9'<'#17#30#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#6'<'#13'x'#10'P'#18#255#22
+  +#159'&'#255'"'#178'3'#255#163#223#170#255'a'#200'n'#255#12']'#21#255#7'<'#13
+  +#255#7'<'#13#173#5'<'#11'/'#0'@'#0#8#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#6';'#14'['#9'M'#17#254#23#166'('#255'/'#183'?'#255
+  +#198#235#202#255#160#222#167#255'0'#183'A'#255#19#141'"'#255#14'j'#25#255#13
+  +'d'#23#255#10'Q'#19#255#7'>'#14#253#8'<'#13#203#6'<'#13'w'#0'7'#18#14#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#8'>'#12'>'#9'I'#17#250#22#161''''#255'#'#179'4'#255
+  +'\'#199'i'#255'$'#179'5'#255#24#175'*'#255#24#175'*'#255#24#175'*'#255'8'#186
+  +'G'#255'D'#190'S'#255'F'#191'U'#255'M'#187'Z'#255#27#128'('#255#9'D'#15#255#7
+  +'<'#13#235#6'<'#14'Y'#0#0#0#0#0#0#0#0#0'@'#0#8#7'='#13#220#20#148'#'#255#24
+  +#175'*'#255#25#175'+'#255#24#175'*'#255#24#175'*'#255#24#175'*'#255#24#173'*'
+  +#255#20#157'$'#255#21#160'%'#255#22#168'('#255#24#175'*'#255' '#178'2'#255'r'
+  +#206'}'#255#130#205#139#255#18'X'#25#255#7'<'#13#254#6'<'#14'Z'#0#0#0#0#6'<'
+  +#13'Q'#10'R'#19#255#23#171')'#255#24#175'*'#255#24#175'*'#255#24#175'*'#255
+  +#24#175'*'#255#24#175'*'#255#22#165''''#255#15#139#31#255#16#141#31#255#15
+  +#139#30#255#16#141#31#255#19#155'$'#255#23#171'('#255'='#188'L'#255#159#218
+  +#166#255#10'J'#17#255#7'<'#13#241#12'='#12#21#8'<'#11'D'#7'?'#14#255#16#139
+  +#31#255#19#155'#'#255#23#171')'#255#24#175'*'#255#24#175'*'#255#24#175'*'#255
+  +#20#159'%'#255#14'{'#27#255#7'>'#14#255#10'V'#18#255#14'|'#28#255#15#139#31
+  +#255#16#140#30#255#20#160'%'#255'V'#196'c'#255'c'#175'l'#255#7'<'#13#255#7'='
+  +#14'm'#0#0#0#1#7';'#13#176#8'@'#13#255#15#129#29#255#15#140#31#255#19#154'$'
+  +#255#23#169'('#255#24#175'*'#255#18#152'#'#255#13'i'#23#255#7'='#13#177#6'<'
+  +#13'x'#7'<'#13#222#8'E'#15#255#16#135#30#255#15#139#30#255#22#164'&'#255#142
+  +#215#151#255#8'E'#15#255#6'<'#13#162#0#0#0#0#0';'#20#13#8'<'#14#170#7'<'#13
+  +#255#12'^'#22#255#16#139#31#255#15#139#31#255#17#148'"'#255#16#143' '#255#10
+  +'R'#19#255#8';'#13'c'#0#0#0#0#0'@'#0#4#8'<'#12#165#8'C'#15#255#15#139#30#255
+  +#20#159'%'#255'h'#203't'#255#25'f"'#255#7'<'#13#180#0#0#0#0#0#0#0#0#0#0#0#0#6
+  +';'#12'R'#7'<'#13#213#7'<'#13#255#12'e'#23#255#16#140#31#255#16#142#31#255#7
+  +'='#13#255#6'='#12'*'#0#0#0#0#0#0#0#0#8'<'#12'@'#7'='#13#255#15#138#31#255#22
+  +#164'&'#255')'#181':'#255'0'#127'9'#255#8'='#12#164#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#1#9'='#13';'#7'<'#13#153#7'<'#13#240#8'C'#15#255#7'<'#13#210#0#0
+  ,#0#0#0#0#0#0#0#0#0#0#6'='#12'S'#8'F'#15#255#15#139#30#255#23#171')'#255#24
+  +#175'*'#255#19'k'#29#255#6'='#13'z'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0'U'#0#3#6'='#11'.'#7'9'#14'$'#0#0#0#0#0#0#0#0#0#0#0#0#7'='#12
+  +#147#12'a'#22#255#17#145'!'#255#24#175'*'#255#24#175'*'#255#11'T'#19#255#9'<'
+  +#13'<'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#8'<'#13#204#15'{'#28#255#17#147'!'#255#24
+  +#175'*'#255#22#161''''#255#6'>'#13#236#0'U'#0#3#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#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
+  +'<'#13#213#15#128#29#255#15#139#30#255#20#156'$'#255#12'_'#22#255#7'='#12#143
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#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'='#12#147#8'E'#15#255#14's'#26#255#12
+  +'T'#19#255#7'<'#13#234#11'@'#11#24#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#13'6'
+  +#13#19#7'<'#13#180#7'<'#13#253#7'<'#13#216#6'='#12'*'#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'I'#0#7#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+  +#7'OnClick'#7#10'bbRegClick'#8'TabOrder'#2#9#0#0#7'TBitBtn'#8'bbCancel'#4'Le'
+  +'ft'#2'x'#6'Height'#2#30#3'Top'#3'('#1#5'Width'#2'P'#7'Caption'#6#6'Cancel'#5
+  +'Color'#4#219#242#247#0#4'Kind'#7#8'bkCancel'#11'ModalResult'#2#2#8'TabOrder'
+  +#2#10#0#0#5'TEdit'#7'edTitle'#4'Left'#2#127#6'Height'#2#27#3'Top'#2#16#5'Wid'
+  +'th'#3'!'#1#8'TabOrder'#2#0#0#0#7'TBitBtn'#6'bbTest'#4'Left'#3'('#1#6'Height'
+  +#2#30#3'Top'#3'('#1#5'Width'#3#136#0#7'Caption'#6#15'Test connection'#5'Colo'
+  +'r'#4#219#242#247#0#4'Kind'#7#5'bkAll'#7'OnClick'#7#11'bbTestClick'#8'TabOrd'
+  +'er'#2#8#0#0#9'TCheckBox'#14'cxSavePassword'#4'Left'#3#23#1#6'Height'#2#22#3
+  +'Top'#3#160#0#5'Width'#2'y'#7'Caption'#6#13'Save Password'#8'TabOrder'#2#5#0
+  +#0#5'TEdit'#6'edRole'#4'Left'#2#127#6'Height'#2#27#3'Top'#3#248#0#5'Width'#3
+  +#144#0#8'TabOrder'#2#7#0#0#9'TComboBox'#9'cbCharset'#4'Left'#3#129#0#6'Heigh'
+  +'t'#2#29#3'Top'#3#200#0#5'Width'#3#140#0#10'ItemHeight'#2#0#9'ItemIndex'#2#0
+  +#13'Items.Strings'#1#6#4'NONE'#6#4'TRIM'#6#5'ASCII'#6#5'BIG_5'#6#6'CP943C'#6
+  +#4'CYRL'#6#6'DOS437'#6#6'DOS737'#6#6'DOS775'#6#6'DOS850'#6#6'DOS852'#6#6'DOS'
+  +'857'#6#6'DOS858'#6#6'DOS860'#6#6'DOS861'#6#6'DOS862'#6#6'DOS863'#6#6'DOS864'
+  +#6#6'DOS865'#6#6'DOS866'#6#6'DOS869'#6#9'EUCJ_0208'#6#3'GBK'#6#7'GB_2312'#6#9
+  +'ISO8859_1'#6#10'ISO8859_13'#6#9'ISO8859_2'#6#9'ISO8859_3'#6#9'ISO8859_4'#6#9
+  +'ISO8859_5'#6#9'ISO8859_6'#6#9'ISO8859_7'#6#9'ISO8859_8'#6#9'ISO8859_9'#6#5
+  +'KOI8R'#6#5'KOI8U'#6#8'KSC_5601'#6#4'NEXT'#6#6'OCTETS'#6#9'SJIS_0208'#6#6'TI'
+  +'S620'#6#11'UNICODE_FSS'#6#4'UTF8'#6#7'WIN1250'#6#7'WIN1251'#6#7'WIN1252'#6#7
+  +'WIN1253'#6#7'WIN1254'#6#7'WIN1255'#6#7'WIN1256'#6#7'WIN1257'#6#7'WIN1258'#0
+  +#8'TabOrder'#2#6#4'Text'#6#4'NONE'#0#0#13'TIBConnection'#13'IBConnection1'#9
+  +'Connected'#8#11'LoginPrompt'#8#14'KeepConnection'#8#4'left'#3'['#1#3'top'#3
+  +#159#0#0#0#11'TOpenDialog'#11'OpenDialog1'#10'DefaultExt'#6#4'.fdb'#6'Filter'
+  +#6'%Firebird Database|*.fdb|All Files|*.*'#4'left'#3#200#1#3'top'#2'`'#0#0#0
+]);

+ 300 - 0
reg.pas

@@ -0,0 +1,300 @@
+unit Reg;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, IBConnection, FileUtil, LResources, Forms, Controls,
+  Graphics, Dialogs, StdCtrls, Buttons;
+
+type
+
+  TRegisteredDatabase = packed record
+    Title: string[30];
+    DatabaseName: string[200];
+    UserName: string[100];
+    Password: string[100];
+    Charset: string[40];
+    Deleted: Boolean;
+    SavePassword: Boolean;
+    Role: string[100];
+    LastOpened: TDateTime;
+    Reserved: array [0 .. 40] of Byte;
+  end;
+
+  { TfmReg }
+
+  TfmReg = class(TForm)
+    bbCancel: TBitBtn;
+    bbTest: TBitBtn;
+    bbReg: TBitBtn;
+    btBrowse: TButton;
+    cbCharset: TComboBox;
+    cxSavePassword: TCheckBox;
+    edRole: TEdit;
+    edDatabaseName: TEdit;
+    edTitle: TEdit;
+    edPassword: TEdit;
+    edUserName: TEdit;
+    IBConnection1: TIBConnection;
+    Label1: TLabel;
+    Label2: TLabel;
+    Label3: TLabel;
+    Label4: TLabel;
+    Label5: TLabel;
+    Label6: TLabel;
+    OpenDialog1: TOpenDialog;
+    procedure bbRegClick(Sender: TObject);
+    procedure bbTestClick(Sender: TObject);
+    procedure btBrowseClick(Sender: TObject);
+  private
+    function EditRegisteration(Index: Integer; Title, DatabaseName, UserName, Password, Charset, Role: string;
+      SavePassword: Boolean): Boolean;
+    { private declarations }
+  public
+    NewReg: Boolean;
+    RecPos: Integer;
+    function RegisterDatabase(Title, DatabaseName, UserName, Password, Charset, Role: string;
+      SavePassword: Boolean): Boolean;
+    function TestConnection(DatabaseName, UserName, Password, Charset: string): Boolean;
+    function GetEmptyRec: Integer;
+    function SaveRegistrations: Boolean;
+    procedure Sort;
+    { public declarations }
+  end; 
+
+var
+  fmReg: TfmReg;
+
+implementation
+
+{ TfmReg }
+
+uses main;
+
+procedure TfmReg.bbRegClick(Sender: TObject);
+begin
+  if Trim(edTitle.Text) = '' then
+    ShowMessage('You should fill all fields')
+  else
+  if TestConnection(edDatabaseName.Text, edUserName.Text, edPassword.Text, cbCharset.Text) then
+  if NewReg then  // New regisration
+  begin
+    if RegisterDatabase(edTitle.Text, edDatabaseName.Text, edUserName.Text, edPassword.Text, cbCharset.Text,
+      edRole.Text, cxSavePassword.Checked) then
+       ModalResult:= mrOK
+  end // if NewReg, edit registration
+  else
+    if EditRegisteration(RecPos, edTitle.Text, edDatabaseName.Text, edUserName.Text, edPassword.Text,
+      cbCharset.Text, edRole.Text, cxSavePassword.Checked) then
+      MOdalResult:= mrOk;
+end;
+
+procedure TfmReg.bbTestClick(Sender: TObject);
+begin
+  if TestConnection(edDatabaseName.Text, edUserName.Text, edPassword.Text, cbCharset.Text) then
+    ShowMessage('Connected successfully');
+end;
+
+procedure TfmReg.btBrowseClick(Sender: TObject);
+begin
+  if OpenDialog1.Execute then
+    edDatabaseName.Text:= OpenDialog1.FileName;
+end;
+
+function TfmReg.RegisterDatabase(Title, DatabaseName, UserName, Password, Charset, Role: string; SavePassword: Boolean): Boolean;
+var
+  Rec: TRegisteredDatabase;
+  F: file of TRegisteredDatabase;
+  EmptyIndex: Integer;
+  FileName: string;
+begin
+  try
+    FileName:= ChangeFileExt(ParamStr(0), '.reg');
+    AssignFile(F, FileName);
+    if FileExists(FileName) then
+    begin
+      EmptyIndex:= GetEmptyRec;
+      FileMode:= 2;
+
+      Reset(F);
+      if EmptyIndex <> -1 then
+        Seek(F, EmptyIndex)
+      else
+        Seek(F, System.FileSize(F));
+    end
+    else
+      Rewrite(F);
+
+    Rec.Title:= Title;
+    Rec.DatabaseName:= DatabaseName;
+    Rec.UserName:= UserName;
+    if SavePassword then
+      Rec.Password:= Password
+    else
+      Rec.Password:= '';
+    Rec.Charset:= Charset;
+    Rec.Role:= Role;
+    Rec.SavePassword:= SavePassword;
+    Rec.Deleted:= False;
+    Rec.LastOpened:= Now;
+
+    Write(F, Rec);
+    CloseFile(F);
+    Result:= True;
+
+  except
+  on e: exception do
+  begin
+    Result:= False;
+    ShowMessage('Error: ' + e.Message);
+  end;
+  end;
+end;
+
+function TfmReg.EditRegisteration(Index: Integer; Title, DatabaseName, UserName, Password, Charset, Role: string;
+   SavePassword: Boolean): Boolean;
+var
+  Rec: TRegisteredDatabase;
+  F: file of TRegisteredDatabase;
+  FileName: string;
+begin
+  try
+    FileName:= ChangeFileExt(ParamStr(0), '.reg');
+    AssignFile(F, FileName);
+    FileMode:= 2;
+    Reset(F);
+    Seek(F, Index);
+
+    Rec.Title:= Title;
+    Rec.DatabaseName:= DatabaseName;
+    Rec.UserName:= UserName;
+    if SavePassword then
+      Rec.Password:= Password
+    else
+      Rec.Password:= '';
+    Rec.Charset:= Charset;
+    Rec.Role:= Role;
+    Rec.SavePassword:= SavePassword;
+    Rec.Deleted:= False;
+
+    Write(F, Rec);
+    CloseFile(F);
+    Result:= True;
+
+  except
+  on e: exception do
+  begin
+    Result:= False;
+    ShowMessage('Error: ' + e.Message);
+  end;
+  end;
+end;
+
+function TfmReg.TestConnection(DatabaseName, UserName, Password, Charset: string): Boolean;
+begin
+  try
+    IBConnection1.Close;
+    IBConnection1.DatabaseName:= DatabaseName;
+    IBConnection1.UserName:= UserName;
+    IBConnection1.Password:= Password;
+    IBConnection1.CharSet:= Charset;
+    IBConnection1.Open;
+    IBConnection1.Close;
+    Result:= True;
+
+  except
+  on e: exception do
+  begin
+    Result:= False;
+    ShowMessage('Unable to connect: ' + e.Message);
+  end;
+  end;
+end;
+
+function TfmReg.GetEmptyRec: Integer;
+var
+  FileName: string;
+  Rec: TRegisteredDatabase;
+  F: file of TRegisteredDatabase;
+begin
+  Result:= -1;
+  FileName:= ChangeFileExt(ParamStr(0), '.reg');
+  AssignFile(F, FileName);
+  if FileExists(FileName) then
+  begin
+    Reset(F);
+    while not Eof(F) do
+    begin
+      Read(F, Rec);
+      if Rec.Deleted then
+      begin
+        Result:= FilePos(F) - 1;
+        Break;
+      end;
+    end;
+    Closefile(F);
+  end;
+end;
+
+function TfmReg.SaveRegistrations: Boolean;
+var
+  F: file of TRegisteredDatabase;
+  FileName: string;
+  i: Integer;
+begin
+  try
+    Sort;
+
+    FileName:= ChangeFileExt(ParamStr(0), '.reg');
+    AssignFile(F, FileName);
+    FileMode:= 2;
+    Rewrite(F);
+
+    for i:= 0 to High(fmMain.RegisteredDatabases) do
+      Write(F, fmMain.RegisteredDatabases[i].OrigRegRec);
+    CloseFile(F);
+    Result:= True;
+
+  except
+  on e: exception do
+  begin
+    Result:= False;
+  end;
+  end;
+
+end;
+
+procedure TfmReg.Sort;
+var
+  TempRec: TRegisteredDatabase;
+  Done: Boolean;
+  i: Integer;
+  TempIndex: Integer;
+begin
+  repeat
+    Done:= True;
+    for i:= 0 to High(fmMain.RegisteredDatabases) - 1 do
+    with fmMain do
+      if RegisteredDatabases[i].RegRec.LastOpened < RegisteredDatabases[i + 1].RegRec.LastOpened then
+      begin
+        Done:= False;
+        TempRec:= RegisteredDatabases[i].OrigRegRec;
+        RegisteredDatabases[i].OrigRegRec:= RegisteredDatabases[i + 1].OrigRegRec;
+        RegisteredDatabases[i].RegRec:= RegisteredDatabases[i + 1].RegRec;
+        RegisteredDatabases[i + 1].OrigRegRec:= TempRec;
+        RegisteredDatabases[i + 1].RegRec:= TempRec;
+
+        TempIndex:= RegisteredDatabases[i].Index;
+        RegisteredDatabases[i].Index:= RegisteredDatabases[i + 1].Index;
+        RegisteredDatabases[i + 1].Index:= TempIndex;
+      end;
+  until Done;
+end;
+
+initialization
+  {$I reg.lrs}
+
+end.
+

+ 549 - 0
scriptdb.pas

@@ -0,0 +1,549 @@
+unit Scriptdb;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils; 
+
+function ScriptAllRoles(dbIndex: Integer; var List: TStringList): Boolean;
+function ScriptAllFunctions(dbIndex: Integer; var List: TStringList): Boolean;
+function ScriptAllDomains(dbIndex: Integer; var List: TStringList): Boolean;
+function ScriptAllGenerators(dbIndex: Integer; var List: TStringList): Boolean;
+procedure ScriptTableAsCreate(dbIndex: Integer; ATableName: string; ScriptList: TStringList);
+function ScriptAllTables(dbIndex: Integer; var List: TStringList): Boolean;
+function ScriptAllProcedureTemplates(dbIndex: Integer; var List: TStringList): Boolean;
+function ScriptAllViews(dbIndex: Integer; var List: TStringList): Boolean;
+function ScriptAllTriggers(dbIndex: Integer; var List: TStringList): Boolean;
+function ScriptAllSecIndices(dbIndex: Integer; var List: TStringList): Boolean;
+function ScriptAllConstraints(dbIndex: Integer; var List: TStringList): Boolean;
+function ScriptObjectPermission(dbIndex: Integer; ObjName, UserName: string; var ObjType: Integer;
+   List: TStrings; NewUser: string = ''): Boolean;
+function ScriptAllPermissions(dbIndex: Integer; var List: TStringList): Boolean;
+
+function ScriptUserAllPermissions(dbIndex: Integer; UserName: string; var List: TStringList;
+   NewUser: string = ''): Boolean;
+
+implementation
+
+uses SysTables, Main;
+
+(********************  Script Roles  ***********************)
+
+function ScriptAllRoles(dbIndex: Integer; var List: TStringList): Boolean;
+var
+  Count: Integer;
+  i: Integer;
+begin
+  List.CommaText:= dmSysTables.GetDBObjectNames(dbIndex, 9, Count);
+  for i:= 0 to List.Count - 1 do
+    List[i]:= 'Create Role ' + List[i] + ';';
+  Result:= List.Count > 0;
+end;
+
+(****************  Script Functions (UDFs)  *******************)
+
+procedure RemoveParamClosing(var AParams: string);
+var
+  i: Integer;
+  R: Integer;
+begin
+  R:= Pos('returns', LowerCase(AParams));
+  if R > 0 then
+    for i:= R downto 0 do
+      if AParams[i] = ')' then
+      begin
+        Delete(AParams, i, 1);
+        Break;
+      end;
+end;
+
+function ScriptAllFunctions(dbIndex: Integer; var List: TStringList): Boolean;
+var
+  Count: Integer;
+  i: Integer;
+  FunctionsList: TStringList;
+  ModuleName, EntryPoint, Params: string;
+begin
+  FunctionsList:= TStringList.Create;
+  FunctionsList.CommaText:= dmSysTables.GetDBObjectNames(dbIndex, 6, Count);
+  List.Clear;
+  for i:= 0 to FunctionsList.Count - 1 do
+  begin
+    List.Add('Declare External Function ' + FunctionsList[i]);
+    if fmMain.GetUDFInfo(dbIndex, FunctionsList[i], ModuleName, EntryPoint, Params) then
+    begin
+      RemoveParamClosing(Params);
+      List.Add(Params);
+      List.Add('ENTRY_POINT ''' + EntryPoint + '''');
+      List.Add('MODULE_NAME ''' + ModuleName + ''';');
+      List.Add('');
+    end;
+  end;
+  Result:= FunctionsList.Count > 0;
+  FunctionsList.Free;
+end;
+
+
+(********************  Script Generators   ***********************)
+
+function ScriptAllGenerators(dbIndex: Integer; var List: TStringList): Boolean;
+var
+  Count: Integer;
+  i: Integer;
+begin
+  List.CommaText:= dmSysTables.GetDBObjectNames(dbIndex, 2, Count);
+  for i:= 0 to List.Count - 1 do
+    List[i]:= 'Create Generator ' + List[i] + ' ;';
+  Result:= List.Count > 0;
+end;
+
+
+(********************  Script Domains  ***********************)
+
+function ScriptAllDomains(dbIndex: Integer; var List: TStringList): Boolean;
+var
+  Count: Integer;
+  i: Integer;
+  DomainType: string;
+  DomainSize: Integer;
+  DefaultValue: string;
+begin
+  List.CommaText:= dmSysTables.GetDBObjectNames(dbIndex, 8, Count);
+  for i:= 0 to List.Count - 1 do
+  begin
+    dmSysTables.GetDomainInfo(dbIndex, List[i], DomainType, DomainSize, DefaultValue);
+
+    List[i]:= 'Create Domain ' + List[i] + ' as ' + DomainType;
+    if Pos('CHAR', DomainType) > 0 then
+      List[i]:= List[i] + '(' + IntToStr(DomainSize) + ')'
+    else
+      List[i]:= List[i] ;
+    List[i]:= List[i] + ' ' + DefaultValue + ';';
+
+  end;
+  Result:= List.Count > 0;
+end;
+
+
+(********************  Script Tables   ***********************)
+
+procedure ScriptTableAsCreate(dbIndex: Integer; ATableName: string; ScriptList: TStringList);
+var
+  i: Integer;
+  PKeyName: string;
+  PKFieldsList: TStringList;
+  FieldLine: string;
+  Skipped: Boolean;
+  ConstraintName: string;
+  CalculatedList: TStringList;
+begin
+  fmMain.GetFields(dbIndex, ATableName, nil);
+  ScriptList.Clear;
+  ScriptList.Add('create table ' + ATableName + ' (');
+  CalculatedList:= TStringList.Create;
+
+  // Fields
+  with fmMain.SQLQuery1 do
+  while not EOF do
+  begin
+    Skipped:= False;
+    if (FieldByName('Computed_Source').AsString = '') and
+     ((Pos('CHAR', Trim(FieldByName('Field_Type_Str').AsString)) = 0) or
+     (Trim(FieldByName('Field_Collation').AsString) = 'NONE') or
+     (FieldByName('Field_Collation').IsNull)) then
+    begin
+      // Field Name
+      FieldLine:= Trim(FieldByName('Field_Name').AsString) + ' ';
+
+      // Field Type
+      if FieldByName('Field_Type_Int').AsInteger in [7, 8, 16] then
+        FieldLine:= FieldLine + fmMain.GetNumericFieldType(FieldByName('Field_Type_Int').AsInteger,
+          FieldByName('Field_SubType').AsInteger, FieldByName('Field_Length').AsInteger,
+          FieldByName('Field_Scale').AsInteger)
+      else
+        FieldLine:= FieldLine + Trim(FieldByName('Field_Type_Str').AsString);
+
+      if Pos('char', LowerCase(FieldByName('Field_Type_Str').AsString)) > 0 then
+        FieldLine:= FieldLine + '(' + FieldByName('Field_Length').AsString + ') ';
+
+      // Default value
+      FieldLine:= FieldLine + ' ' + FieldByName('Field_Default_Value').AsString;
+
+      // Null/Not null
+      if FieldByName('field_not_null_constraint').AsString = '1' then
+         FieldLine:= FieldLine + ' not null ';
+
+    end
+    else
+      Skipped:= True;
+
+    // Computed Fields
+    if FieldByName('Computed_Source').AsString <> '' then
+      CalculatedList.Add('ALTER TABLE ' + ATableName + ' ADD ' +
+        Trim(FieldByName('Field_Name').AsString) + ' COMPUTED BY ' + FieldByName('Computed_Source').AsString + ';');
+
+    Next;
+
+    if not Skipped then
+    begin
+      if not EOF then
+        FieldLine:= FieldLine + ',';
+      ScriptList.Add(FieldLine);
+    end;
+  end;
+
+  if Pos(',', ScriptList[ScriptList.Count - 1]) > 0 then
+    ScriptList[ScriptList.Count - 1]:= Copy(ScriptList[ScriptList.Count - 1], 1,
+      Length(ScriptList[ScriptList.Count - 1]) - 1);
+
+  fmMain.SQLQuery1.Close;
+
+  // Primary Keys
+  PKFieldsList:= TStringList.Create;
+  PKeyName:= fmMain.GetPrimaryKeyIndexName(dbIndex, ATableName, ConstraintName);
+  if PKeyName <> '' then
+  begin
+    fmMain.GetConstraintFields(ATableName, PKeyName, PKFieldsList);
+    FieldLine:= 'primary key (';
+    for i:= 0 to PKFieldsList.Count - 1 do
+      FieldLine:= FieldLine + PKFieldsList[i] + ', ';
+    if PKFieldsList.Count > 0 then
+    begin
+      Delete(FieldLine, Length(FieldLine) - 1, 2);
+      FieldLine:= FieldLine + ')';
+      ScriptList.Add(', ' + FieldLine);
+    end;
+  end;
+
+  ScriptList.Add(');');
+  ScriptList.Add(CalculatedList.Text);
+  CalculatedList.Free;
+end;
+
+(***************  Script All Tables  ********************)
+
+function ScriptAllTables(dbIndex: Integer; var List: TStringList): Boolean;
+var
+  Count: Integer;
+  i: Integer;
+  TablesList: TStringList;
+  TableScript: TStringList;
+begin
+  TablesList:= TStringList.Create;
+  TableScript:= TStringList.Create;
+  TablesList.CommaText:= dmSysTables.GetDBObjectNames(dbIndex, 1, Count);
+  List.Clear;
+  for i:= 0 to TablesList.Count - 1 do
+  begin
+    ScriptTableAsCreate(dbIndex, TablesList[i], TableScript);
+    List.Add('');
+    List.AddStrings(TableScript);
+  end;
+  Result:= TablesList.Count > 0;
+  TablesList.Free;
+  TableScript.Free;
+end;
+
+(********************  Script Procedure Template  ***********************)
+
+function ScriptAllProcedureTemplates(dbIndex: Integer; var List: TStringList): Boolean;
+var
+  Count: Integer;
+  i: Integer;
+  ProceduresList: TStringList;
+  ProcedureScript: TStringList;
+  SPOwner: string;
+  SPBody: string;
+begin
+  ProceduresList:= TStringList.Create;
+  ProcedureScript:= TStringList.Create;
+  ProceduresList.CommaText:= dmSysTables.GetDBObjectNames(dbIndex, 5, Count);
+  List.Clear;
+  for i:= 0 to ProceduresList.Count - 1 do
+  begin
+    ProcedureScript.Text:= fmMain.GetStoredProcBody(dbIndex, ProceduresList[i], SPOwner);
+    ProcedureScript.Insert(0, 'SET TERM ^ ;');
+    ProcedureScript.Insert(1, 'CREATE Procedure ' + ProceduresList[i] + '(');
+    ProcedureScript.Add('^');
+    ProcedureScript.Add('SET TERM ; ^');
+    ProcedureScript.Add('');
+    List.AddStrings(ProcedureScript);
+  end;
+  Result:= ProceduresList.Count > 0;
+  ProceduresList.Free;
+  ProcedureScript.Free;
+end;
+
+(********************  Script Views   ***********************)
+
+function ScriptAllViews(dbIndex: Integer; var List: TStringList): Boolean;
+var
+  Count: Integer;
+  i: Integer;
+  ViewsList: TStringList;
+  ViewsBodyList: TStringList;
+  Columns, ViewBody: string;
+begin
+  ViewsList:= TStringList.Create;
+  ViewsBodyList:= TStringList.Create;
+  ViewsList.CommaText:= dmSysTables.GetDBObjectNames(dbIndex, 4, Count);
+  List.Clear;
+  for i:= 0 to ViewsList.Count - 1 do
+  begin
+    fmMain.GetViewInfo(dbIndex, ViewsList[i], Columns, ViewBody);
+    ViewsBodyList.Text:= Trim(ViewBody);
+    List.Add('CREATE VIEW "' + ViewsList[i] + '" (' + Columns + ')');
+    List.Add('AS');
+    List.AddStrings(ViewsBodyList);
+    List.Add(' ;');
+  end;
+  Result:= ViewsList.Count > 0;
+  ViewsList.Free;
+  ViewsBodyList.Free;
+end;
+
+
+(********************  Script Triggers   ***********************)
+
+function ScriptAllTriggers(dbIndex: Integer; var List: TStringList): Boolean;
+var
+  Count: Integer;
+  i: Integer;
+  TriggersList: TStringList;
+  TriggerScript: TStringList;
+begin
+  TriggersList:= TStringList.Create;
+  TriggerScript:= TStringList.Create;
+  TriggersList.CommaText:= dmSysTables.GetDBObjectNames(dbIndex, 3, Count);
+  List.Clear;
+  for i:= 0 to TriggersList.Count - 1 do
+  begin
+    TriggerScript.Clear;
+    dmSysTables.ScriptTrigger(dbIndex, TriggersList[i], TriggerScript, True);
+    List.AddStrings(TriggerScript);
+    List.Add('');
+  end;
+  Result:= TriggersList.Count > 0;
+  TriggerScript.Free;
+  TriggersList.Free;
+end;
+
+(********************  Script Secondary indices  ***********************)
+
+function ScriptAllSecIndices(dbIndex: Integer; var List: TStringList): Boolean;
+var
+  Count: Integer;
+  i: Integer;
+  TablesList: TStringList;
+  PKName: string;
+  FieldsList: TStringList;
+  Line: string;
+  ConstraintName: string;
+begin
+  TablesList:= TStringList.Create;
+  FieldsList:= TStringList.Create;
+  TablesList.CommaText:= dmSysTables.GetDBObjectNames(dbIndex, 1, Count);
+  List.Clear;
+  for i:= 0 to TablesList.Count - 1 do
+  begin
+    PKName:= fmMain.GetPrimaryKeyIndexName(dbIndex, TablesList[i], ConstraintName);
+
+    if fmMain.GetIndices(TablesList[i], dmSysTables.sqQuery) then
+    with dmSysTables.sqQuery do
+    while not EOF do
+    begin
+      if PKName <> Trim(FieldByName('RDB$Index_name').AsString) then
+      begin
+        Line:= 'create ';
+        if FieldByName('RDB$Unique_Flag').AsString = '1' then
+          Line:= Line + 'Unique ';
+        if FieldByName('RDB$Index_Type').AsString = '1' then
+          Line:= Line + 'Descending ';
+
+        Line:= Line + 'index ' + Trim(FieldByName('RDB$Index_name').AsString) + ' on ' + TablesList[i];
+
+        fmMain.GetIndexFields(TablesList[i], Trim(FieldByName('RDB$Index_Name').AsString), fmMain.SQLQuery1, FieldsList);
+        Line:= Line + ' (' + FieldsList.CommaText + ') ;';
+        List.Add(Line);
+
+      end;
+      Next;
+    end;
+  end;
+  dmSysTables.sqQuery.Close;
+  Result:= List.Count > 0;
+  TablesList.Free;
+  FieldsList.Free;
+end;
+
+
+(********************  Script Constraints   ***********************)
+
+function ScriptAllConstraints(dbIndex: Integer; var List: TStringList): Boolean;
+var
+  Count: Integer;
+  i: Integer;
+  TablesList: TStringList;
+  Line: string;
+begin
+  TablesList:= TStringList.Create;
+  TablesList.CommaText:= dmSysTables.GetDBObjectNames(dbIndex, 1, Count);
+  List.Clear;
+  for i:= 0 to TablesList.Count - 1 do
+  with dmSysTables do
+  begin
+    GetTableConstraints(TablesList[i], sqQuery);
+    while not sqQuery.EOF do
+    begin
+       Line:= 'alter table ' + TablesList[i] + ' add constraint ' + sqQuery.Fields[0].AsString +
+         ' foreign key (' + sqQuery.Fields[3].AsString + ') references ' +  sqQuery.Fields[4].AsString  +
+         ' (' + dmSysTables.GetConstraintForiegnKeyFields(sqQuery.Fields[5].AsString, fmMain.SQLQuery1) + ') ';
+       if Trim(sqQuery.Fields[6].AsString) <> 'RESTRICT' then
+         Line:= Line + ' on update ' + Trim(sqQuery.Fields[6].AsString);
+       if Trim(sqQuery.Fields[7].AsString) <> 'RESTRICT' then
+         Line:= Line + ' on delete ' + Trim(sqQuery.Fields[7].AsString);
+       List.Add(Line + ';');
+       sqQuery.Next;
+    end;
+    sqQuery.Close;
+  end;
+  Result:= List.Count > 0;
+  TablesList.Free;
+end;
+
+
+function ScriptObjectPermission(dbIndex: Integer; ObjName, UserName: string; var ObjType: Integer;
+   List: TStrings; NewUser: string = ''): Boolean;
+var
+  Permissions: string;
+  Line: string;
+  PermissionList: TStringList;
+  OrigObjName: string;
+begin
+  try
+    if NewUser = '' then
+      NewUser:= UserName;
+    OrigObjName:= ObjName;
+    ObjName:= Copy(ObjName, 4, Length(ObjName) - 3);
+    Permissions:= dmSysTables.GetObjectUserPermission(dbIndex, ObjName, UserName, ObjType);
+    PermissionList:= TstringList.Create;
+    if Permissions <> '' then
+    begin
+      if Pos('<T>', OrigObjName) = 1 then // Table/View
+      begin
+        PermissionList.Clear;
+        if Pos('S', Permissions) > 0 then
+          PermissionList.Add('Select');
+        if Pos('U', Permissions) > 0 then
+          PermissionList.Add('Update');
+        if Pos('I', Permissions) > 0 then
+          PermissionList.Add('Insert');
+        if Pos('R', Permissions) > 0 then
+          PermissionList.Add('References');
+        Line:= 'Grant ' + PermissionList.CommaText + ' on ' + ObjName + ' to ' + NewUser;
+        if Pos('G', Permissions) > 0 then
+          Line:= Line + ' with Grant option';
+        List.Add(Line + ' ;');
+      end
+      else
+      if Pos('<P>', OrigObjName) = 1 then // Procedure
+        List.Add('Grant Execute on procedure ' + ObjName + ' to ' + NewUser + ' ;')
+      else
+      if Pos('<R>', OrigObjName) = 1 then // Role
+        List.Add('Grant ' + ObjName + ' to ' + NewUser + ' ;');
+
+    end;
+    PermissionList.Free;
+    Result:= True;
+
+  except
+  on e: exception do
+    Result:= False;
+  end;
+
+end;
+
+(********************  Script All Usesr and Rules permissions ***********************)
+
+function ScriptAllPermissions(dbIndex: Integer; var List: TStringList): Boolean;
+var
+  Count: Integer;
+  i, j: Integer;
+  UsersList: TStringList;
+  ObjectsList: TStringList;
+  PermissionList: TStringList;
+  ObjName: string;
+  Permissions: string;
+  UserName: string;
+  Line: string;
+  ObjType: Integer;
+begin
+  UsersList:= TStringList.Create;
+  ObjectsList:= TStringList.Create;
+  PermissionList:= TStringList.Create;
+
+  UsersList.CommaText:= dmSysTables.GetDBUsers(dbIndex);
+  List.Clear;
+  for i:= 0 to UsersList.Count - 1 do
+    if Pos('<R>', UsersList[i]) = 1 then
+      List.Add('/* Role ' + Copy(UsersList[i], 4, Length(UsersList[i]) - 3) + ' */')
+    else
+      List.Add('/* User ' + UsersList[i] + ' */');
+
+  for i:= 0 to UsersList.Count - 1 do
+  begin
+    ObjectsList.CommaText:= dmSysTables.GetDBObjectsForPermissions(dbIndex);
+    if Pos('<R>', UsersList[i]) = 1 then
+      UserName:= Copy(UsersList[i], 4, Length(UsersList[i]) - 3)
+    else
+      UserName:= UsersList[i];
+
+    List.Add('');
+    List.Add('/* Permissions for: ' + UserName + ' */');
+
+    for j:= 0 to ObjectsList.Count - 1 do
+    begin
+      Result:= ScriptObjectPermission(dbIndex,  ObjectsList[j], UserName, ObjType, List);
+    end;
+  end;
+  Result:= UsersList.Count > 0;
+  UsersList.Free;
+  ObjectsList.Free;
+  PermissionList.Free;
+end;
+
+(********************  Script One User or Rule permissions ***********************)
+
+function ScriptUserAllPermissions(dbIndex: Integer; UserName: string; var List: TStringList;
+   NewUser: string = ''): Boolean;
+var
+  j: Integer;
+  UsersList: TStringList;
+  ObjectsList: TStringList;
+  ObjType: Integer;
+begin
+  if NewUser = '' then
+    NewUser:= UserName;
+  UsersList:= TStringList.Create;
+  ObjectsList:= TStringList.Create;
+
+  UsersList.CommaText:= dmSysTables.GetDBUsers(dbIndex);
+  List.Clear;
+
+  ObjectsList.CommaText:= dmSysTables.GetDBObjectsForPermissions(dbIndex);
+
+  List.Add('');
+  List.Add('/* Permissions for: ' + UserName + ' */');
+
+  for j:= 0 to ObjectsList.Count - 1 do
+    Result:= ScriptObjectPermission(dbIndex,  ObjectsList[j], UserName, ObjType, List, NewUser);
+
+  Result:= UsersList.Count > 0;
+  UsersList.Free;
+  ObjectsList.Free;
+end;
+
+end.
+

+ 167 - 0
sqlhistory.lfm

@@ -0,0 +1,167 @@
+object fmSQLHistory: TfmSQLHistory
+  Left = 668
+  Height = 453
+  Top = 354
+  Width = 873
+  Caption = 'SQL History'
+  ClientHeight = 453
+  ClientWidth = 873
+  OnClose = FormClose
+  OnCreate = FormCreate
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object DBGrid1: TDBGrid
+    Left = 8
+    Height = 376
+    Top = 8
+    Width = 852
+    Anchors = [akTop, akLeft, akRight, akBottom]
+    BorderStyle = bsNone
+    Color = clWindow
+    Columns = <>
+    DataSource = Datasource1
+    Options = [dgTitles, dgIndicator, dgColumnResize, dgColumnMove, dgColLines, dgRowLines, dgTabs, dgRowSelect, dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit]
+    ReadOnly = True
+    TabOrder = 0
+  end
+  object BitBtn1: TBitBtn
+    Left = 8
+    Height = 30
+    Top = 408
+    Width = 152
+    Anchors = [akLeft, akBottom]
+    Caption = 'Insert in SQL Query'
+    OnClick = BitBtn1Click
+    TabOrder = 1
+  end
+  object bbDelete: TBitBtn
+    Left = 184
+    Height = 30
+    Top = 408
+    Width = 81
+    Anchors = [akLeft, akBottom]
+    Cancel = True
+    Caption = 'Delete'
+    Kind = bkCancel
+    OnClick = bbDeleteClick
+    TabOrder = 2
+  end
+  object GroupBox1: TGroupBox
+    Left = 275
+    Height = 56
+    Top = 392
+    Width = 585
+    Anchors = [akLeft, akRight, akBottom]
+    Caption = 'Export to text file'
+    ClientHeight = 37
+    ClientWidth = 581
+    TabOrder = 3
+    object cxAfterDate: TCheckBox
+      Left = 6
+      Height = 22
+      Top = 7
+      Width = 147
+      Caption = 'Only after the date'
+      OnClick = cxAfterDateClick
+      TabOrder = 0
+    end
+    object DateEdit1: TDateEdit
+      Left = 163
+      Height = 27
+      Top = 2
+      Width = 104
+      CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
+      OKCaption = 'OK'
+      CancelCaption = 'Cancel'
+      DateOrder = doNone
+      ButtonWidth = 23
+      CharCase = ecNormal
+      Glyph.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
+        FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+        FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D69E
+        72C4D3996EF4D19668FFCE9263FFCB8E5EFFC98A5BFFC78756FFC38452FFC384
+        52FFC38452FFC38452FFC38452FFC38452FFBB7742B0FFFFFF00FFFFFF00D7A1
+        75FFF8F2EDFFF7F0EAFFF6EDE6FFF4EAE2FFF3E7DEFFF1E4DBFFF0E2D8FFEAD6
+        C8FFF2E5DCFFFAF4F1FFF9F3F0FFFAF5F2FFC58A5DFDFFFFFF00FFFFFF00D9A4
+        7AFFF9F3EEFFEBD2BEFFFFFFFFFFEBD3BFFFFFFFFFFFEBD3C0FFFFFFFFFFEAC7
+        ADFFECD9CDFFF1E4DBFFF9F3F0FFF9F2EFFFC68C5FFFFFFFFF00FFFFFF00DDA8
+        7EFFF9F3EFFFEBD0BAFFEBD0BBFF75B57AFF75B57AFF75B57AFFEBD1BDFFEACD
+        B5FFFAF4F0FFEBD9CCFFF1E4DBFFFAF4F1FFC68A5CFFFFFFFF00FFFFFF00DFAA
+        82FFF9F3EFFFEACEB7FFFFFFFFFF75B57AFF94D49BFF74B579FFFFFFFFFFEACF
+        BAFFFBF6F2FFFAF3F0FFEBD8CBFFF2E6DDFFC88D5FFFFFFFFF00FFFFFF00E1AE
+        87FFFAF4F0FFEACBB2FFEACCB3FF75B57AFF74B579FF73B478FFEACEB7FF70B3
+        75FF6FB274FF6EB172FFE8C8AEFFEAD7C9FFC48654FFFFFFFF00FFFFFF00E3B1
+        8CFFFAF6F1FFEAC9AEFFFFFFFFFFEAC9B0FFFFFFFFFFE9CBB3FFFFFFFFFF6FB1
+        73FF8ED295FF6BAF6FFFFFFFFFFFF1E5DBFFC68655FFFFFFFF00FFFFFF00E5B4
+        8FFFFAF6F2FFE9C6AAFFE9C6ACFFEAC7ACFFE9C7ADFFE9C9AEFFE9C9B0FF6CB0
+        71FF6AAF6EFF68AD6DFFE8CCB5FFF2E7DEFFC88A59FFFFFFFF00FFFFFF00E7B7
+        94FFFBF7F4FFE9C3A6FFFFFFFFFFE8C4A9FFFFFFFFFFE9C6AAFFFFFFFFFFE8C7
+        ACFFFFFFFFFFE8C8B0FFFFFFFFFFF7F1EBFFCB8F5FFFFFFFFF00FFFFFF00E9BA
+        98FFFBF7F4FF65A4FFFF64A3FFFF62A2FFFF61A1FFFF5F9FFFFF5C9DFFFF5A9A
+        FFFF5798FFFF5495FFFF5294FFFFFBF7F4FFCE9364FFFFFFFF00FFFFFF00EBBD
+        9BFFFBF7F4FF64A4FFFF79BDFFFF75BBFFFF71B9FFFF6DB8FFFF68B3FFFF61B0
+        FFFF5AABFFFF54A7FFFF3B7DFFFFFBF7F4FFD1976AFFFFFFFF00FFFFFF00ECBF
+        9EFFFBF7F4FF65A4FFFF64A3FFFF60A0FFFF5D9EFFFF5899FFFF5496FFFF4D90
+        FFFF478BFFFF4284FFFF3D7FFFFFFBF7F4FFD49B6FFFFFFFFF00FFFFFF00EEC1
+        A1EBFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7
+        F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFD7A074F8FFFFFF00FFFFFF00EFC2
+        A37EEFC1A2E3EDC09FFFEBBE9DFFEBBC9AFFE9BA96FFE7B793FFE6B590FFE4B2
+        8CFFE2AF88FFE0AC84FFDDA980FFDCA57DFFDAA37ACAFFFFFF00FFFFFF00FFFF
+        FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+        FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
+      }
+      NumGlyphs = 0
+      MaxLength = 0
+      TabOrder = 1
+      Visible = False
+    end
+    object Label1: TLabel
+      Left = 307
+      Height = 18
+      Top = 5
+      Width = 60
+      Caption = 'SQL Type'
+      ParentColor = False
+    end
+    object cbSQLType: TComboBox
+      Left = 379
+      Height = 31
+      Top = -2
+      Width = 100
+      ItemHeight = 0
+      ItemIndex = 0
+      Items.Strings = (
+        'All'
+        'DDL,DML'
+        'DDL'
+        'DML'
+        'Select'
+      )
+      Style = csDropDownList
+      TabOrder = 2
+      Text = 'All'
+    end
+    object bbExport: TBitBtn
+      Left = 499
+      Height = 30
+      Top = 0
+      Width = 75
+      Caption = 'Export'
+      OnClick = bbExportClick
+      TabOrder = 3
+    end
+  end
+  object Datasource1: TDatasource
+    left = 127
+    top = 12
+  end
+  object SaveDialog1: TSaveDialog
+    DefaultExt = '.sql'
+    Filter = 'SQL File|*.sql|All files|*.*'
+    Options = [ofOverwritePrompt, ofEnableSizing, ofViewDetail]
+    left = 785
+    top = 122
+  end
+end

+ 94 - 0
sqlhistory.lrs

@@ -0,0 +1,94 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmSQLHistory','FORMDATA',[
+  'TPF0'#13'TfmSQLHistory'#12'fmSQLHistory'#4'Left'#3#156#2#6'Height'#3#197#1#3
+  +'Top'#3'b'#1#5'Width'#3'i'#3#7'Caption'#6#11'SQL History'#12'ClientHeight'#3
+  +#197#1#11'ClientWidth'#3'i'#3#7'OnClose'#7#9'FormClose'#8'OnCreate'#7#10'For'
+  +'mCreate'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#7'TD'
+  +'BGrid'#7'DBGrid1'#4'Left'#2#8#6'Height'#3'x'#1#3'Top'#2#8#5'Width'#3'T'#3#7
+  +'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#11'BorderStyle'#7#6
+  +'bsNone'#5'Color'#7#8'clWindow'#7'Columns'#14#0#10'DataSource'#7#11'Datasour'
+  +'ce1'#7'Options'#11#8'dgTitles'#11'dgIndicator'#14'dgColumnResize'#12'dgColu'
+  +'mnMove'#10'dgColLines'#10'dgRowLines'#6'dgTabs'#11'dgRowSelect'#21'dgAlways'
+  +'ShowSelection'#15'dgConfirmDelete'#14'dgCancelOnExit'#0#8'ReadOnly'#9#8'Tab'
+  +'Order'#2#0#0#0#7'TBitBtn'#7'BitBtn1'#4'Left'#2#8#6'Height'#2#30#3'Top'#3#152
+  +#1#5'Width'#3#152#0#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#19'In'
+  +'sert in SQL Query'#7'OnClick'#7#12'BitBtn1Click'#8'TabOrder'#2#1#0#0#7'TBit'
+  +'Btn'#8'bbDelete'#4'Left'#3#184#0#6'Height'#2#30#3'Top'#3#152#1#5'Width'#2'Q'
+  +#7'Anchors'#11#6'akLeft'#8'akBottom'#0#6'Cancel'#9#7'Caption'#6#6'Delete'#4
+  +'Kind'#7#8'bkCancel'#7'OnClick'#7#13'bbDeleteClick'#8'TabOrder'#2#2#0#0#9'TG'
+  +'roupBox'#9'GroupBox1'#4'Left'#3#19#1#6'Height'#2'8'#3'Top'#3#136#1#5'Width'
+  +#3'I'#2#7'Anchors'#11#6'akLeft'#7'akRight'#8'akBottom'#0#7'Caption'#6#19'Exp'
+  +'ort to text file'#12'ClientHeight'#2'%'#11'ClientWidth'#3'E'#2#8'TabOrder'#2
+  +#3#0#9'TCheckBox'#11'cxAfterDate'#4'Left'#2#6#6'Height'#2#22#3'Top'#2#7#5'Wi'
+  +'dth'#3#147#0#7'Caption'#6#19'Only after the date'#7'OnClick'#7#16'cxAfterDa'
+  +'teClick'#8'TabOrder'#2#0#0#0#9'TDateEdit'#9'DateEdit1'#4'Left'#3#163#0#6'He'
+  +'ight'#2#27#3'Top'#2#2#5'Width'#2'h'#23'CalendarDisplaySettings'#11#14'dsSho'
+  +'wHeadings'#14'dsShowDayNames'#0#9'OKCaption'#6#2'OK'#13'CancelCaption'#6#6
+  +'Cancel'#9'DateOrder'#7#6'doNone'#11'ButtonWidth'#2#23#8'CharCase'#7#8'ecNor'
+  +'mal'#10'Glyph.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#214#158'r'#196#211#153'n'#244#209#150'h'#255#206#146'c'#255
+  +#203#142'^'#255#201#138'['#255#199#135'V'#255#195#132'R'#255#195#132'R'#255
+  +#195#132'R'#255#195#132'R'#255#195#132'R'#255#195#132'R'#255#187'wB'#176#255
+  +#255#255#0#255#255#255#0#215#161'u'#255#248#242#237#255#247#240#234#255#246
+  +#237#230#255#244#234#226#255#243#231#222#255#241#228#219#255#240#226#216#255
+  +#234#214#200#255#242#229#220#255#250#244#241#255#249#243#240#255#250#245#242
+  +#255#197#138']'#253#255#255#255#0#255#255#255#0#217#164'z'#255#249#243#238
+  +#255#235#210#190#255#255#255#255#255#235#211#191#255#255#255#255#255#235#211
+  +#192#255#255#255#255#255#234#199#173#255#236#217#205#255#241#228#219#255#249
+  +#243#240#255#249#242#239#255#198#140'_'#255#255#255#255#0#255#255#255#0#221
+  +#168'~'#255#249#243#239#255#235#208#186#255#235#208#187#255'u'#181'z'#255'u'
+  +#181'z'#255'u'#181'z'#255#235#209#189#255#234#205#181#255#250#244#240#255#235
+  +#217#204#255#241#228#219#255#250#244#241#255#198#138'\'#255#255#255#255#0#255
+  +#255#255#0#223#170#130#255#249#243#239#255#234#206#183#255#255#255#255#255'u'
+  +#181'z'#255#148#212#155#255't'#181'y'#255#255#255#255#255#234#207#186#255#251
+  +#246#242#255#250#243#240#255#235#216#203#255#242#230#221#255#200#141'_'#255
+  +#255#255#255#0#255#255#255#0#225#174#135#255#250#244#240#255#234#203#178#255
+  +#234#204#179#255'u'#181'z'#255't'#181'y'#255's'#180'x'#255#234#206#183#255'p'
+  +#179'u'#255'o'#178't'#255'n'#177'r'#255#232#200#174#255#234#215#201#255#196
+  +#134'T'#255#255#255#255#0#255#255#255#0#227#177#140#255#250#246#241#255#234
+  +#201#174#255#255#255#255#255#234#201#176#255#255#255#255#255#233#203#179#255
+  +#255#255#255#255'o'#177's'#255#142#210#149#255'k'#175'o'#255#255#255#255#255
+  +#241#229#219#255#198#134'U'#255#255#255#255#0#255#255#255#0#229#180#143#255
+  +#250#246#242#255#233#198#170#255#233#198#172#255#234#199#172#255#233#199#173
+  +#255#233#201#174#255#233#201#176#255'l'#176'q'#255'j'#175'n'#255'h'#173'm'
+  +#255#232#204#181#255#242#231#222#255#200#138'Y'#255#255#255#255#0#255#255#255
+  +#0#231#183#148#255#251#247#244#255#233#195#166#255#255#255#255#255#232#196
+  +#169#255#255#255#255#255#233#198#170#255#255#255#255#255#232#199#172#255#255
+  +#255#255#255#232#200#176#255#255#255#255#255#247#241#235#255#203#143'_'#255
+  +#255#255#255#0#255#255#255#0#233#186#152#255#251#247#244#255'e'#164#255#255
+  +'d'#163#255#255'b'#162#255#255'a'#161#255#255'_'#159#255#255'\'#157#255#255
+  +'Z'#154#255#255'W'#152#255#255'T'#149#255#255'R'#148#255#255#251#247#244#255
+  +#206#147'd'#255#255#255#255#0#255#255#255#0#235#189#155#255#251#247#244#255
+  +'d'#164#255#255'y'#189#255#255'u'#187#255#255'q'#185#255#255'm'#184#255#255
+  ,'h'#179#255#255'a'#176#255#255'Z'#171#255#255'T'#167#255#255';}'#255#255#251
+  +#247#244#255#209#151'j'#255#255#255#255#0#255#255#255#0#236#191#158#255#251
+  +#247#244#255'e'#164#255#255'd'#163#255#255'`'#160#255#255']'#158#255#255'X'
+  +#153#255#255'T'#150#255#255'M'#144#255#255'G'#139#255#255'B'#132#255#255'='
+  +#127#255#255#251#247#244#255#212#155'o'#255#255#255#255#0#255#255#255#0#238
+  +#193#161#235#251#247#244#255#251#247#244#255#251#247#244#255#251#247#244#255
+  +#251#247#244#255#251#247#244#255#251#247#244#255#251#247#244#255#251#247#244
+  +#255#251#247#244#255#251#247#244#255#251#247#244#255#215#160't'#248#255#255
+  +#255#0#255#255#255#0#239#194#163'~'#239#193#162#227#237#192#159#255#235#190
+  +#157#255#235#188#154#255#233#186#150#255#231#183#147#255#230#181#144#255#228
+  +#178#140#255#226#175#136#255#224#172#132#255#221#169#128#255#220#165'}'#255
+  +#218#163'z'#202#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+  +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+  +#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#9'MaxLength'#2#0#8'TabOrder'#2
+  +#1#7'Visible'#8#0#0#6'TLabel'#6'Label1'#4'Left'#3'3'#1#6'Height'#2#18#3'Top'
+  +#2#5#5'Width'#2'<'#7'Caption'#6#8'SQL Type'#11'ParentColor'#8#0#0#9'TComboBo'
+  +'x'#9'cbSQLType'#4'Left'#3'{'#1#6'Height'#2#31#3'Top'#2#254#5'Width'#2'd'#10
+  +'ItemHeight'#2#0#9'ItemIndex'#2#0#13'Items.Strings'#1#6#3'All'#6#7'DDL,DML'#6
+  +#3'DDL'#6#3'DML'#6#6'Select'#0#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#2
+  +#4'Text'#6#3'All'#0#0#7'TBitBtn'#8'bbExport'#4'Left'#3#243#1#6'Height'#2#30#3
+  +'Top'#2#0#5'Width'#2'K'#7'Caption'#6#6'Export'#7'OnClick'#7#13'bbExportClick'
+  +#8'TabOrder'#2#3#0#0#0#11'TDatasource'#11'Datasource1'#4'left'#2#127#3'top'#2
+  +#12#0#0#11'TSaveDialog'#11'SaveDialog1'#10'DefaultExt'#6#4'.sql'#6'Filter'#6
+  +#28'SQL File|*.sql|All files|*.*'#7'Options'#11#17'ofOverwritePrompt'#14'ofE'
+  +'nableSizing'#12'ofViewDetail'#0#4'left'#3#17#3#3'top'#2'z'#0#0#0
+]);

+ 137 - 0
sqlhistory.pas

@@ -0,0 +1,137 @@
+unit SQLHistory;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, db, FileUtil, LResources, Forms, Controls, Graphics,
+  Dialogs, DBGrids, Buttons, StdCtrls, EditBtn;
+
+type
+
+  { TfmSQLHistory }
+
+  TfmSQLHistory = class(TForm)
+    BitBtn1: TBitBtn;
+    bbDelete: TBitBtn;
+    bbExport: TBitBtn;
+    cbSQLType: TComboBox;
+    cxAfterDate: TCheckBox;
+    Datasource1: TDatasource;
+    DateEdit1: TDateEdit;
+    DBGrid1: TDBGrid;
+    GroupBox1: TGroupBox;
+    Label1: TLabel;
+    SaveDialog1: TSaveDialog;
+    procedure bbDeleteClick(Sender: TObject);
+    procedure bbExportClick(Sender: TObject);
+    procedure BitBtn1Click(Sender: TObject);
+    procedure Button1Click(Sender: TObject);
+    procedure cxAfterDateClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
+    procedure FormCreate(Sender: TObject);
+  private
+    fQueryForm: TForm;
+    { private declarations }
+  public
+    { public declarations }
+    procedure Init(DatabaseTitle: string; QueryForm: TForm);
+  end; 
+
+var
+  fmSQLHistory: TfmSQLHistory;
+
+implementation
+
+{ TfmSQLHistory }
+
+uses Main, QueryWindow;
+
+procedure TfmSQLHistory.FormClose(Sender: TObject; var CloseAction: TCloseAction);
+begin
+  Datasource1.DataSet:= nil;
+end;
+
+procedure TfmSQLHistory.FormCreate(Sender: TObject);
+begin
+  DateEdit1.Date:= Now - 7;
+end;
+
+procedure TfmSQLHistory.BitBtn1Click(Sender: TObject);
+var
+  SQLStatement: string;
+begin
+  SQLStatement:= (fmMain.mdsHistory.FieldByName('SQLStatement').AsString);
+  if Pos(';', SQLStatement) = 0 then
+    SQLStatement:= SQLStatement + ';';
+
+  (fQueryForm as TfmQueryWindow).meQuery.Lines.Text:= (fQueryForm as TfmQueryWindow).meQuery.Lines.Text + SQLStatement;
+end;
+
+procedure TfmSQLHistory.Button1Click(Sender: TObject);
+begin
+end;
+
+procedure TfmSQLHistory.cxAfterDateClick(Sender: TObject);
+begin
+  DateEdit1.Visible:= cxAfterDate.Checked;
+end;
+
+procedure TfmSQLHistory.bbDeleteClick(Sender: TObject);
+begin
+  if MessageDlg('Are you sure you want to delete current record of history', mtConfirmation, [mbYes, mbNo], 0) = mrYes
+    then
+      fmMain.mdsHistory.Delete;
+end;
+
+procedure TfmSQLHistory.bbExportClick(Sender: TObject);
+var
+  CurrType: string;
+  List: TStringList;
+  Line: string;
+begin
+  if SaveDialog1.Execute then
+  with fmMain.mdsHistory do
+  begin
+    DBGrid1.Visible:= False;
+    First;
+    List:= TStringList.Create;
+    while not Eof do
+    begin
+      if (not cxAfterDate.Checked) or (FieldByName('Time').AsDateTime > DateEdit1.Date) then
+      begin
+        CurrType:= FieldByName('SQLType').AsString;
+        if (cbSQLType.ItemIndex = 0) or
+          ((CurrType = 'DDL') and (cbSQLType.ItemIndex in [1, 2])) or
+          ((CurrType = 'DML') and (cbSQLType.ItemIndex in [1, 3])) or
+          ((CurrType = 'SELECT') and (cbSQLType.ItemIndex = 4)) then
+          begin
+            List.Add('-- ' + FieldByName('Time').AsString);
+            Line:= FieldByName('SQLStatement').AsString;
+            if Pos(';', Line) = 0 then
+              Line:= Line + ';';
+            List.Add(Line);
+          end;
+
+      end;
+      Next;
+    end;
+    List.SaveToFile(SaveDialog1.FileName);
+    List.Free;
+    DBGrid1.Visible:= True;
+  end;
+end;
+
+procedure TfmSQLHistory.Init(DatabaseTitle: string; QueryForm: TForm);
+begin
+  fQueryForm:= QueryForm;
+  Caption:= 'SQL History for: ' + DatabaseTitle;
+  Datasource1.DataSet:= fmMain.mdsHistory;
+  fmMain.mdsHistory.Last;
+end;
+
+initialization
+  {$I sqlhistory.lrs}
+
+end.

+ 14 - 0
systables.lfm

@@ -0,0 +1,14 @@
+object dmSysTables: TdmSysTables
+  OldCreateOrder = False
+  Height = 300
+  HorizontalOffset = 810
+  VerticalOffset = 383
+  Width = 400
+  object sqQuery: TSQLQuery
+    AutoCalcFields = False
+    ReadOnly = False
+    Params = <>
+    left = 216
+    top = 32
+  end
+end

+ 8 - 0
systables.lrs

@@ -0,0 +1,8 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TdmSysTables','FORMDATA',[
+  'TPF0'#12'TdmSysTables'#11'dmSysTables'#14'OldCreateOrder'#8#6'Height'#3','#1
+  +#16'HorizontalOffset'#3'*'#3#14'VerticalOffset'#3#127#1#5'Width'#3#144#1#0#9
+  +'TSQLQuery'#7'sqQuery'#14'AutoCalcFields'#8#8'ReadOnly'#8#6'Params'#14#0#4'l'
+  +'eft'#3#216#0#3'top'#2' '#0#0#0
+]);

+ 617 - 0
systables.pas

@@ -0,0 +1,617 @@
+unit SysTables;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, sqldb, IBConnection, FileUtil, LResources, Forms, Controls,
+  Dialogs, db;
+
+type
+
+  { TdmSysTables }
+
+  TdmSysTables = class(TDataModule)
+    sqQuery: TSQLQuery;
+  private
+    { private declarations }
+  public
+    ibcDatabase: TIBConnection;
+    stTrans: TSQLTransaction;
+    procedure Init(dbIndex: Integer);
+    function GetDBObjectNames(DatabaseIndex, TVIndex: Integer; var Count: Integer): string;
+    function GetTriggerInfo(DatabaseIndex: Integer; ATriggername: string;
+      var AfterBefor, OnTable, Event, Body: string; var TriggerEnabled: Boolean;
+      var TriggerPosition: Integer): Boolean;
+    procedure ScriptTrigger(dbIndex: Integer; ATriggerName: string; List: TStrings;
+      AsCreate: Boolean = False);
+    procedure GetTableConstraints(ATableName: string; var SqlQuery: TSQLQuery);
+    function GetExceptionInfo(ExceptionName: string; var Msg, Description, SqlQuery: string): Boolean;
+    procedure GetDomainInfo(dbIndex: Integer; DomainName: string; var DomainType: string;
+      var DomainSize: Integer; var DefaultValue: string);
+    function GetConstraintForiegnKeyFields(AIndexName: string; SqlQuery: TSQLQuery): string;
+
+    function GetDBUsers(dbIndex: Integer; ObjectName: string = ''): string;
+    function GetDBObjectsForPermissions(dbIndex: Integer; AObjectType: Integer = -1): string;
+    function GetObjectUsers(dbIndex: Integer; ObjectName: string): string;
+    function GetUserObjects(dbIndex: Integer; UserName: string; AObjectType: Integer = -1): string;
+    function GetObjectUserPermission(dbIndex: Integer; ObjectName, UserName: string; var ObjType: Integer): string;
+
+    procedure GetBasicTypes(List: TStrings);
+    procedure GetDomainTypes(dbIndex: Integer; List: TStrings);
+    function GetDefaultTypeSize(dbIndex: Integer; TypeName: string): Integer;
+    function GetDomainTypeSize(dbIndex: Integer; DomainTypeName: string): Integer;
+
+    function GetFieldInfo(dbIndex: Integer; TableName, FieldName: string; var FieldType: string;
+      var Size, IsNull: Integer; var DefaultValue, Description : string): Boolean;
+
+    function GetDatabaseInfo(dbIndex: Integer; var DatabaseName, CharSet, CreationDate: string;
+      var ODSVerMajor, ODSVerMinor, Pages, PageSize: Integer; var ProcessList: TStringList): Boolean;
+
+    { public declarations }
+  end; 
+
+var
+  dmSysTables: TdmSysTables;
+
+implementation
+
+uses Main;
+
+function DecToBin(Dec, Len: Byte): string;
+var
+  Temp: string;
+  i: byte;
+begin
+  Temp:= '';
+  for i:= 1 to Len do
+  begin
+    Temp:= Char((Dec mod 2) + 48) + Temp;
+    Dec:= Dec shr 1;
+  end;
+  Result:= Temp;
+end;
+
+{ TdmSysTables }
+
+
+
+procedure TdmSysTables.Init(dbIndex: Integer);
+begin
+  with fmMain.RegisteredDatabases[dbIndex] do
+  begin
+  //  IBConnection.Close;
+    IBConnection.DatabaseName:= RegRec.DatabaseName;
+    IBConnection.UserName:= RegRec.UserName;
+    IBConnection.Password:= RegRec.Password;
+    IBConnection.Role:= RegRec.Role;
+    IBConnection.CharSet:= RegRec.Charset;
+    ibcDatabase:= IBConnection;
+    stTrans:= SQLTrans;
+    sqQuery.DataBase:= ibcDatabase;
+    sqQuery.Transaction:= stTrans;
+  end;
+end;
+
+(*****  GetDBObjectNames, like Table names, Triggers, Generators, etc according to TVIndex  ****)
+
+function TdmSysTables.GetDBObjectNames(DatabaseIndex, TVIndex: Integer; var count: Integer): string;
+begin
+    Init(DatabaseIndex);
+    sqQuery.Close;
+    if TVIndex = 1 then // Tables
+      sqQuery.SQL.Text:= 'select rdb$relation_name from rdb$relations where rdb$view_blr is null ' +
+        ' and (rdb$system_flag is null or rdb$system_flag = 0) order by rdb$relation_name'
+    else
+    if TVIndex = 2 then // Generators
+      sqQuery.SQL.Text:= 'select RDB$GENERATOR_Name from RDB$GENERATORS where RDB$SYSTEM_FLAG = 0 order by rdb$generator_Name'
+    else
+    if TVIndex = 3 then // Triggers
+      sqQuery.SQL.Text:= 'SELECT rdb$Trigger_Name FROM RDB$TRIGGERS WHERE RDB$SYSTEM_FLAG=0 order by rdb$Trigger_Name'
+    else
+    if TVIndex = 4 then // Views
+      sqQuery.SQL.Text:= 'SELECT DISTINCT RDB$VIEW_NAME FROM RDB$VIEW_RELATIONS order by rdb$View_Name'
+    else
+    if TVIndex = 5 then // Stored Procedures
+      sqQuery.SQL.Text:= 'SELECT RDB$Procedure_Name FROM RDB$PROCEDURES order by rdb$Procedure_Name'
+    else
+    if TVIndex = 6 then // UDF
+      sqQuery.SQL.Text:= 'SELECT RDB$FUNCTION_NAME FROM RDB$FUNCTIONS where RDB$SYSTEM_FLAG=0 order by rdb$Function_Name'
+    else
+    if TVIndex = 7 then // System Tables
+      sqQuery.SQL.Text:= 'SELECT RDB$RELATION_NAME FROM RDB$RELATIONS where RDB$SYSTEM_FLAG=1 ' +
+        'order by RDB$RELATION_NAME'
+    else
+    if TVIndex = 8 then // Domains
+      sqQuery.SQL.Text:= 'select RDB$FIELD_NAME from RDB$FIELDS where RDB$Field_Name not like ''RDB$%''  order by rdb$Field_Name'
+    else
+    if TVIndex = 9 then // Roles
+      sqQuery.SQL.Text:= 'select RDB$ROLE_NAME from RDB$ROLES order by rdb$Role_Name'
+    else
+    if TVIndex = 10 then // Exceptions
+      sqQuery.SQL.Text:= 'select RDB$EXCEPTION_NAME from RDB$EXCEPTIONS order by rdb$Exception_Name'
+    else
+    if TVIndex = 11 then // Users
+      sqQuery.SQL.Text:= 'select distinct RDB$User from RDB$USER_PRIVILEGES where RDB$User_Type = 8 order by rdb$User';
+
+
+    sqQuery.Open;
+    while not sqQuery.EOF do
+    begin
+      Result:= Result + sqQuery.Fields[0].AsString;
+      sqQuery.Next;
+      if not sqQuery.EOF then
+        Result:= Result + ',';
+    end;
+    Count:= sqQuery.RecordCount;
+    sqQuery.Close;
+end;
+
+(***********  Get Trigger Info  ***************)
+
+function TdmSysTables.GetTriggerInfo(DatabaseIndex: Integer; ATriggername: string;
+  var AfterBefor, OnTable, Event, Body: string; var TriggerEnabled: Boolean; var TriggerPosition: Integer): Boolean;
+var
+  Rec: TDatabaseRec;
+  Encode: string;
+begin
+  try
+    Init(DatabaseIndex);
+    sqQuery.Close;
+    sqQuery.SQL.Text:= 'SELECT RDB$TRIGGER_NAME AS trigger_name, ' +
+      '  RDB$RELATION_NAME AS table_name, ' +
+      '  RDB$TRIGGER_SOURCE AS trigger_body, ' +
+      '  RDB$TRIGGER_TYPE as Trigger_Type, ' +
+      '  RDB$Trigger_Sequence as TPos, ' +
+      '   CASE RDB$TRIGGER_INACTIVE ' +
+      '   WHEN 1 THEN 0 ELSE 1 ' +
+      ' END AS trigger_enabled, ' +
+      ' RDB$DESCRIPTION AS trigger_comment ' +
+      ' FROM RDB$TRIGGERS ' +
+      ' WHERE UPPER(RDB$TRIGGER_NAME)=''' + ATriggerName + ''' ';
+
+    sqQuery.Open;
+    Body:= Trim(sqQuery.FieldByName('Trigger_Body').AsString);
+    OnTable:= Trim(sqQuery.FieldByName('Table_Name').AsString);
+    TriggerEnabled:= sqQuery.FieldByName('Trigger_Enabled').AsBoolean;
+    TriggerPosition:= sqQuery.FieldByName('TPos').AsInteger;
+    Encode:= DecToBin(sqQuery.FieldByName('Trigger_Type').AsInteger + 1, 7);
+    if Encode[7] = '1' then
+      AfterBefor:= 'After'
+    else
+      AfterBefor:= 'Before';
+    Delete(Encode, 7, 1);
+    Event:= '';
+    while Length(Encode) > 0 do
+    begin
+      if Copy(Encode, Length(Encode) - 1, 2) = '01' then
+        Event:= Event + 'Insert'
+      else
+      if Copy(Encode, Length(Encode) - 1, 2) = '10' then
+        Event:= Event + 'Update'
+      else
+      if Copy(Encode, Length(Encode) - 1, 2) = '11' then
+        Event:= Event + 'Delete';
+      Delete(Encode, Length(Encode) - 1, 2);
+      if (Encode <> '') and (Copy(Encode, Length(Encode) - 1, 2) <> '00') then
+        Event:= Event + ' or ';
+    end;
+    sqQuery.Close;
+    Result:= True;
+
+  except
+  on e: exception do
+  begin
+    MessageDlg('Error: ' + e.Message, mtError, [mbOk], 0);
+    Result:= False;
+  end;
+  end;
+end;
+
+(****************  Script Trigger  ***************)
+
+procedure TdmSysTables.ScriptTrigger(dbIndex: Integer; ATriggerName: string; List: TStrings;
+   AsCreate: Boolean = False);
+var
+  Body: string;
+  AfterBefore: string;
+  Event: string;
+  OnTable: string;
+  TriggerEnabled: Boolean;
+  TriggerPosition: Integer;
+begin
+  GetTriggerInfo(dbIndex, ATriggerName, AfterBefore, OnTable, Event, Body, TriggerEnabled, TriggerPosition);
+  List.Add('SET TERM ^ ;');
+  if AsCreate then
+    List.Add('Create Trigger ' + ATriggerName + ' for ' + OnTable)
+  else
+    List.Add('Alter Trigger ' + ATriggerName);
+    if TriggerEnabled then
+      List.Add('ACTIVE')
+    else
+      List.Add('INACTIVE');
+
+  List.Add(AfterBefore + ' ' + Event);
+  List.Add('Position ' + IntToStr(TriggerPosition));
+
+  List.Text:= List.Text + Body + ' ^';
+  List.Add('SET TERM ; ^');
+
+end;
+
+(**********  Get Table Constraints Info  ********************)
+
+procedure TdmSysTables.GetTableConstraints(ATableName: string; var SqlQuery: TSQLQuery);
+begin
+  SqlQuery.Close;
+  SqlQuery.SQL.Text:= 'select Trim(Refc.RDB$Constraint_Name) as ConstName, Trim(Refc.RDB$CONST_NAME_UQ) as KeyName, ' +
+    'Trim(Ind.RDB$Relation_Name) as CurrentTableName, ' +
+    'Trim(Seg.RDB$Field_name) as CurrentFieldName, ' +
+    'Trim(Con.RDB$Relation_Name) as OtherTableName, ' +
+    'Trim(Ind.RDB$Foreign_key) as OtherFieldName, ' +
+    'RDB$Update_Rule as UpdateRule, RDB$Delete_Rule as DeleteRule ' +
+    'from RDB$RELATION_CONSTRAINTS Con, rdb$REF_Constraints Refc, RDB$INDEX_SEGMENTS Seg, ' +
+    'RDB$INDICES Ind ' +
+    'where Con.RDB$COnstraint_Name = Refc.RDB$Const_Name_UQ ' +
+    '  and Refc.RDB$COnstraint_Name = Ind.RDB$Index_Name' +
+    '  and Refc.RDB$COnstraint_Name = Seg.RDB$Index_Name' +
+    '  and Ind.RDB$Relation_Name = ''' + UpperCase(ATableName) + '''';
+  SqlQuery.Open;
+
+end;
+
+(*********  Get Exception Info ***************)
+
+function TdmSysTables.GetExceptionInfo(ExceptionName: string; var Msg, Description,
+  SqlQuery: string): Boolean;
+begin
+  sqQuery.Close;
+  sqQuery.SQL.Text:= 'select * from RDB$EXCEPTIONS where RDB$EXCEPTION_NAME = ''' + ExceptionName + '''';
+  sqQuery.Open;
+  Result:= sqQuery.RecordCount > 0;
+  if Result then
+  begin
+    Msg:= sqQuery.FieldByName('RDB$MESSAGE').AsString;
+    Description:= sqQuery.FieldByName('RDB$DESCRIPTION').AsString;
+    SqlQuery:= 'CREATE EXCEPTION ' + ExceptionName + #10 +
+               '''' + Msg + ''';' + #10 +
+               'UPDATE RDB$EXCEPTIONS set ' + #10 +
+               'RDB$DESCRIPTION = ''' + Description + ''' ' + #10 +
+               'where RDB$EXCEPTION_NAME = ''' + ExceptionName + ''';';
+  end;
+  sqQuery.Close;
+end;
+
+
+(************  View Domain info  ***************)
+
+procedure TdmSysTables.GetDomainInfo(dbIndex: Integer; DomainName: string; var DomainType: string;
+  var DomainSize: Integer; var DefaultValue: string);
+begin
+  Init(dbIndex);
+  sqQuery.Close;
+  sqQuery.SQL.Text:= 'select * from RDB$FIELDS where RDB$Field_Name = ''' + UpperCase(DomainName) + '''';
+  sqQuery.Open;
+
+  if sqQuery.RecordCount > 0 then
+  begin
+    DomainType:= fmMain.GetFBTypeName(sqQuery.FieldByName('RDB$FIELD_TYPE').AsInteger);
+    DomainSize:= sqQuery.FieldByName('RDB$FIELD_LENGTH').AsInteger;
+    DefaultValue:= sqQuery.FieldByName('RDB$DEFAULT_SOURCE').AsString;
+  end
+  else
+    DomainSize:= 0;
+  sqQuery.Close;
+end;
+
+
+(*************  Get constraint foreign key fields  *************)
+
+function TdmSysTables.GetConstraintForiegnKeyFields(AIndexName: string; SqlQuery: TSQLQuery): string;
+begin
+  SQLQuery.Close;
+  SQLQuery.SQL.Text:= 'select RDB$Index_Name as IndexName, RDB$Field_name as FieldName from RDB$INDEX_SEGMENTS ' +
+    'where RDB$Index_name = ''' + UpperCase(Trim(AIndexName)) + '''';
+  SQLQuery.Open;
+  while not SQLQuery.EOF do
+  begin
+    Result:= Result + Trim(SQLQuery.FieldByName('FieldName').AsString);
+    SQLQuery.Next;
+    if not SQLQuery.EOF then
+      Result:= Result + ',';
+  end;
+  SQLQuery.Close;
+end;
+
+
+(************  Get Database Users  ************)
+
+function TdmSysTables.GetDBUsers(dbIndex: Integer; ObjectName: string = ''): string;
+begin
+  Init(dbIndex);
+  sqQuery.Close;
+  sqQuery.SQL.Text:= 'select distinct RDB$User, RDB$User_Type from RDB$USER_PRIVILEGES ';
+  if ObjectName <> '' then // Specify specific Object
+    sqQuery.SQL.Add('where RDB$Relation_Name = ''' + UpperCase(ObjectName) + ''' ');
+  sqQuery.SQL.Add('order by RDB$User_Type');
+  sqQuery.Open;
+  while not sqQuery.EOF do
+  begin
+    if sqQuery.Fields[1].AsInteger = 13 then // Role
+      Result:= Result + '<R>';
+    Result:= Result + Trim(sqQuery.Fields[0].Text);
+    sqQuery.Next;
+    if not sqQuery.EOF then
+      Result:= Result + ',';
+  end;
+  sqQuery.Close;
+end;
+
+
+(************  Get Database Objects for permissions ************)
+
+function TdmSysTables.GetDBObjectsForPermissions(dbIndex: Integer; AObjectType: Integer = -1): string;
+begin
+  Init(dbIndex);
+  sqQuery.Close;
+  sqQuery.SQL.Text:= 'select distinct RDB$Relation_Name, RDB$Object_Type from RDB$USER_PRIVILEGES ';
+  if AObjectType <> -1 then
+    sqQuery.SQL.Add('where RDB$Object_Type = ' + IntToStr(AObjectType));
+  sqQuery.SQL.Add(' order by RDB$Object_Type');
+  sqQuery.Open;
+  while not sqQuery.EOF do
+  begin
+    if Pos('$', sqQuery.Fields[0].AsString) = 0 then
+    begin
+      if AObjectType = -1 then
+      case sqQuery.Fields[1].AsInteger of
+        0: Result:= Result + '<T>'; // Table/View
+        5: Result:= Result + '<P>'; // Procedure
+        13: Result:= Result + '<R>'; // Role
+      end;
+      Result:= Result + Trim(sqQuery.Fields[0].Text);
+      sqQuery.Next;
+      if not sqQuery.EOF then
+        Result:= Result + ',';
+
+    end
+    else
+      sqQuery.Next;
+  end;
+  sqQuery.Close;
+end;
+
+(************  Get Object Users ************)
+
+function TdmSysTables.GetObjectUsers(dbIndex: Integer; ObjectName: string): string;
+begin
+  Init(dbIndex);
+  sqQuery.Close;
+  sqQuery.SQL.Text:= 'select distinct RDB$User, RDB$User_Type from RDB$USER_PRIVILEGES  ' +
+    'where RDB$Relation_Name = ''' + ObjectName + '''';
+  sqQuery.Open;
+  while not sqQuery.EOF do
+  begin
+      if sqQuery.Fields[1].AsInteger = 13 then // Role
+        Result:= Result + '<R>';
+      Result:= Result + Trim(sqQuery.Fields[0].Text);
+
+      sqQuery.Next;
+      if not sqQuery.EOF then
+        Result:= Result + ',';
+  end;
+  sqQuery.Close;
+end;
+
+(************  Get Users Objects ************)
+
+function TdmSysTables.GetUserObjects(dbIndex: Integer; UserName: string; AObjectType: Integer = -1): string;
+begin
+  Init(dbIndex);
+  sqQuery.Close;
+  sqQuery.SQL.Text:= 'select distinct RDB$Relation_Name, RDB$Grant_Option from RDB$USER_PRIVILEGES  ' +
+    'where RDB$User = ''' + UserName + ''' ';
+  if AObjectType <> -1 then
+    sqQuery.SQL.Add(' and RDB$Object_Type = ' + IntToStr(AObjectType));
+  sqQuery.SQL.Add(' order by RDB$Object_Type');
+  sqQuery.Open;
+  Result:= '';
+  while not sqQuery.EOF do
+  begin
+    if sqQuery.FieldByName('RDB$Grant_Option').AsInteger <> 0 then
+      Result:= Result + '<G>';
+    Result:= Result + Trim(sqQuery.Fields[0].Text);
+
+    sqQuery.Next;
+    if not sqQuery.EOF then
+      Result:= Result + ',';
+  end;
+  sqQuery.Close;
+end;
+
+
+(************  Get Object User permission ************)
+
+function TdmSysTables.GetObjectUserPermission(dbIndex: Integer; ObjectName, UserName: string;
+  var ObjType: Integer): string;
+begin
+  Init(dbIndex);
+  sqQuery.Close;
+  sqQuery.SQL.Text:= 'select * from RDB$User_Privileges where RDB$Relation_Name = ''' +
+    ObjectName + ''' and RDB$User = ''' + UserName + '''';
+  sqQuery.Open;
+  Result:= '';
+  if sqQuery.RecordCount >  0 then
+  begin
+    ObjType:= sqQuery.FieldByName('RDB$Object_Type').AsInteger;
+    while not sqQuery.EOF do
+    begin
+      Result:= Result + Trim(sqQuery.FieldByName('RDB$Privilege').AsString);
+      if sqQuery.FieldByName('RDB$Grant_Option').AsInteger <> 0 then
+        Result:= Result + 'G';
+      sqQuery.Next;
+      if not sqQuery.EOF then
+        Result:= Result + ',';
+    end;
+
+  end;
+  sqQuery.Close;
+end;
+
+procedure TdmSysTables.GetBasicTypes(List: TStrings);
+begin
+  List.CommaText:= List.CommaText + 'SMALLINT,INTEGER,BIGINT,VARCHAR,FLOAT,"DOUBLE Precision",CHAR,DATE,TIME,' +
+    'TIMESTAMP,CSTRING,D_FLOAT,QUAD,BLOB';
+end;
+
+procedure TdmSysTables.GetDomainTypes(dbIndex: Integer; List: TStrings);
+var
+  Count: Integer;
+begin
+  List.CommaText:= List.CommaText + ',' + GetDBObjectNames(dbIndex, 8, Count);
+end;
+
+function TdmSysTables.GetDefaultTypeSize(dbIndex: Integer; TypeName: string): Integer;
+begin
+  TypeName:= LowerCase(TypeName);
+  if TypeName = 'varchar' then
+    Result:= 50
+  else
+  if TypeName = 'char' then
+    Result:= 20
+  else
+  if TypeName = 'smallint' then
+    Result:= 2
+  else
+  if TypeName = 'integer' then
+    Result:= 4
+  else
+  if TypeName = 'bigint' then
+    Result:= 8
+  else
+  if TypeName = 'float' then
+    Result:= 4
+  else
+  if TypeName = 'timestamp' then
+    Result:= 8
+  else
+  if TypeName = 'date' then
+    Result:= 4
+  else
+  if TypeName = 'time' then
+    Result:= 4
+  else
+  if TypeName = 'double precision' then
+    Result:= 8
+  else
+    Result:= GetDomainTypeSize(dbIndex, TypeName);
+
+end;
+
+function TdmSysTables.GetDomainTypeSize(dbIndex: Integer; DomainTypeName: string): Integer;
+var
+  DomainType, DefaultValue: string;
+begin
+  GetDomainInfo(dbIndex, DomainTypeName, DomainType, Result, DefaultValue);
+end;
+
+function TdmSysTables.GetFieldInfo(dbIndex: Integer; TableName, FieldName: string; var FieldType: string;
+  var Size, IsNull: Integer; var DefaultValue, Description: string): Boolean;
+begin
+  Init(dbIndex);
+  sqQuery.SQL.Text:= 'SELECT r.RDB$FIELD_NAME AS field_name, ' +
+      '  r.RDB$DESCRIPTION AS field_description, ' +
+      '  r.RDB$DEFAULT_SOURCE AS field_default_value, ' +
+      '  r.RDB$NULL_FLAG AS field_not_null_constraint, ' +
+      '  f.RDB$FIELD_LENGTH AS field_length, ' +
+      '  f.RDB$FIELD_PRECISION AS field_precision, ' +
+      '  f.RDB$FIELD_SCALE AS field_scale, ' +
+      '  f.RDB$FIELD_TYPE as Field_Type_Int, ' +
+      '  CASE f.RDB$FIELD_TYPE ' +
+      '    WHEN 261 THEN ''BLOB'' ' +
+      '    WHEN 14 THEN ''CHAR'' ' +
+      '    WHEN 40 THEN ''CSTRING''  ' +
+      '    WHEN 11 THEN ''D_FLOAT'' ' +
+      '    WHEN 27 THEN ''DOUBLE Precision'' ' +
+      '    WHEN 10 THEN ''FLOAT'' ' +
+      '    WHEN 16 THEN ''BIGINT'' ' +
+      '    WHEN 8 THEN ''INTEGER'' ' +
+      '    WHEN 9 THEN ''QUAD'' ' +
+      '    WHEN 7 THEN ''SMALLINT'' ' +
+      '    WHEN 12 THEN ''DATE'' ' +
+      '    WHEN 13 THEN ''TIME'' ' +
+      '    WHEN 35 THEN ''TIMESTAMP'' ' +
+      '    WHEN 37 THEN ''VARCHAR'' ' +
+      '    ELSE ''UNKNOWN'' ' +
+      '  END AS field_type_Str, ' +
+      '  f.RDB$FIELD_SUB_TYPE AS field_subtype, ' +
+      '  coll.RDB$COLLATION_NAME AS field_collation, ' +
+      '  cset.RDB$CHARACTER_SET_NAME AS field_charset, ' +
+      ' f.RDB$COMPUTED_Source AS Computed_Source ' +
+      ' FROM RDB$RELATION_FIELDS r ' +
+      ' LEFT JOIN RDB$FIELDS f ON r.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME ' +
+      ' LEFT JOIN RDB$COLLATIONS coll ON f.RDB$COLLATION_ID = coll.RDB$COLLATION_ID ' +
+      ' LEFT JOIN RDB$CHARACTER_SETS cset ON f.RDB$CHARACTER_SET_ID = cset.RDB$CHARACTER_SET_ID ' +
+      ' WHERE r.RDB$RELATION_NAME=''' + TableName + '''  and Trim(r.RDB$FIELD_NAME) = ''' + UpperCase(FieldName) + ''' ' +
+      ' ORDER BY r.RDB$FIELD_POSITION';
+  sqQuery.Open;
+  Result:= sqQuery.RecordCount > 0;
+  if Result then
+  with sqQuery do
+  begin
+    FieldType:= Trim(FieldByName('Field_Type_Str').AsString);
+    Size:= FieldByName('Field_Length').AsInteger;
+    IsNull:= FieldByName('Field_not_null_constraint').AsInteger;
+    DefaultValue:= FieldByName('Field_Default_Value').AsString;
+    Description:= FieldByName('Field_Description').AsString;
+  end;
+  sqQuery.Close;
+end;
+
+function TdmSysTables.GetDatabaseInfo(dbIndex: Integer; var DatabaseName, CharSet, CreationDate: string;
+  var ODSVerMajor, ODSVerMinor, Pages, PageSize: Integer; var ProcessList: TStringList): Boolean;
+begin
+  try
+    Init(dbIndex);
+    sqQuery.SQL.Text:= 'select * from RDB$DATABASE';
+    sqQuery.Open;
+    CharSet:= sqQuery.fieldbyName('RDB$Character_Set_Name').AsString;
+    sqQuery.Close;
+
+    sqQuery.SQL.Text:= 'select * from MON$DATABASE';
+    sqQuery.Open;
+    DatabaseName:= sqQuery.FieldByName('MON$Database_Name').AsString;
+    PageSize:= sqQuery.FieldByName('MON$Page_Size').AsInteger;
+    ODSVerMajor:= sqQuery.FieldByName('MON$ODS_Major').AsInteger;
+    ODSVerMinor:= sqQuery.FieldByName('MON$ODS_Minor').AsInteger;
+    CreationDate:= Trim(sqQuery.FieldByName('MON$Creation_Date').AsString);
+    Pages:= sqQuery.FieldByName('MON$Pages').AsInteger;
+    sqQuery.Close;
+
+    sqQuery.SQL.Text:= 'select * from MON$ATTACHMENTS';
+    if ProcessList = nil then
+      ProcessList:= TStringList.Create;
+    sqQuery.Open;
+    with sqQuery do
+    while not EOF do
+    begin
+      ProcessList.Add('Host: ' + Trim(FieldByName('MON$Remote_Address').AsString) +
+        '   User: ' + Trim(FieldByName('Mon$User').AsString)  +
+        '   Process: ' + Trim(FieldByName('Mon$Remote_Process').AsString));
+      Next;
+    end;
+    sqQuery.Close;
+    Result:= True;
+
+  except
+  on e: exception do
+    Result:= False;
+  end;
+end;
+
+initialization
+  {$I systables.lrs}
+
+end.
+

+ 779 - 0
tablemanage.lfm

@@ -0,0 +1,779 @@
+object fmTableManage: TfmTableManage
+  Left = 214
+  Height = 411
+  Top = 386
+  Width = 780
+  ActiveControl = PageControl1
+  Anchors = [akTop, akLeft, akRight]
+  Caption = 'Table Management'
+  ClientHeight = 411
+  ClientWidth = 780
+  OnClose = FormClose
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object PageControl1: TPageControl
+    Left = 0
+    Height = 411
+    Top = 0
+    Width = 780
+    ActivePage = tsFields
+    Align = alClient
+    Images = ImageList1
+    TabIndex = 0
+    TabOrder = 0
+    object tsFields: TTabSheet
+      Caption = 'Fields'
+      ClientHeight = 380
+      ClientWidth = 776
+      object sgFields: TStringGrid
+        Left = 0
+        Height = 337
+        Top = 0
+        Width = 776
+        Align = alTop
+        Anchors = [akTop, akLeft, akRight, akBottom]
+        ColCount = 7
+        Columns = <        
+          item
+            ButtonStyle = cbsCheckboxColumn
+            Color = 14408682
+            MaxSize = 50
+            ReadOnly = True
+            Title.Caption = 'P-Key'
+            Title.Font.Color = 5526757
+            Title.Font.Height = -11
+            Title.Font.Style = [fsBold]
+            Title.PrefixOption = poNone
+            Width = 50
+          end        
+          item
+            Title.Caption = 'Field Name'
+            Title.PrefixOption = poNone
+            Width = 130
+          end        
+          item
+            Title.Caption = 'Data Type'
+            Title.PrefixOption = poNone
+            Width = 120
+          end        
+          item
+            Title.Caption = 'Size'
+            Title.Font.Color = 16657685
+            Title.Font.Style = [fsBold]
+            Title.PrefixOption = poNone
+          end        
+          item
+            ButtonStyle = cbsCheckboxColumn
+            Title.Caption = 'Allow Null'
+            Title.PrefixOption = poNone
+            Width = 90
+          end        
+          item
+            Title.Caption = 'Default Value'
+            Title.PrefixOption = poNone
+            Width = 120
+          end        
+          item
+            Title.Caption = 'Description'
+            Title.PrefixOption = poNone
+            Width = 200
+          end>
+        FixedColor = 14539471
+        FixedCols = 0
+        Flat = True
+        Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing, goColMoving, goRowSelect, goSmoothScroll]
+        RowCount = 4
+        TabOrder = 0
+        TitleFont.Style = [fsBold]
+        UseXORFeatures = True
+      end
+      object bbEdit: TBitBtn
+        Left = 14
+        Height = 30
+        Top = 342
+        Width = 75
+        Anchors = [akLeft, akBottom]
+        Caption = 'Edit'
+        Color = 16249563
+        OnClick = bbEditClick
+        TabOrder = 1
+      end
+      object bbNew: TBitBtn
+        Left = 104
+        Height = 30
+        Top = 342
+        Width = 75
+        Anchors = [akLeft, akBottom]
+        Caption = 'New'
+        Color = 16249563
+        OnClick = bbNewClick
+        TabOrder = 2
+      end
+      object edDrop: TBitBtn
+        Left = 240
+        Height = 30
+        Top = 342
+        Width = 75
+        Anchors = [akLeft, akBottom]
+        Caption = 'Drop'
+        Color = 16249563
+        Kind = bkIgnore
+        OnClick = edDropClick
+        TabOrder = 3
+      end
+      object bbRefresh: TBitBtn
+        Left = 672
+        Height = 30
+        Top = 342
+        Width = 94
+        Anchors = [akRight, akBottom]
+        Caption = 'Refresh'
+        Color = 16249563
+        Kind = bkRetry
+        OnClick = bbRefreshClick
+        TabOrder = 4
+      end
+    end
+    object tsIndices: TTabSheet
+      Caption = 'Indices'
+      ClientHeight = 380
+      ClientWidth = 776
+      ImageIndex = 2
+      object bbRefreshIndices: TBitBtn
+        Left = 646
+        Height = 30
+        Top = 3
+        Width = 88
+        Anchors = [akTop, akRight]
+        Caption = 'Refresh'
+        Color = 16249563
+        Kind = bkRetry
+        OnClick = bbRefreshIndicesClick
+        TabOrder = 0
+      end
+      object sgIndices: TStringGrid
+        Left = -1
+        Height = 142
+        Top = -2
+        Width = 637
+        Anchors = [akTop, akLeft, akRight]
+        Columns = <        
+          item
+            Title.Caption = 'Index Name'
+            Title.PrefixOption = poNone
+            Width = 140
+          end        
+          item
+            ButtonStyle = cbsCheckboxColumn
+            Title.Caption = 'Unique'
+            Title.PrefixOption = poNone
+          end        
+          item
+            ButtonStyle = cbsPickList
+            PickList.Strings = (
+              'Asc'
+              'Desc'
+            )
+            Title.Caption = 'Sort'
+            Title.PrefixOption = poNone
+          end        
+          item
+            Title.Caption = 'On Fields'
+            Title.PrefixOption = poNone
+            Width = 140
+          end        
+          item
+            ButtonStyle = cbsCheckboxColumn
+            ReadOnly = True
+            Title.Caption = 'Primary Key'
+            Title.Color = 12514548
+            Title.PrefixOption = poNone
+            Width = 90
+          end>
+        FixedColor = 14539471
+        FixedCols = 0
+        Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goRowSelect, goSmoothScroll]
+        TabOrder = 1
+      end
+      object bbDrop: TBitBtn
+        Left = 646
+        Height = 30
+        Top = 51
+        Width = 88
+        Anchors = [akTop, akRight]
+        Caption = 'Drop'
+        Color = 16249563
+        OnClick = bbDropClick
+        TabOrder = 2
+      end
+      object GroupBox1: TGroupBox
+        Left = -2
+        Height = 236
+        Top = 139
+        Width = 570
+        Anchors = [akTop, akLeft, akRight, akBottom]
+        Caption = 'Manage'
+        ClientHeight = 217
+        ClientWidth = 566
+        TabOrder = 3
+        object Label2: TLabel
+          Left = 6
+          Height = 18
+          Top = 14
+          Width = 174
+          Caption = 'Create new index on fields'
+          ParentColor = False
+        end
+        object Label3: TLabel
+          Left = 254
+          Height = 18
+          Top = 39
+          Width = 111
+          Caption = 'New index name'
+          ParentColor = False
+        end
+        object clbFields: TCheckListBox
+          Left = 6
+          Height = 152
+          Top = 47
+          Width = 232
+          ItemHeight = 0
+          TabOrder = 0
+          TopIndex = -1
+        end
+        object cxUnique: TCheckBox
+          Left = 254
+          Height = 22
+          Top = 95
+          Width = 70
+          Caption = 'Unique'
+          TabOrder = 1
+        end
+        object bbCreateIndex: TBitBtn
+          Left = 254
+          Height = 30
+          Top = 167
+          Width = 124
+          Caption = 'Create Index'
+          Color = 16249563
+          Default = True
+          Kind = bkOK
+          ModalResult = 1
+          OnClick = bbCreateIndexClick
+          TabOrder = 2
+        end
+        object edIndexName: TEdit
+          Left = 254
+          Height = 27
+          Top = 63
+          Width = 120
+          TabOrder = 3
+        end
+        object cbSortType: TComboBox
+          Left = 254
+          Height = 31
+          Top = 127
+          Width = 120
+          AutoDropDown = True
+          ItemHeight = 0
+          ItemIndex = 0
+          Items.Strings = (
+            'Ascending'
+            'Descending'
+          )
+          ParentColor = True
+          Style = csDropDownList
+          TabOrder = 4
+          Text = 'Ascending'
+        end
+        object cbIndexType: TComboBox
+          Left = 254
+          Height = 31
+          Top = 1
+          Width = 148
+          Color = 16249563
+          ItemHeight = 0
+          ItemIndex = 1
+          Items.Strings = (
+            'Primary Key'
+            'Secondary Index'
+          )
+          OnChange = cbIndexTypeChange
+          Style = csDropDownList
+          TabOrder = 5
+          Text = 'Secondary Index'
+        end
+      end
+    end
+    object tsConstraints: TTabSheet
+      Caption = 'Constraints'
+      ClientHeight = 380
+      ClientWidth = 776
+      ImageIndex = 3
+      object bbRefreshConstraint: TBitBtn
+        Left = 648
+        Height = 30
+        Top = 343
+        Width = 99
+        Anchors = [akRight, akBottom]
+        Caption = 'Refresh'
+        Color = 16249563
+        Kind = bkRetry
+        OnClick = bbRefreshConstraintClick
+        TabOrder = 0
+      end
+      object sgConstraints: TStringGrid
+        Left = -1
+        Height = 333
+        Top = -1
+        Width = 760
+        Anchors = [akTop, akLeft, akRight, akBottom]
+        ColCount = 7
+        Columns = <        
+          item
+            Title.Caption = 'Constraint Name'
+            Title.PrefixOption = poNone
+            Width = 120
+          end        
+          item
+            Title.Caption = 'Key name'
+            Title.PrefixOption = poNone
+            Width = 100
+          end        
+          item
+            Title.Caption = 'On Fields'
+            Title.PrefixOption = poNone
+            Width = 120
+          end        
+          item
+            Title.Caption = 'Foreign Table'
+            Title.PrefixOption = poNone
+            Width = 100
+          end        
+          item
+            Title.Caption = 'Foriegn Key'
+            Title.PrefixOption = poNone
+            Width = 100
+          end        
+          item
+            Title.Caption = 'Update Rule'
+            Title.PrefixOption = poNone
+            Width = 100
+          end        
+          item
+            Title.Caption = 'Delete Rule'
+            Title.PrefixOption = poNone
+            Width = 100
+          end>
+        FixedColor = 14539471
+        FixedCols = 0
+        Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goRowSelect, goSmoothScroll]
+        RowCount = 2
+        TabOrder = 1
+      end
+      object bbNewConstraint: TBitBtn
+        Left = 6
+        Height = 30
+        Top = 343
+        Width = 119
+        Anchors = [akLeft, akBottom]
+        Caption = 'New Constraint'
+        Color = 16249563
+        OnClick = bbNewConstraintClick
+        TabOrder = 2
+      end
+      object bbDropConstraint: TBitBtn
+        Left = 144
+        Height = 30
+        Top = 343
+        Width = 75
+        Anchors = [akLeft, akBottom]
+        Caption = 'Drop'
+        Color = 16249563
+        Kind = bkIgnore
+        OnClick = bbDropConstraintClick
+        TabOrder = 3
+      end
+    end
+    object tsTriggers: TTabSheet
+      Caption = 'Triggers'
+      ClientHeight = 380
+      ClientWidth = 776
+      ImageIndex = 1
+      object sgTriggers: TStringGrid
+        Left = 0
+        Height = 324
+        Top = -1
+        Width = 758
+        Anchors = [akTop, akLeft, akRight, akBottom]
+        ColCount = 2
+        Columns = <        
+          item
+            Title.Caption = 'Trigger Name'
+            Title.PrefixOption = poNone
+            Width = 160
+          end        
+          item
+            ButtonStyle = cbsCheckboxColumn
+            Title.Caption = 'Active'
+            Title.PrefixOption = poNone
+            Width = 100
+          end>
+        FixedColor = 14539471
+        FixedCols = 0
+        Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goRowSelect, goSmoothScroll]
+        RowCount = 2
+        TabOrder = 0
+      end
+      object bbRefreshTriggers: TBitBtn
+        Left = 662
+        Height = 30
+        Top = 337
+        Width = 87
+        Anchors = [akRight, akBottom]
+        Caption = 'Refresh'
+        Color = 16249563
+        Kind = bkRetry
+        OnClick = bbRefreshTriggersClick
+        TabOrder = 1
+      end
+      object bbNewTrigger: TBitBtn
+        Left = 7
+        Height = 30
+        Top = 335
+        Width = 87
+        Anchors = [akLeft, akBottom]
+        Caption = 'Add New'
+        Color = 16249563
+        OnClick = bbNewTriggerClick
+        TabOrder = 2
+      end
+      object bbEditTrigger: TBitBtn
+        Left = 110
+        Height = 30
+        Top = 335
+        Width = 75
+        Anchors = [akLeft, akBottom]
+        Caption = 'Edit'
+        Color = 16249563
+        OnClick = bbEditTriggerClick
+        TabOrder = 3
+      end
+      object bbDropTrigger: TBitBtn
+        Left = 200
+        Height = 30
+        Top = 335
+        Width = 75
+        Anchors = [akLeft, akBottom]
+        Caption = 'Drop'
+        Color = 16249563
+        Kind = bkIgnore
+        OnClick = bbDropTriggerClick
+        TabOrder = 4
+      end
+    end
+    object tsPermissions: TTabSheet
+      Caption = 'Permissions'
+      ClientHeight = 380
+      ClientWidth = 776
+      ImageIndex = 4
+      object sgPermissions: TStringGrid
+        Left = 0
+        Height = 324
+        Top = 0
+        Width = 758
+        Anchors = [akTop, akLeft, akRight, akBottom]
+        ColCount = 12
+        Columns = <        
+          item
+            Title.Caption = 'User/Role'
+            Title.PrefixOption = poNone
+            Width = 160
+          end        
+          item
+            Title.Caption = 'Type'
+            Title.PrefixOption = poNone
+          end        
+          item
+            ButtonStyle = cbsCheckboxColumn
+            ReadOnly = True
+            Title.Caption = 'Select'
+            Title.PrefixOption = poNone
+            Width = 100
+          end        
+          item
+            ButtonStyle = cbsCheckboxColumn
+            Title.Caption = 'Insert'
+            Title.PrefixOption = poNone
+          end        
+          item
+            ButtonStyle = cbsCheckboxColumn
+            Title.Caption = 'Update'
+            Title.PrefixOption = poNone
+          end        
+          item
+            ButtonStyle = cbsCheckboxColumn
+            Title.Caption = 'Delete'
+            Title.PrefixOption = poNone
+          end        
+          item
+            ButtonStyle = cbsCheckboxColumn
+            Title.Caption = 'References'
+            Title.PrefixOption = poNone
+            Width = 80
+          end        
+          item
+            ButtonStyle = cbsCheckboxColumn
+            Title.Caption = 'Grant Select'
+            Title.PrefixOption = poNone
+            Width = 90
+          end        
+          item
+            ButtonStyle = cbsCheckboxColumn
+            Title.Caption = 'Grant Insert'
+            Title.PrefixOption = poNone
+            Width = 90
+          end        
+          item
+            ButtonStyle = cbsCheckboxColumn
+            Title.Caption = 'Grant Update'
+            Title.PrefixOption = poNone
+            Width = 100
+          end        
+          item
+            ButtonStyle = cbsCheckboxColumn
+            Title.Caption = 'Grant Delete'
+            Title.PrefixOption = poNone
+            Width = 90
+          end        
+          item
+            ButtonStyle = cbsCheckboxColumn
+            Title.Caption = 'Grant References'
+            Title.PrefixOption = poNone
+            Width = 110
+          end>
+        FixedColor = 14539471
+        FixedCols = 0
+        Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goRowSelect, goSmoothScroll]
+        RowCount = 2
+        TabOrder = 0
+      end
+      object edEditPermission: TBitBtn
+        Left = 6
+        Height = 30
+        Top = 339
+        Width = 75
+        Anchors = [akLeft, akBottom]
+        Caption = 'Edit'
+        Color = 16249563
+        OnClick = edEditPermissionClick
+        TabOrder = 1
+      end
+      object bbRefreshPermissions: TBitBtn
+        Left = 662
+        Height = 30
+        Top = 339
+        Width = 87
+        Anchors = [akRight, akBottom]
+        Caption = 'Refresh'
+        Color = 16249563
+        Kind = bkRetry
+        OnClick = bbRefreshPermissionsClick
+        TabOrder = 2
+      end
+      object bbAddUser: TBitBtn
+        Left = 90
+        Height = 30
+        Top = 339
+        Width = 125
+        Anchors = [akLeft, akBottom]
+        Caption = 'Add User / Role'
+        Color = 16249563
+        OnClick = bbAddUserClick
+        TabOrder = 3
+      end
+    end
+  end
+  object ImageList1: TImageList
+    DrawingStyle = dsFocus
+    left = 464
+    top = 240
+    Bitmap = {
+      4C69050000001000000010000000EFFCFEFFF4FEFEFFFFFDFCFFFFFDFCFFFFFA
+      FFFFFFF7FEFFFFFCFFFFFFFDFDFFFFFDF8FFFFFEF4FFF9FEF5FFFCFEFEFFFFF8
+      FFFFFFF6FFFFF9F1FCFFFFFBFFFFF4FFFFFFF8FFFFFFEFF3EEFFFFFFFCFFFFFA
+      FCFFF9F3F8FFFFFDFFFFFFFFFFFFFAFDF4FFFDFFF7FFF8FFF6FFFDFFFEFFF7F3
+      FFFFFBF4FFFFFFF8FFFFFCF6FBFFF5FAFDFFEFF7F6FFF3FFF5FFF8FFF7FFFBFF
+      FCFFFFFFFFFFFBF7FDFFF6F6F6FFF7FFF6FFEDFDEBFFF8FFF8FFF4FBF6FFF3F8
+      F9FFFBFEFFFFFDF9FFFFFEF6FDFFF9FDFEFFF6FFFBFFECFFF1FFDCFEE0FFEAFF
+      EDFFECFAEFFFFFFEFFFFF9FFFAFFE7FFECFFDCFFE2FFEEFFF2FFEEFFF2FFEDFF
+      F3FFECFEF1FFFCFEFEFFFDF9FFFFF2F9F4FFE8FEEBFF90C69BFF8CCB99FF90BF
+      98FFA0BEA5FFEAF5EDFFEEFFF3FF89BF94FF9AD8A8FF91B79BFFB8D8BFFFBEEB
+      C4FFD0F8D5FFF4FFF8FFEEF3F2FFFDFFFBFFE2FCE4FF8ACE97FFBBFFCAFFC1FE
+      CCFFE0FFE7FFF0FBF3FFEEFFF4FF80C592FFBBFFCEFFCAF7D6FFCEF7D7FFA2DF
+      A7FFB7EFBCFFE3F9E7FFFBFFFFFFFFFBF8FFE9FEE8FF80C78EFFB3FFC5FFC5FF
+      D1FFDDFFE2FFFBFFFCFFE5F7EAFF76C18BFFBAFFD1FFDFFFEEFFD6FFDFFFC4FF
+      C9FFA0DBA1FFEBFEEDFFFDFCFFFFFFF6FAFFF8FFF5FF0D511AFF005511FF0C4C
+      18FF1E4022FFFFFEFFFFF3FDF7FF0E5523FFA9FAC1FFE0FFEEFFE2FFE8FFC8FF
+      CBFF185218FFEFFBEFFFFFFAFFFFFFEFFEFFFFFFFBFF074013FFBBFFCDFFDCFF
+      E6FFE2F8E5FFFFF8FFFFFEFDFFFF07431AFFC5FFDAFFE4FFEFFFE3FCE8FFC8FE
+      C9FF1B491AFFFFFFFEFFFFEEFFFFFFF4FFFFFFFFFBFF1E5528FFBFFFCEFFD1FF
+      DBFFE6FCE9FFFFF5FFFFFFFEFFFF1C562DFFB9FECCFFE5FFEFFFE1FBE4FF154B
+      16FF1C4A1BFFFCFFFBFFFFF9FFFFFFFFFEFFEBFBE9FF0D4815FFC4FFD0FFD6FF
+      DDFFECFFEEFFFBFFFAFFE9FAEDFF064815FF105A20FF194423FF1D4522FF68A5
+      6BFFD2FFD3FFF3FFF4FFF8FBF9FFF3FFF2FFEDFFF0FFC5FFCBFFC5FFCDFFD0FF
+      D6FFE5FFE8FFF4FFF5FFEFFFF1FFCBFFD5FFC2FFCDFFD4FFDBFFDAFFE0FFD6FF
+      DBFFD1FFD4FFE6FFE8FFF0FFF0FFECFFF0FFDBFFDEFFD1FFD6FFD1FFD6FFCDFE
+      D0FFE0FFE4FFD8F3D9FFDCFEDFFFCEFFD1FFC6FFCBFFD1FFD6FFD1FFD6FFCDFF
+      D3FFD1FFD8FFD6FCD8FFE6FFE7FF0A2511FF1F3E23FF0D320CFF082D05FF1837
+      18FF122D13FF3A4F39FF0D290CFF083104FF0C3B0AFF002800FF032C06FF123A
+      17FF002305FF426144FF123013FFF8FFFEFFF4FBF6FFEFF3E8FFFFFFF8FFF8F5
+      F1FFFFFFFEFFF1F2F0FFFCFFF8FFF4FDE9FFF1FFE5FFF8FFF0FFF6FFF4FFECF3
+      EEFFF0F6F5FFF7FFF6FFF6FFF4FFF9F9FF00FFFDFFFFFFFCFEFFFFFAFDFFFFF4
+      FFFFFFFAFFFFFFFBFFFFFFFCFDFFFFFFF8FFFCFBEDFFFFFFF4FFF8FAF4FFFFF7
+      FFFFFFFBFFFFF7F2F4FFFFFEFAFFF3FFFBFFF4FFFBFFF9FFFDFFFFFDFDFFFFFA
+      FEFFFFFAFFFFF1FFFFFFECFFFFFFF8FBFFFFF5F6FFFFF6FCFFFFE5F3FFFFECFE
+      FFFFEFFDFFFFFBFBFFFFFFFAFFFFF6FFFCFFF5FFF9FFFAFFFDFFFFFFFEFFFFFC
+      FFFFFFFBFFFFF7FCFFFFF3FFFFFFFBFEFFFFF7F6FFFFF9FCFFFFFAFEFFFFF3FE
+      FFFFEFF8FCFFF5F5FBFFFFFDFFFFFFFFFEFFFDFEFCFFFFFFFEFFFFFEFEFFFFFB
+      FCFFFFFBFCFFFFFCFAFFFFFFFBFFFBFBF5FFFFFFFBFFFFFEF7FFFFFAF4FFFFFF
+      F9FFFFFFF9FFFFFFF9FFFBFFF8FFFFF8FAFFFFFAFCFFFFFAFBFFFFF4F4FFFFF1
+      F3FFFFF6F7FFFFF9F5FFFFFBF3FFFFFFF5FFFDFFF3FFFFFFF4FFFFFFF7FFFFF5
+      EDFFFEF6EFFFFFFFFBFFF8FCF6FF901E25FF89151AFF8D181BFF9A1D1FFFA81C
+      1DFFA61615FF9B1613FF7D261CFFFFFFEEFFF1FFF4FFFDFFF5FFF7F4EFFFFFFE
+      FFFFFFFCFFFFFFF9FF00FFF3FFFF8C1A1AFFFFE7E9FFFFEDF1FFAB0E12FFAF0D
+      12FFFFEDEEFFFFE7E5FF7E1E18FFFFFEF2FFFFFCF0FFFFFCF8FFFFF7F8FFFFFC
+      FFFFFFF9FF00FEF4FFFFFFFAFFFFFFDECFFFFFFAF0FFFFEAEAFFA41419FF9D15
+      1BFFFFEAEEFFFFF7F7FFFFD7D7FF771A21FF86151FFF9B1724FFFFA4AEFF5E28
+      28FFFFFFF8FFFFFFF8FFF5FDF2FFFFFFF4FFFFFAF1FFFFF1F5FF9E1721FF8E19
+      22FFFFF5F8FFFFF9F6FFFFFAFBFFFFEFFBFFA70D20FFBE1427FFFF94A1FFFFD3
+      D2FFFFFEF2FFFFFFF4FFF9FFF3FFFFFFFEFFFFFAFEFFFFEFFCFF8E0D1CFF831E
+      26FFFFF8F8FFFFFEF6FFFFFEF7FFFFF3F7FF99141EFFA81120FFFFE1ECFFFFFB
+      F9FFFEFEF8FFFFFFFCFFFDFEFAFFF6F8F8FFFFFAFEFFFFECF8FF9E1321FF891A
+      1EFFFFF4EDFFFFFFF0FFFFFFF1FFFFEFEBFFA41B1FFFA20E18FFFFEEF7FFFFFB
+      FBFFFCFDFBFFFFFEFFFFFCFBFDFFFFFFF5FFFFFBF1FFFFF0F2FFBB191EFFAB13
+      12FFFFF6EBFFFFFFE7FFFFFFE7FFFFF3EBFFB31012FFB5171EFFFFF0F5FFFFF1
+      F4FFFFFEFEFFFFFEFFFFFDFEFFFFFAFFF8FFFFFDF7FF7A1A20FF981520FF910E
+      19FF741119FFFFFAF7FFFFFBFBFF7C101DFF9A1022FF99162AFF791725FFFFF8
+      FFFFFFF2F4FFFFFEFFFFF5F5F5FFEDFEFFFFF7F8FFFFFFE9FFFF9D6D91FF965F
+      8CFF895B8FFF796298FF6D548CFF86548EFF9F5E95FF975683FFFFF0FFFFFFF2
+      FFFFFBFFFFFFFFFFFBFFFFFFF8FFE7F1FFFFF1FAFFFF515572FF504F76FF5950
+      82FF645892FF5D4F8FFF5C5092FF605796FF584B83FF665281FF5E5373FFF1FC
+      FFFFEFFEFFFFEFF3EDFFFFFFF8FFFFFAFFFF383544FF383F50FF313B4DFF3034
+      4DFF373854FF272242FF373656FF1E2947FF283751FF323D53FF243343FF2743
+      4AFFE7FEFFFFFAFCFDFFFFFDFFFFFFF9FF00F9F1FCFFF4FDFFFFEFFEFFFFEDF9
+      FFFFF6FCFFFFFBFAFFFFF6FBFFFFE8FEFFFFE1FFFFFFE4FDFFFFE4FFFFFFDDFF
+      FFFFE6FFFFFFFDFDFFFFFFF8FFFFF8FFFFFFF8FEFFFFF6F7FFFFFAF7FFFFF4EC
+      FFFFF8F3FFFFF3F2FFFFF6FAFFFFF4FBFFFFF0F6FFFFF4F9FFFFF0F4FFFFF4F7
+      FFFFF3F6FFFFEEEEFFFFF1F3FFFFECF3F0FFFAFFFFFFF4F7FFFFE0DFFFFFA39D
+      CEFFADA7D8FFF8F6FFFFF6FAFFFFB5B9CBFFA4A9BEFFA3A6C5FFF1F6FFFFE5EB
+      FFFFF1F6FFFFC7C4F6FFA7A1DAFFFFFFF7FFF5FAF8FFF4FAFFFFBCBDE9FF9E96
+      DDFFA49AE0FFF8F2FFFFF4F2FFFFF0F0FFFFADB1C9FFA1A2D4FFA1A5D8FFEAF8
+      FFFFCED6FBFFA79CE4FFA694EDFFFFFFF4FFFDFFFCFFE7EEFFFF8C90C3FF9B94
+      E9FF7D74C4FFF8F4FFFFFBFBFFFFFBFBFFFFA6A8C7FF6968B0FF6266B5FFCEDC
+      FFFF747DAFFF7369B5FF7561BAFFF9F7ECFFFCFEFEFFEFFAFFFF5E699BFF6B69
+      C2FFB0ACF7FFF1F4FFFFFDFFF9FFF8F8FEFFF4F3FFFF6462C2FF6A6ADCFF5E66
+      C4FF6B71BEFF6A67A5FFF2EAFFFFFFFFFCFFFAF9FFFFDEE6FFFF6974AEFF6367
+      B6FFCED1FFFFF8FEFFFFFBFFF6FFFBFCFFFFEFEBFFFF948CFFFF5A54E1FF5554
+      D2FF6366C8FFD7D9FFFFE7E9FFFFFCF5FCFFFBF6FFFFD8D6FFFF212371FF222D
+      67FFEAF6FFFFF6FDFFFFF3F7FCFFF8F8FFFFEAE3FFFF382AB1FF1004A4FF120B
+      9CFF0F0E7CFFDFE4FFFFF1FBFFFFFFFAFFFFF4ECFFFFB3A7FFFF18106DFF535B
+      90FFEAF7FFFFEEF5FFFFF6F7FFFFE9E3FFFF5E53A9FF1C118DFF241BA7FF413A
+      C1FF171481FF7B7FBAFFEAF3FFFFFAFAFFFFF4EFFFFF8A75DBFF1F0D78FF7C7A
+      B6FFEFF6FFFFF3F7FFFFF1EEFFFF6959B7FF261682FF28247DFFCBCDFFFFB6B4
+      FFFF1A1878FF28257AFFDCD9FFFFEEF4FFFFF4F3FFFF6A56B5FF2A147AFFB1AB
+      E4FFEFF1FFFFF0F4FFFF7875ADFF27177CFF201277FFC2C5FCFFEAF4FFFFEAEE
+      FFFF4A4C93FF1A146BFF8E88E7FFF4FFFCFFEAF0FFFF45377FFF2A1A68FFD2CE
+      F7FFF4F8FFFF8485ABFF252357FF231F61FFC0BEF9FFEFF8FFFFEEFCFFFFEDFA
+      FFFFC5CEF0FF16145AFF29237CFFF1FFF2FFF6FFFFFFE4E0FFFFF4EDFFFFF8F6
+      FFFFF6F9FFFFF0F2FFFFF4F4FFFFF3F5FFFFF3F7FFFFF2FEFFFFF3FFFFFFF1FF
+      FFFFE5EFFFFFF1F1FFFFEFECFFFFF9FFF5FFF6FDF8FFF6FCFFFFF4FAFFFFF6F8
+      FFFFEFF3FFFFFAFCFFFFF4F7FFFFF6F9FFFFF8FFFFFFF4FFFFFFEEFCFBFFF3FD
+      FFFFF3FBFFFFF6FAFFFFF5F6FFFFFFFFFBFFF4F8F3FFF2FDFBFFEFFAFFFFECF3
+      FFFFF6F9FFFFFDFCFFFFFFFDFFFFFFFFFEFFFDFFFEFFF0FCFEFFE9F6FEFFF1FA
+      FFFFF4F9FFFFF4F4FFFFFFFDFFFFFFFCFFFFF9F5FBFF4B545DFF323F4FFF3943
+      5BFF353854FF3E344BFF4F4153FF3F313CFF4E4853FF383E51FF414A65FF353C
+      5DFF363555FF453A54FF503E55FFFFF7FF00FFFAFFFFF3FAFFFFECFAFFFFEBF6
+      FFFFF4F6FFFFFFF4FFFFFFF1FFFFFFF8FFFFFFF9FFFFF4F7FFFFE5EEFFFFEFF4
+      FFFFF6F3FFFFFFF1FFFFFFF3FFFFFFFBFFFFFDF4FEFFFFFBFFFFFFFBFFFFFFFA
+      FFFFFFF5FDFFFFFCFFFFFFFDFFFFFDFBFFFFFDFDFFFFFBFEFFFFF7FAFFFFFFFE
+      FFFFFFFDFFFFFDF7FCFFFFFBFFFFFBF7FDFFFFFDFFFFFEF9FBFFFBF5F6FFFFFF
+      FCFFFFFFFBFFFFFFF6FFFFFFF5FFFFFFF7FFFFFFF3FFFFFFF4FFFFFFF5FFFFFF
+      F1FFFFFFF5FFFFFFF7FFFFFFF5FFF8FFFFFFF6FDF8FFFDFFF9FFFFFFF4FFFFFF
+      EEFFFFFFE4FFFFFFE3FFFFFFD9FFFFFFDCFFFFFFD6FFFFFFDAFFFFFFDBFFFFFF
+      D8FFFFFFD6FFFFFFDFFFFFFFE0FFF8FFFEFFF6FEF7FFFDFFF5FFFFFFEFFFFFFF
+      E5FF686B3DFF5E632CFF666E2FFF616A27FF656F29FF646B28FF646729FF7271
+      39FF726B3AFF695E32FF6D5F35FFF7F4F6FFFFFFFEFFFFFFF8FFFEFFEBFFFFFF
+      E4FF5C6A3AFFFFFFD9FFFBFFD3FFF9FFD2FFFBFFD5FFF5FFD3FFFFFFE2FFFFFF
+      E7FFFFFFE9FFFFFFF4FFFFFFF7FFFFFDFFFFFFFEFFFFF6F3EBFFFFFFF1FFFFFF
+      E9FF566133FFFFFFDAFF465D1FFF3E5719FF455E26FF485D30FFEEFFDDFFFFFF
+      F1FFFDFEF5FFFFFDFEFFFCF2F8FFF6F4FAFFFFFEFFFFFFFBF6FFFFFFF2FFFFFF
+      E9FF5D5B33FFFFFFDDFFFFFFDBFFFFFFDBFFFFFFD9FF4B562EFFFAFFE8FFFBFF
+      F4FFF6FEF7FFFBFFFFFFFAFEFFFFF6FFF9FFF4FFF3FFFBFFF2FFFDFFEBFFFFFF
+      E7FF626B40FF5D6536FF5A6533FF586734FFFDFFE2FF3E4E2CFFF8FFEEFFF6FF
+      F3FFF3FFF9FFF6FFFFFFF5FEFFFFE5FFE1FFE8FFE3FFE6FFDCFFEAFFDFFFECFF
+      DDFFE5FFD8FFE8FFDDFFE2FFDBFFE2FFDEFFE2FFE2FF315636FFECFFF2FFECFF
+      F4FFF6FFFEFFF7FCFFFFFBFDFFFF2E612FFF225523FF2D5E2CFF2A5928FF2B5A
+      29FF2F602EFF245424FF2B5C2EFF2C5C32FF35633FFF21492DFFE1FFEBFFEFFF
+      F7FFEDFDF2FFF8FFFBFFF5FCF7FFDBFFEEFFE1FFF2FFCEF2DCFFEBFFF1FFEFFF
+      F2FFE5FAE4FFF3FFF1FFF1FFEEFFF3FFF0FFE2FBE1FFEFFFEEFFE8FFE7FFD2EE
+      D0FFF0FFECFFF1FFEBFFEAFFE4FFE6FFF7FFDFFBEEFFE0F8ECFFE8FCF0FFF2FF
+      F5FFF6FFF6FFF5FFF4FFF8FFF4FFEBFEE9FFEFFFEDFFE8FFE7FFE1FFE1FFDDFD
+      DAFFD9FBD6FFE2FFDCFFE0FFDAFFECFCEBFFE9F9E8FFE7F4E4FFE1EFDDFFE2F2
+      E0FFE7FAE7FFE1F8E2FFD9F5DEFFE1FFE8FFC7ECD2FFD0F8DCFFD0F9DAFFD8FE
+      E0FFD8FDDDFFD6F8D9FFE7FFEAFF1F2919FF303A2AFF192312FF1F2B19FF222E
+      1AFF192A15FF2B402AFF112B14FF04210AFF0D2F17FF082A12FF062810FF0D29
+      15FF0A2511FF445D49FF132916FFEFFCF4FFEAF8EDFFF7FFF5FFEEF7EAFFF3FA
+      EBFFFDFFF4FFF8FFEFFFFBFFF4FFFAFFF4FFEBF8E8FFF8FFF7FFEEFAEEFFEFF7
+      F0FFEDF3EEFFFDFFFEFFF8F9F7FFF1FFFC00F4FFFCFFEEF9F1FFF9FFF6FFFDFF
+      F5FFF6F9EAFFFFFFF4FFFDFEEEFFFCFFF0FFFDFFF3FFF8FCF1FFF8FAF4FFFFFF
+      FEFFFFFAFCFFF0E6ECFFFFFBFFFFFAFFFF00FAFFFF00F2F7F6FFFBFFFEFFF3F6
+      F4FFFDFFFBFFFDFFFBFFF6FBF2FFFDFFF9FFF4F9F0FFFDFFFCFFFDFFFCFFFBFF
+      FFFFFBFFFFFFF5FAFBFFFAFFFF00F1F3FDFFFAFDFFFFFBFDFFFFEEF1F6FFFDFE
+      FFFFF5F7F8FFFDFFFFFFFDFFFFFFF8FAFAFFFDFFFFFFECEEEFFFFCFDFFFFF8FB
+      FFFFF6F8FFFFFAFCFFFFF9FBFFFFFAF7FFFFFAF7FFFFF9F5FFFFFBF8FFFFFBF6
+      FFFFFDF9FFFFFCF9FFFFF8F5FFFFFBF8FFFFF9F6FFFFFDF9FFFFF9F4FFFFFBF8
+      FFFFFBF8FFFFFAF7FFFFF9F6FFFF918DAAFF8A87A1FF8D88A3FF9692ABFF8C86
+      9DFF938EA3FF8D889DFF9893A8FF9590A5FF938EA3FF9690A7FF9690A7FF8C88
+      A1FF8B86A1FF8985A2FF8C88A5FF8D8D9FFFFAFAFFFFF9F7FFFFF5F4FFFFFAF7
+      FFFFFDFBFFFFFDFBFFFFF8F7FFFFF8F7FFFFFCFBFFFFFCFAFFFFF8F5FFFFFBFA
+      FFFFFBFAFFFF9393A5FF8B8B9DFF8D8E9CFFFAFBFFFFFBFBFFFFFBFCFFFFFCFB
+      FFFFFDFCFFFFFDFDFFFFF9F9FFFFFDFDFFFFFDFDFFFFF9F8FFFFFDFCFFFFFBFB
+      FFFFF2F2FEFFFAFBFFFF898A98FF90919FFFFAFBFFFF5C5C68FFF6F7FFFF7776
+      80FF62616AFF707076FF76767CFF6C6C72FF6D6D73FF6E6D76FF6C6B74FFF8F8
+      FFFFFBFBFFFFFAFBFFFF8B8C9AFF8B8C9AFFFAFBFFFFFBFBFFFFF9FAFFFFFDFC
+      FFFFFDFCFFFFF6F6FCFFFDFDFFFFFDFDFFFFFAFAFFFFFDFCFFFFFBFAFFFFFBFB
+      FFFFF9F9FFFFF8F9FFFF9192A0FF9697A5FFF2F3FFFF6E6E7AFFFBFCFFFF706F
+      79FF6A6972FF717177FF6E6E74FF707076FF65656BFF73727BFF717079FFFAFA
+      FFFFF7F7FFFFFAFBFFFF8A8B99FF838492FFFAFBFFFFFBFBFFFFF4F5FFFFFDFC
+      FFFFFDFCFFFFFBFBFFFFFDFDFFFFFCFCFFFFFDFDFFFFFDFCFFFFEFEEF7FFFBFB
+      FFFFFBFBFFFFF8F9FFFF9495A3FF8D8E9CFFFAFBFFFFFBFBFFFF6A6B75FF6C6B
+      75FFFDFCFFFF65656BFF6C6C72FFF8F8FEFFFDFDFFFFFDFCFFFFFDFCFFFFF7F7
+      FFFFFBFBFFFFF5F6FFFF8F909EFF9393A5FFF3F3FFFFFBF9FFFFF4F3FFFFFDFA
+      FFFFFDFBFFFFFBF9FFFFFDFCFFFFFDFCFFFFF8F7FFFFFBF9FFFFF9F6FFFFFBFA
+      FFFFFAF9FFFFF1F1FFFF9696A8FF8985A2FF9A97B1FF8C87A2FF9A96AFFF8D87
+      9EFF8D889DFF9A95AAFF8D889DFF8F8A9FFF938EA3FF9B95ACFF8F89A0FF9692
+      ABFF8B86A1FF9E9AB7FF837F9CFFFAF7FFFFF2EFFFFFFBF7FFFFF8F5FFFFFDF8
+      FFFFF9F5FFFFFBF8FFFFF9F6FFFFF8F5FFFFFDFAFFFFFAF6FFFFFAF5FFFFFBF8
+      FFFFF5F2FFFFFAF7FFFFFAF7FFFFFAFCFFFFF8FBFFFFFBFDFFFFF8FBFFFFFDFE
+      FFFFFDFFFFFFFBFDFDFFFDFFFFFFFDFFFFFFFDFFFFFFF6F8F9FFFDFEFFFFFBFE
+      FFFFFBFDFFFFF8FAFFFFF4F6FFFFFAFFFF00F6FBFCFFFBFFFFFFFAFFFDFFFDFF
+      FEFFFAFEF8FFF7FBF5FFFDFFF9FFFAFFF6FFFDFFF9FFFDFFFCFFFDFFFCFFF8FD
+      FCFFF4F9F8FFFAFFFF00FAFFFF00
+    }
+  end
+  object SQLQuery1: TSQLQuery
+    AutoCalcFields = False
+    ReadOnly = False
+    Params = <>
+    left = 552
+    top = 264
+  end
+  object SQLQuery2: TSQLQuery
+    AutoCalcFields = False
+    ReadOnly = False
+    Params = <>
+    left = 632
+    top = 280
+  end
+end

+ 430 - 0
tablemanage.lrs

@@ -0,0 +1,430 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmTableManage','FORMDATA',[
+  'TPF0'#14'TfmTableManage'#13'fmTableManage'#4'Left'#3#214#0#6'Height'#3#155#1
+  +#3'Top'#3#130#1#5'Width'#3#12#3#13'ActiveControl'#7#12'PageControl1'#7'Ancho'
+  +'rs'#11#5'akTop'#6'akLeft'#7'akRight'#0#7'Caption'#6#16'Table Management'#12
+  +'ClientHeight'#3#155#1#11'ClientWidth'#3#12#3#7'OnClose'#7#9'FormClose'#8'Po'
+  +'sition'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#12'TPageControl'
+  +#12'PageControl1'#4'Left'#2#0#6'Height'#3#155#1#3'Top'#2#0#5'Width'#3#12#3#10
+  +'ActivePage'#7#8'tsFields'#5'Align'#7#8'alClient'#6'Images'#7#10'ImageList1'
+  +#8'TabIndex'#2#0#8'TabOrder'#2#0#0#9'TTabSheet'#8'tsFields'#7'Caption'#6#6'F'
+  +'ields'#12'ClientHeight'#3'|'#1#11'ClientWidth'#3#8#3#0#11'TStringGrid'#8'sg'
+  +'Fields'#4'Left'#2#0#6'Height'#3'Q'#1#3'Top'#2#0#5'Width'#3#8#3#5'Align'#7#5
+  +'alTop'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#8'ColCount'
+  +#2#7#7'Columns'#14#1#11'ButtonStyle'#7#17'cbsCheckboxColumn'#5'Color'#4#234
+  +#219#219#0#7'MaxSize'#2'2'#8'ReadOnly'#9#13'Title.Caption'#6#5'P-Key'#16'Tit'
+  +'le.Font.Color'#4#229'TT'#0#17'Title.Font.Height'#2#245#16'Title.Font.Style'
+  +#11#6'fsBold'#0#18'Title.PrefixOption'#7#6'poNone'#5'Width'#2'2'#0#1#13'Titl'
+  +'e.Caption'#6#10'Field Name'#18'Title.PrefixOption'#7#6'poNone'#5'Width'#3
+  +#130#0#0#1#13'Title.Caption'#6#9'Data Type'#18'Title.PrefixOption'#7#6'poNon'
+  +'e'#5'Width'#2'x'#0#1#13'Title.Caption'#6#4'Size'#16'Title.Font.Color'#4#21
+  +'-'#254#0#16'Title.Font.Style'#11#6'fsBold'#0#18'Title.PrefixOption'#7#6'poN'
+  +'one'#0#1#11'ButtonStyle'#7#17'cbsCheckboxColumn'#13'Title.Caption'#6#10'All'
+  +'ow Null'#18'Title.PrefixOption'#7#6'poNone'#5'Width'#2'Z'#0#1#13'Title.Capt'
+  +'ion'#6#13'Default Value'#18'Title.PrefixOption'#7#6'poNone'#5'Width'#2'x'#0
+  +#1#13'Title.Caption'#6#11'Description'#18'Title.PrefixOption'#7#6'poNone'#5
+  +'Width'#3#200#0#0#0#10'FixedColor'#4#207#218#221#0#9'FixedCols'#2#0#4'Flat'#9
+  +#7'Options'#11#15'goFixedVertLine'#15'goFixedHorzLine'#10'goVertLine'#10'goH'
+  +'orzLine'#11'goColSizing'#11'goColMoving'#11'goRowSelect'#14'goSmoothScroll'
+  +#0#8'RowCount'#2#4#8'TabOrder'#2#0#15'TitleFont.Style'#11#6'fsBold'#0#14'Use'
+  +'XORFeatures'#9#0#0#7'TBitBtn'#6'bbEdit'#4'Left'#2#14#6'Height'#2#30#3'Top'#3
+  +'V'#1#5'Width'#2'K'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#4'Edi'
+  +'t'#5'Color'#4#219#242#247#0#7'OnClick'#7#11'bbEditClick'#8'TabOrder'#2#1#0#0
+  +#7'TBitBtn'#5'bbNew'#4'Left'#2'h'#6'Height'#2#30#3'Top'#3'V'#1#5'Width'#2'K'
+  +#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#3'New'#5'Color'#4#219#242
+  +#247#0#7'OnClick'#7#10'bbNewClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#6'edDrop'#4
+  +'Left'#3#240#0#6'Height'#2#30#3'Top'#3'V'#1#5'Width'#2'K'#7'Anchors'#11#6'ak'
+  +'Left'#8'akBottom'#0#7'Caption'#6#4'Drop'#5'Color'#4#219#242#247#0#4'Kind'#7
+  +#8'bkIgnore'#7'OnClick'#7#11'edDropClick'#8'TabOrder'#2#3#0#0#7'TBitBtn'#9'b'
+  +'bRefresh'#4'Left'#3#160#2#6'Height'#2#30#3'Top'#3'V'#1#5'Width'#2'^'#7'Anch'
+  +'ors'#11#7'akRight'#8'akBottom'#0#7'Caption'#6#7'Refresh'#5'Color'#4#219#242
+  +#247#0#4'Kind'#7#7'bkRetry'#7'OnClick'#7#14'bbRefreshClick'#8'TabOrder'#2#4#0
+  +#0#0#9'TTabSheet'#9'tsIndices'#7'Caption'#6#7'Indices'#12'ClientHeight'#3'|'
+  +#1#11'ClientWidth'#3#8#3#10'ImageIndex'#2#2#0#7'TBitBtn'#16'bbRefreshIndices'
+  +#4'Left'#3#134#2#6'Height'#2#30#3'Top'#2#3#5'Width'#2'X'#7'Anchors'#11#5'akT'
+  +'op'#7'akRight'#0#7'Caption'#6#7'Refresh'#5'Color'#4#219#242#247#0#4'Kind'#7
+  +#7'bkRetry'#7'OnClick'#7#21'bbRefreshIndicesClick'#8'TabOrder'#2#0#0#0#11'TS'
+  +'tringGrid'#9'sgIndices'#4'Left'#2#255#6'Height'#3#142#0#3'Top'#2#254#5'Widt'
+  +'h'#3'}'#2#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#7'Columns'#14#1#13
+  +'Title.Caption'#6#10'Index Name'#18'Title.PrefixOption'#7#6'poNone'#5'Width'
+  +#3#140#0#0#1#11'ButtonStyle'#7#17'cbsCheckboxColumn'#13'Title.Caption'#6#6'U'
+  +'nique'#18'Title.PrefixOption'#7#6'poNone'#0#1#11'ButtonStyle'#7#11'cbsPickL'
+  +'ist'#16'PickList.Strings'#1#6#3'Asc'#6#4'Desc'#0#13'Title.Caption'#6#4'Sort'
+  +#18'Title.PrefixOption'#7#6'poNone'#0#1#13'Title.Caption'#6#9'On Fields'#18
+  +'Title.PrefixOption'#7#6'poNone'#5'Width'#3#140#0#0#1#11'ButtonStyle'#7#17'c'
+  +'bsCheckboxColumn'#8'ReadOnly'#9#13'Title.Caption'#6#11'Primary Key'#11'Titl'
+  +'e.Color'#4#244#244#190#0#18'Title.PrefixOption'#7#6'poNone'#5'Width'#2'Z'#0
+  +#0#10'FixedColor'#4#207#218#221#0#9'FixedCols'#2#0#7'Options'#11#15'goFixedV'
+  +'ertLine'#15'goFixedHorzLine'#10'goVertLine'#10'goHorzLine'#13'goRangeSelect'
+  +#11'goColSizing'#11'goRowSelect'#14'goSmoothScroll'#0#8'TabOrder'#2#1#0#0#7
+  +'TBitBtn'#6'bbDrop'#4'Left'#3#134#2#6'Height'#2#30#3'Top'#2'3'#5'Width'#2'X'
+  +#7'Anchors'#11#5'akTop'#7'akRight'#0#7'Caption'#6#4'Drop'#5'Color'#4#219#242
+  +#247#0#7'OnClick'#7#11'bbDropClick'#8'TabOrder'#2#2#0#0#9'TGroupBox'#9'Group'
+  +'Box1'#4'Left'#2#254#6'Height'#3#236#0#3'Top'#3#139#0#5'Width'#3':'#2#7'Anch'
+  +'ors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#7'Caption'#6#6'Manage'
+  +#12'ClientHeight'#3#217#0#11'ClientWidth'#3'6'#2#8'TabOrder'#2#3#0#6'TLabel'
+  +#6'Label2'#4'Left'#2#6#6'Height'#2#18#3'Top'#2#14#5'Width'#3#174#0#7'Caption'
+  ,#6#26'Create new index on fields'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4
+  +'Left'#3#254#0#6'Height'#2#18#3'Top'#2''''#5'Width'#2'o'#7'Caption'#6#14'New'
+  +' index name'#11'ParentColor'#8#0#0#13'TCheckListBox'#9'clbFields'#4'Left'#2
+  +#6#6'Height'#3#152#0#3'Top'#2'/'#5'Width'#3#232#0#10'ItemHeight'#2#0#8'TabOr'
+  +'der'#2#0#8'TopIndex'#2#255#0#0#9'TCheckBox'#8'cxUnique'#4'Left'#3#254#0#6'H'
+  +'eight'#2#22#3'Top'#2'_'#5'Width'#2'F'#7'Caption'#6#6'Unique'#8'TabOrder'#2#1
+  +#0#0#7'TBitBtn'#13'bbCreateIndex'#4'Left'#3#254#0#6'Height'#2#30#3'Top'#3#167
+  +#0#5'Width'#2'|'#7'Caption'#6#12'Create Index'#5'Color'#4#219#242#247#0#7'De'
+  +'fault'#9#4'Kind'#7#4'bkOK'#11'ModalResult'#2#1#7'OnClick'#7#18'bbCreateInde'
+  +'xClick'#8'TabOrder'#2#2#0#0#5'TEdit'#11'edIndexName'#4'Left'#3#254#0#6'Heig'
+  +'ht'#2#27#3'Top'#2'?'#5'Width'#2'x'#8'TabOrder'#2#3#0#0#9'TComboBox'#10'cbSo'
+  +'rtType'#4'Left'#3#254#0#6'Height'#2#31#3'Top'#2#127#5'Width'#2'x'#12'AutoDr'
+  +'opDown'#9#10'ItemHeight'#2#0#9'ItemIndex'#2#0#13'Items.Strings'#1#6#9'Ascen'
+  +'ding'#6#10'Descending'#0#11'ParentColor'#9#5'Style'#7#14'csDropDownList'#8
+  +'TabOrder'#2#4#4'Text'#6#9'Ascending'#0#0#9'TComboBox'#11'cbIndexType'#4'Lef'
+  +'t'#3#254#0#6'Height'#2#31#3'Top'#2#1#5'Width'#3#148#0#5'Color'#4#219#242#247
+  +#0#10'ItemHeight'#2#0#9'ItemIndex'#2#1#13'Items.Strings'#1#6#11'Primary Key'
+  +#6#15'Secondary Index'#0#8'OnChange'#7#17'cbIndexTypeChange'#5'Style'#7#14'c'
+  +'sDropDownList'#8'TabOrder'#2#5#4'Text'#6#15'Secondary Index'#0#0#0#0#9'TTab'
+  +'Sheet'#13'tsConstraints'#7'Caption'#6#11'Constraints'#12'ClientHeight'#3'|'
+  +#1#11'ClientWidth'#3#8#3#10'ImageIndex'#2#3#0#7'TBitBtn'#19'bbRefreshConstra'
+  +'int'#4'Left'#3#136#2#6'Height'#2#30#3'Top'#3'W'#1#5'Width'#2'c'#7'Anchors'
+  +#11#7'akRight'#8'akBottom'#0#7'Caption'#6#7'Refresh'#5'Color'#4#219#242#247#0
+  +#4'Kind'#7#7'bkRetry'#7'OnClick'#7#24'bbRefreshConstraintClick'#8'TabOrder'#2
+  +#0#0#0#11'TStringGrid'#13'sgConstraints'#4'Left'#2#255#6'Height'#3'M'#1#3'To'
+  +'p'#2#255#5'Width'#3#248#2#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akB'
+  +'ottom'#0#8'ColCount'#2#7#7'Columns'#14#1#13'Title.Caption'#6#15'Constraint '
+  +'Name'#18'Title.PrefixOption'#7#6'poNone'#5'Width'#2'x'#0#1#13'Title.Caption'
+  +#6#8'Key name'#18'Title.PrefixOption'#7#6'poNone'#5'Width'#2'd'#0#1#13'Title'
+  +'.Caption'#6#9'On Fields'#18'Title.PrefixOption'#7#6'poNone'#5'Width'#2'x'#0
+  +#1#13'Title.Caption'#6#13'Foreign Table'#18'Title.PrefixOption'#7#6'poNone'#5
+  +'Width'#2'd'#0#1#13'Title.Caption'#6#11'Foriegn Key'#18'Title.PrefixOption'#7
+  +#6'poNone'#5'Width'#2'd'#0#1#13'Title.Caption'#6#11'Update Rule'#18'Title.Pr'
+  +'efixOption'#7#6'poNone'#5'Width'#2'd'#0#1#13'Title.Caption'#6#11'Delete Rul'
+  +'e'#18'Title.PrefixOption'#7#6'poNone'#5'Width'#2'd'#0#0#10'FixedColor'#4#207
+  +#218#221#0#9'FixedCols'#2#0#7'Options'#11#15'goFixedVertLine'#15'goFixedHorz'
+  +'Line'#10'goVertLine'#10'goHorzLine'#13'goRangeSelect'#11'goColSizing'#11'go'
+  +'RowSelect'#14'goSmoothScroll'#0#8'RowCount'#2#2#8'TabOrder'#2#1#0#0#7'TBitB'
+  +'tn'#15'bbNewConstraint'#4'Left'#2#6#6'Height'#2#30#3'Top'#3'W'#1#5'Width'#2
+  +'w'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#14'New Constraint'#5
+  +'Color'#4#219#242#247#0#7'OnClick'#7#20'bbNewConstraintClick'#8'TabOrder'#2#2
+  +#0#0#7'TBitBtn'#16'bbDropConstraint'#4'Left'#3#144#0#6'Height'#2#30#3'Top'#3
+  +'W'#1#5'Width'#2'K'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#4'Dro'
+  +'p'#5'Color'#4#219#242#247#0#4'Kind'#7#8'bkIgnore'#7'OnClick'#7#21'bbDropCon'
+  +'straintClick'#8'TabOrder'#2#3#0#0#0#9'TTabSheet'#10'tsTriggers'#7'Caption'#6
+  +#8'Triggers'#12'ClientHeight'#3'|'#1#11'ClientWidth'#3#8#3#10'ImageIndex'#2#1
+  +#0#11'TStringGrid'#10'sgTriggers'#4'Left'#2#0#6'Height'#3'D'#1#3'Top'#2#255#5
+  +'Width'#3#246#2#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#8
+  +'ColCount'#2#2#7'Columns'#14#1#13'Title.Caption'#6#12'Trigger Name'#18'Title'
+  +'.PrefixOption'#7#6'poNone'#5'Width'#3#160#0#0#1#11'ButtonStyle'#7#17'cbsChe'
+  +'ckboxColumn'#13'Title.Caption'#6#6'Active'#18'Title.PrefixOption'#7#6'poNon'
+  +'e'#5'Width'#2'd'#0#0#10'FixedColor'#4#207#218#221#0#9'FixedCols'#2#0#7'Opti'
+  +'ons'#11#15'goFixedVertLine'#15'goFixedHorzLine'#10'goVertLine'#10'goHorzLin'
+  +'e'#13'goRangeSelect'#11'goColSizing'#11'goRowSelect'#14'goSmoothScroll'#0#8
+  +'RowCount'#2#2#8'TabOrder'#2#0#0#0#7'TBitBtn'#17'bbRefreshTriggers'#4'Left'#3
+  +#150#2#6'Height'#2#30#3'Top'#3'Q'#1#5'Width'#2'W'#7'Anchors'#11#7'akRight'#8
+  +'akBottom'#0#7'Caption'#6#7'Refresh'#5'Color'#4#219#242#247#0#4'Kind'#7#7'bk'
+  +'Retry'#7'OnClick'#7#22'bbRefreshTriggersClick'#8'TabOrder'#2#1#0#0#7'TBitBt'
+  +'n'#12'bbNewTrigger'#4'Left'#2#7#6'Height'#2#30#3'Top'#3'O'#1#5'Width'#2'W'#7
+  +'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#7'Add New'#5'Color'#4#219
+  +#242#247#0#7'OnClick'#7#17'bbNewTriggerClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'
+  +#13'bbEditTrigger'#4'Left'#2'n'#6'Height'#2#30#3'Top'#3'O'#1#5'Width'#2'K'#7
+  +'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#4'Edit'#5'Color'#4#219#242
+  +#247#0#7'OnClick'#7#18'bbEditTriggerClick'#8'TabOrder'#2#3#0#0#7'TBitBtn'#13
+  ,'bbDropTrigger'#4'Left'#3#200#0#6'Height'#2#30#3'Top'#3'O'#1#5'Width'#2'K'#7
+  +'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#4'Drop'#5'Color'#4#219#242
+  +#247#0#4'Kind'#7#8'bkIgnore'#7'OnClick'#7#18'bbDropTriggerClick'#8'TabOrder'
+  +#2#4#0#0#0#9'TTabSheet'#13'tsPermissions'#7'Caption'#6#11'Permissions'#12'Cl'
+  +'ientHeight'#3'|'#1#11'ClientWidth'#3#8#3#10'ImageIndex'#2#4#0#11'TStringGri'
+  +'d'#13'sgPermissions'#4'Left'#2#0#6'Height'#3'D'#1#3'Top'#2#0#5'Width'#3#246
+  +#2#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#8'ColCount'#2#12
+  +#7'Columns'#14#1#13'Title.Caption'#6#9'User/Role'#18'Title.PrefixOption'#7#6
+  +'poNone'#5'Width'#3#160#0#0#1#13'Title.Caption'#6#4'Type'#18'Title.PrefixOpt'
+  +'ion'#7#6'poNone'#0#1#11'ButtonStyle'#7#17'cbsCheckboxColumn'#8'ReadOnly'#9
+  +#13'Title.Caption'#6#6'Select'#18'Title.PrefixOption'#7#6'poNone'#5'Width'#2
+  +'d'#0#1#11'ButtonStyle'#7#17'cbsCheckboxColumn'#13'Title.Caption'#6#6'Insert'
+  +#18'Title.PrefixOption'#7#6'poNone'#0#1#11'ButtonStyle'#7#17'cbsCheckboxColu'
+  +'mn'#13'Title.Caption'#6#6'Update'#18'Title.PrefixOption'#7#6'poNone'#0#1#11
+  +'ButtonStyle'#7#17'cbsCheckboxColumn'#13'Title.Caption'#6#6'Delete'#18'Title'
+  +'.PrefixOption'#7#6'poNone'#0#1#11'ButtonStyle'#7#17'cbsCheckboxColumn'#13'T'
+  +'itle.Caption'#6#10'References'#18'Title.PrefixOption'#7#6'poNone'#5'Width'#2
+  +'P'#0#1#11'ButtonStyle'#7#17'cbsCheckboxColumn'#13'Title.Caption'#6#12'Grant'
+  +' Select'#18'Title.PrefixOption'#7#6'poNone'#5'Width'#2'Z'#0#1#11'ButtonStyl'
+  +'e'#7#17'cbsCheckboxColumn'#13'Title.Caption'#6#12'Grant Insert'#18'Title.Pr'
+  +'efixOption'#7#6'poNone'#5'Width'#2'Z'#0#1#11'ButtonStyle'#7#17'cbsCheckboxC'
+  +'olumn'#13'Title.Caption'#6#12'Grant Update'#18'Title.PrefixOption'#7#6'poNo'
+  +'ne'#5'Width'#2'd'#0#1#11'ButtonStyle'#7#17'cbsCheckboxColumn'#13'Title.Capt'
+  +'ion'#6#12'Grant Delete'#18'Title.PrefixOption'#7#6'poNone'#5'Width'#2'Z'#0#1
+  +#11'ButtonStyle'#7#17'cbsCheckboxColumn'#13'Title.Caption'#6#16'Grant Refere'
+  +'nces'#18'Title.PrefixOption'#7#6'poNone'#5'Width'#2'n'#0#0#10'FixedColor'#4
+  +#207#218#221#0#9'FixedCols'#2#0#7'Options'#11#15'goFixedVertLine'#15'goFixed'
+  +'HorzLine'#10'goVertLine'#10'goHorzLine'#13'goRangeSelect'#11'goColSizing'#11
+  +'goRowSelect'#14'goSmoothScroll'#0#8'RowCount'#2#2#8'TabOrder'#2#0#0#0#7'TBi'
+  +'tBtn'#16'edEditPermission'#4'Left'#2#6#6'Height'#2#30#3'Top'#3'S'#1#5'Width'
+  +#2'K'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#4'Edit'#5'Color'#4
+  +#219#242#247#0#7'OnClick'#7#21'edEditPermissionClick'#8'TabOrder'#2#1#0#0#7
+  +'TBitBtn'#20'bbRefreshPermissions'#4'Left'#3#150#2#6'Height'#2#30#3'Top'#3'S'
+  +#1#5'Width'#2'W'#7'Anchors'#11#7'akRight'#8'akBottom'#0#7'Caption'#6#7'Refre'
+  +'sh'#5'Color'#4#219#242#247#0#4'Kind'#7#7'bkRetry'#7'OnClick'#7#25'bbRefresh'
+  +'PermissionsClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#9'bbAddUser'#4'Left'#2'Z'#6
+  +'Height'#2#30#3'Top'#3'S'#1#5'Width'#2'}'#7'Anchors'#11#6'akLeft'#8'akBottom'
+  +#0#7'Caption'#6#15'Add User / Role'#5'Color'#4#219#242#247#0#7'OnClick'#7#14
+  +'bbAddUserClick'#8'TabOrder'#2#3#0#0#0#0#10'TImageList'#10'ImageList1'#12'Dr'
+  +'awingStyle'#7#7'dsFocus'#4'left'#3#208#1#3'top'#3#240#0#6'Bitmap'#10#14#20#0
+  +#0'Li'#5#0#0#0#16#0#0#0#16#0#0#0#239#252#254#255#244#254#254#255#255#253#252
+  +#255#255#253#252#255#255#250#255#255#255#247#254#255#255#252#255#255#255#253
+  +#253#255#255#253#248#255#255#254#244#255#249#254#245#255#252#254#254#255#255
+  +#248#255#255#255#246#255#255#249#241#252#255#255#251#255#255#244#255#255#255
+  +#248#255#255#255#239#243#238#255#255#255#252#255#255#250#252#255#249#243#248
+  +#255#255#253#255#255#255#255#255#255#250#253#244#255#253#255#247#255#248#255
+  +#246#255#253#255#254#255#247#243#255#255#251#244#255#255#255#248#255#255#252
+  +#246#251#255#245#250#253#255#239#247#246#255#243#255#245#255#248#255#247#255
+  +#251#255#252#255#255#255#255#255#251#247#253#255#246#246#246#255#247#255#246
+  +#255#237#253#235#255#248#255#248#255#244#251#246#255#243#248#249#255#251#254
+  +#255#255#253#249#255#255#254#246#253#255#249#253#254#255#246#255#251#255#236
+  +#255#241#255#220#254#224#255#234#255#237#255#236#250#239#255#255#254#255#255
+  +#249#255#250#255#231#255#236#255#220#255#226#255#238#255#242#255#238#255#242
+  +#255#237#255#243#255#236#254#241#255#252#254#254#255#253#249#255#255#242#249
+  +#244#255#232#254#235#255#144#198#155#255#140#203#153#255#144#191#152#255#160
+  +#190#165#255#234#245#237#255#238#255#243#255#137#191#148#255#154#216#168#255
+  +#145#183#155#255#184#216#191#255#190#235#196#255#208#248#213#255#244#255#248
+  +#255#238#243#242#255#253#255#251#255#226#252#228#255#138#206#151#255#187#255
+  +#202#255#193#254#204#255#224#255#231#255#240#251#243#255#238#255#244#255#128
+  +#197#146#255#187#255#206#255#202#247#214#255#206#247#215#255#162#223#167#255
+  +#183#239#188#255#227#249#231#255#251#255#255#255#255#251#248#255#233#254#232
+  +#255#128#199#142#255#179#255#197#255#197#255#209#255#221#255#226#255#251#255
+  +#252#255#229#247#234#255'v'#193#139#255#186#255#209#255#223#255#238#255#214
+  +#255#223#255#196#255#201#255#160#219#161#255#235#254#237#255#253#252#255#255
+  ,#255#246#250#255#248#255#245#255#13'Q'#26#255#0'U'#17#255#12'L'#24#255#30'@"'
+  +#255#255#254#255#255#243#253#247#255#14'U#'#255#169#250#193#255#224#255#238
+  +#255#226#255#232#255#200#255#203#255#24'R'#24#255#239#251#239#255#255#250#255
+  +#255#255#239#254#255#255#255#251#255#7'@'#19#255#187#255#205#255#220#255#230
+  +#255#226#248#229#255#255#248#255#255#254#253#255#255#7'C'#26#255#197#255#218
+  +#255#228#255#239#255#227#252#232#255#200#254#201#255#27'I'#26#255#255#255#254
+  +#255#255#238#255#255#255#244#255#255#255#255#251#255#30'U('#255#191#255#206
+  +#255#209#255#219#255#230#252#233#255#255#245#255#255#255#254#255#255#28'V-'
+  +#255#185#254#204#255#229#255#239#255#225#251#228#255#21'K'#22#255#28'J'#27
+  +#255#252#255#251#255#255#249#255#255#255#255#254#255#235#251#233#255#13'H'#21
+  +#255#196#255#208#255#214#255#221#255#236#255#238#255#251#255#250#255#233#250
+  +#237#255#6'H'#21#255#16'Z '#255#25'D#'#255#29'E"'#255'h'#165'k'#255#210#255
+  +#211#255#243#255#244#255#248#251#249#255#243#255#242#255#237#255#240#255#197
+  +#255#203#255#197#255#205#255#208#255#214#255#229#255#232#255#244#255#245#255
+  +#239#255#241#255#203#255#213#255#194#255#205#255#212#255#219#255#218#255#224
+  +#255#214#255#219#255#209#255#212#255#230#255#232#255#240#255#240#255#236#255
+  +#240#255#219#255#222#255#209#255#214#255#209#255#214#255#205#254#208#255#224
+  +#255#228#255#216#243#217#255#220#254#223#255#206#255#209#255#198#255#203#255
+  +#209#255#214#255#209#255#214#255#205#255#211#255#209#255#216#255#214#252#216
+  +#255#230#255#231#255#10'%'#17#255#31'>#'#255#13'2'#12#255#8'-'#5#255#24'7'#24
+  +#255#18'-'#19#255':O9'#255#13')'#12#255#8'1'#4#255#12';'#10#255#0'('#0#255#3
+  +','#6#255#18':'#23#255#0'#'#5#255'BaD'#255#18'0'#19#255#248#255#254#255#244
+  +#251#246#255#239#243#232#255#255#255#248#255#248#245#241#255#255#255#254#255
+  +#241#242#240#255#252#255#248#255#244#253#233#255#241#255#229#255#248#255#240
+  +#255#246#255#244#255#236#243#238#255#240#246#245#255#247#255#246#255#246#255
+  +#244#255#249#249#255#0#255#253#255#255#255#252#254#255#255#250#253#255#255
+  +#244#255#255#255#250#255#255#255#251#255#255#255#252#253#255#255#255#248#255
+  +#252#251#237#255#255#255#244#255#248#250#244#255#255#247#255#255#255#251#255
+  +#255#247#242#244#255#255#254#250#255#243#255#251#255#244#255#251#255#249#255
+  +#253#255#255#253#253#255#255#250#254#255#255#250#255#255#241#255#255#255#236
+  +#255#255#255#248#251#255#255#245#246#255#255#246#252#255#255#229#243#255#255
+  +#236#254#255#255#239#253#255#255#251#251#255#255#255#250#255#255#246#255#252
+  +#255#245#255#249#255#250#255#253#255#255#255#254#255#255#252#255#255#255#251
+  +#255#255#247#252#255#255#243#255#255#255#251#254#255#255#247#246#255#255#249
+  +#252#255#255#250#254#255#255#243#254#255#255#239#248#252#255#245#245#251#255
+  +#255#253#255#255#255#255#254#255#253#254#252#255#255#255#254#255#255#254#254
+  +#255#255#251#252#255#255#251#252#255#255#252#250#255#255#255#251#255#251#251
+  +#245#255#255#255#251#255#255#254#247#255#255#250#244#255#255#255#249#255#255
+  +#255#249#255#255#255#249#255#251#255#248#255#255#248#250#255#255#250#252#255
+  +#255#250#251#255#255#244#244#255#255#241#243#255#255#246#247#255#255#249#245
+  +#255#255#251#243#255#255#255#245#255#253#255#243#255#255#255#244#255#255#255
+  +#247#255#255#245#237#255#254#246#239#255#255#255#251#255#248#252#246#255#144
+  +#30'%'#255#137#21#26#255#141#24#27#255#154#29#31#255#168#28#29#255#166#22#21
+  +#255#155#22#19#255'}&'#28#255#255#255#238#255#241#255#244#255#253#255#245#255
+  +#247#244#239#255#255#254#255#255#255#252#255#255#255#249#255#0#255#243#255
+  +#255#140#26#26#255#255#231#233#255#255#237#241#255#171#14#18#255#175#13#18
+  +#255#255#237#238#255#255#231#229#255'~'#30#24#255#255#254#242#255#255#252#240
+  +#255#255#252#248#255#255#247#248#255#255#252#255#255#255#249#255#0#254#244
+  +#255#255#255#250#255#255#255#222#207#255#255#250#240#255#255#234#234#255#164
+  +#20#25#255#157#21#27#255#255#234#238#255#255#247#247#255#255#215#215#255'w'
+  +#26'!'#255#134#21#31#255#155#23'$'#255#255#164#174#255'^(('#255#255#255#248
+  +#255#255#255#248#255#245#253#242#255#255#255#244#255#255#250#241#255#255#241
+  +#245#255#158#23'!'#255#142#25'"'#255#255#245#248#255#255#249#246#255#255#250
+  +#251#255#255#239#251#255#167#13' '#255#190#20''''#255#255#148#161#255#255#211
+  +#210#255#255#254#242#255#255#255#244#255#249#255#243#255#255#255#254#255#255
+  +#250#254#255#255#239#252#255#142#13#28#255#131#30'&'#255#255#248#248#255#255
+  +#254#246#255#255#254#247#255#255#243#247#255#153#20#30#255#168#17' '#255#255
+  +#225#236#255#255#251#249#255#254#254#248#255#255#255#252#255#253#254#250#255
+  +#246#248#248#255#255#250#254#255#255#236#248#255#158#19'!'#255#137#26#30#255
+  +#255#244#237#255#255#255#240#255#255#255#241#255#255#239#235#255#164#27#31
+  +#255#162#14#24#255#255#238#247#255#255#251#251#255#252#253#251#255#255#254
+  +#255#255#252#251#253#255#255#255#245#255#255#251#241#255#255#240#242#255#187
+  +#25#30#255#171#19#18#255#255#246#235#255#255#255#231#255#255#255#231#255#255
+  +#243#235#255#179#16#18#255#181#23#30#255#255#240#245#255#255#241#244#255#255
+  ,#254#254#255#255#254#255#255#253#254#255#255#250#255#248#255#255#253#247#255
+  +'z'#26' '#255#152#21' '#255#145#14#25#255't'#17#25#255#255#250#247#255#255
+  +#251#251#255'|'#16#29#255#154#16'"'#255#153#22'*'#255'y'#23'%'#255#255#248
+  +#255#255#255#242#244#255#255#254#255#255#245#245#245#255#237#254#255#255#247
+  +#248#255#255#255#233#255#255#157'm'#145#255#150'_'#140#255#137'['#143#255'yb'
+  +#152#255'mT'#140#255#134'T'#142#255#159'^'#149#255#151'V'#131#255#255#240#255
+  +#255#255#242#255#255#251#255#255#255#255#255#251#255#255#255#248#255#231#241
+  +#255#255#241#250#255#255'QUr'#255'POv'#255'YP'#130#255'dX'#146#255']O'#143
+  +#255'\P'#146#255'`W'#150#255'XK'#131#255'fR'#129#255'^Ss'#255#241#252#255#255
+  +#239#254#255#255#239#243#237#255#255#255#248#255#255#250#255#255'85D'#255'8?'
+  +'P'#255'1;M'#255'04M'#255'78T'#255'''"B'#255'76V'#255#30')G'#255'(7Q'#255'2='
+  +'S'#255'$3C'#255'''CJ'#255#231#254#255#255#250#252#253#255#255#253#255#255
+  +#255#249#255#0#249#241#252#255#244#253#255#255#239#254#255#255#237#249#255
+  +#255#246#252#255#255#251#250#255#255#246#251#255#255#232#254#255#255#225#255
+  +#255#255#228#253#255#255#228#255#255#255#221#255#255#255#230#255#255#255#253
+  +#253#255#255#255#248#255#255#248#255#255#255#248#254#255#255#246#247#255#255
+  +#250#247#255#255#244#236#255#255#248#243#255#255#243#242#255#255#246#250#255
+  +#255#244#251#255#255#240#246#255#255#244#249#255#255#240#244#255#255#244#247
+  +#255#255#243#246#255#255#238#238#255#255#241#243#255#255#236#243#240#255#250
+  +#255#255#255#244#247#255#255#224#223#255#255#163#157#206#255#173#167#216#255
+  +#248#246#255#255#246#250#255#255#181#185#203#255#164#169#190#255#163#166#197
+  +#255#241#246#255#255#229#235#255#255#241#246#255#255#199#196#246#255#167#161
+  +#218#255#255#255#247#255#245#250#248#255#244#250#255#255#188#189#233#255#158
+  +#150#221#255#164#154#224#255#248#242#255#255#244#242#255#255#240#240#255#255
+  +#173#177#201#255#161#162#212#255#161#165#216#255#234#248#255#255#206#214#251
+  +#255#167#156#228#255#166#148#237#255#255#255#244#255#253#255#252#255#231#238
+  +#255#255#140#144#195#255#155#148#233#255'}t'#196#255#248#244#255#255#251#251
+  +#255#255#251#251#255#255#166#168#199#255'ih'#176#255'bf'#181#255#206#220#255
+  +#255't}'#175#255'si'#181#255'ua'#186#255#249#247#236#255#252#254#254#255#239
+  +#250#255#255'^i'#155#255'ki'#194#255#176#172#247#255#241#244#255#255#253#255
+  +#249#255#248#248#254#255#244#243#255#255'db'#194#255'jj'#220#255'^f'#196#255
+  +'kq'#190#255'jg'#165#255#242#234#255#255#255#255#252#255#250#249#255#255#222
+  +#230#255#255'it'#174#255'cg'#182#255#206#209#255#255#248#254#255#255#251#255
+  +#246#255#251#252#255#255#239#235#255#255#148#140#255#255'ZT'#225#255'UT'#210
+  +#255'cf'#200#255#215#217#255#255#231#233#255#255#252#245#252#255#251#246#255
+  +#255#216#214#255#255'!#q'#255'"-g'#255#234#246#255#255#246#253#255#255#243
+  +#247#252#255#248#248#255#255#234#227#255#255'8*'#177#255#16#4#164#255#18#11
+  +#156#255#15#14'|'#255#223#228#255#255#241#251#255#255#255#250#255#255#244#236
+  +#255#255#179#167#255#255#24#16'm'#255'S['#144#255#234#247#255#255#238#245#255
+  +#255#246#247#255#255#233#227#255#255'^S'#169#255#28#17#141#255'$'#27#167#255
+  +'A:'#193#255#23#20#129#255'{'#127#186#255#234#243#255#255#250#250#255#255#244
+  +#239#255#255#138'u'#219#255#31#13'x'#255'|z'#182#255#239#246#255#255#243#247
+  +#255#255#241#238#255#255'iY'#183#255'&'#22#130#255'($}'#255#203#205#255#255
+  +#182#180#255#255#26#24'x'#255'(%z'#255#220#217#255#255#238#244#255#255#244
+  +#243#255#255'jV'#181#255'*'#20'z'#255#177#171#228#255#239#241#255#255#240#244
+  +#255#255'xu'#173#255''''#23'|'#255' '#18'w'#255#194#197#252#255#234#244#255
+  +#255#234#238#255#255'JL'#147#255#26#20'k'#255#142#136#231#255#244#255#252#255
+  +#234#240#255#255'E7'#127#255'*'#26'h'#255#210#206#247#255#244#248#255#255#132
+  +#133#171#255'%#W'#255'#'#31'a'#255#192#190#249#255#239#248#255#255#238#252
+  +#255#255#237#250#255#255#197#206#240#255#22#20'Z'#255')#|'#255#241#255#242
+  +#255#246#255#255#255#228#224#255#255#244#237#255#255#248#246#255#255#246#249
+  +#255#255#240#242#255#255#244#244#255#255#243#245#255#255#243#247#255#255#242
+  +#254#255#255#243#255#255#255#241#255#255#255#229#239#255#255#241#241#255#255
+  +#239#236#255#255#249#255#245#255#246#253#248#255#246#252#255#255#244#250#255
+  +#255#246#248#255#255#239#243#255#255#250#252#255#255#244#247#255#255#246#249
+  +#255#255#248#255#255#255#244#255#255#255#238#252#251#255#243#253#255#255#243
+  +#251#255#255#246#250#255#255#245#246#255#255#255#255#251#255#244#248#243#255
+  +#242#253#251#255#239#250#255#255#236#243#255#255#246#249#255#255#253#252#255
+  +#255#255#253#255#255#255#255#254#255#253#255#254#255#240#252#254#255#233#246
+  +#254#255#241#250#255#255#244#249#255#255#244#244#255#255#255#253#255#255#255
+  +#252#255#255#249#245#251#255'KT]'#255'2?O'#255'9C['#255'58T'#255'>4K'#255'OA'
+  +'S'#255'?1<'#255'NHS'#255'8>Q'#255'AJe'#255'5<]'#255'65U'#255'E:T'#255'P>U'
+  +#255#255#247#255#0#255#250#255#255#243#250#255#255#236#250#255#255#235#246
+  +#255#255#244#246#255#255#255#244#255#255#255#241#255#255#255#248#255#255#255
+  ,#249#255#255#244#247#255#255#229#238#255#255#239#244#255#255#246#243#255#255
+  +#255#241#255#255#255#243#255#255#255#251#255#255#253#244#254#255#255#251#255
+  +#255#255#251#255#255#255#250#255#255#255#245#253#255#255#252#255#255#255#253
+  +#255#255#253#251#255#255#253#253#255#255#251#254#255#255#247#250#255#255#255
+  +#254#255#255#255#253#255#255#253#247#252#255#255#251#255#255#251#247#253#255
+  +#255#253#255#255#254#249#251#255#251#245#246#255#255#255#252#255#255#255#251
+  +#255#255#255#246#255#255#255#245#255#255#255#247#255#255#255#243#255#255#255
+  +#244#255#255#255#245#255#255#255#241#255#255#255#245#255#255#255#247#255#255
+  +#255#245#255#248#255#255#255#246#253#248#255#253#255#249#255#255#255#244#255
+  +#255#255#238#255#255#255#228#255#255#255#227#255#255#255#217#255#255#255#220
+  +#255#255#255#214#255#255#255#218#255#255#255#219#255#255#255#216#255#255#255
+  +#214#255#255#255#223#255#255#255#224#255#248#255#254#255#246#254#247#255#253
+  +#255#245#255#255#255#239#255#255#255#229#255'hk='#255'^c,'#255'fn/'#255'aj'''
+  +#255'eo)'#255'dk('#255'dg)'#255'rq9'#255'rk:'#255'i^2'#255'm_5'#255#247#244
+  +#246#255#255#255#254#255#255#255#248#255#254#255#235#255#255#255#228#255'\j:'
+  +#255#255#255#217#255#251#255#211#255#249#255#210#255#251#255#213#255#245#255
+  +#211#255#255#255#226#255#255#255#231#255#255#255#233#255#255#255#244#255#255
+  +#255#247#255#255#253#255#255#255#254#255#255#246#243#235#255#255#255#241#255
+  +#255#255#233#255'Va3'#255#255#255#218#255'F]'#31#255'>W'#25#255'E^&'#255'H]0'
+  +#255#238#255#221#255#255#255#241#255#253#254#245#255#255#253#254#255#252#242
+  +#248#255#246#244#250#255#255#254#255#255#255#251#246#255#255#255#242#255#255
+  +#255#233#255'][3'#255#255#255#221#255#255#255#219#255#255#255#219#255#255#255
+  +#217#255'KV.'#255#250#255#232#255#251#255#244#255#246#254#247#255#251#255#255
+  +#255#250#254#255#255#246#255#249#255#244#255#243#255#251#255#242#255#253#255
+  +#235#255#255#255#231#255'bk@'#255']e6'#255'Ze3'#255'Xg4'#255#253#255#226#255
+  +'>N,'#255#248#255#238#255#246#255#243#255#243#255#249#255#246#255#255#255#245
+  +#254#255#255#229#255#225#255#232#255#227#255#230#255#220#255#234#255#223#255
+  +#236#255#221#255#229#255#216#255#232#255#221#255#226#255#219#255#226#255#222
+  +#255#226#255#226#255'1V6'#255#236#255#242#255#236#255#244#255#246#255#254#255
+  +#247#252#255#255#251#253#255#255'.a/'#255'"U#'#255'-^,'#255'*Y('#255'+Z)'#255
+  +'/`.'#255'$T$'#255'+\.'#255',\2'#255'5c?'#255'!I-'#255#225#255#235#255#239
+  +#255#247#255#237#253#242#255#248#255#251#255#245#252#247#255#219#255#238#255
+  +#225#255#242#255#206#242#220#255#235#255#241#255#239#255#242#255#229#250#228
+  +#255#243#255#241#255#241#255#238#255#243#255#240#255#226#251#225#255#239#255
+  +#238#255#232#255#231#255#210#238#208#255#240#255#236#255#241#255#235#255#234
+  +#255#228#255#230#255#247#255#223#251#238#255#224#248#236#255#232#252#240#255
+  +#242#255#245#255#246#255#246#255#245#255#244#255#248#255#244#255#235#254#233
+  +#255#239#255#237#255#232#255#231#255#225#255#225#255#221#253#218#255#217#251
+  +#214#255#226#255#220#255#224#255#218#255#236#252#235#255#233#249#232#255#231
+  +#244#228#255#225#239#221#255#226#242#224#255#231#250#231#255#225#248#226#255
+  +#217#245#222#255#225#255#232#255#199#236#210#255#208#248#220#255#208#249#218
+  +#255#216#254#224#255#216#253#221#255#214#248#217#255#231#255#234#255#31')'#25
+  +#255'0:*'#255#25'#'#18#255#31'+'#25#255'".'#26#255#25'*'#21#255'+@*'#255#17
+  +'+'#20#255#4'!'#10#255#13'/'#23#255#8'*'#18#255#6'('#16#255#13')'#21#255#10
+  +'%'#17#255'D]I'#255#19')'#22#255#239#252#244#255#234#248#237#255#247#255#245
+  +#255#238#247#234#255#243#250#235#255#253#255#244#255#248#255#239#255#251#255
+  +#244#255#250#255#244#255#235#248#232#255#248#255#247#255#238#250#238#255#239
+  +#247#240#255#237#243#238#255#253#255#254#255#248#249#247#255#241#255#252#0
+  +#244#255#252#255#238#249#241#255#249#255#246#255#253#255#245#255#246#249#234
+  +#255#255#255#244#255#253#254#238#255#252#255#240#255#253#255#243#255#248#252
+  +#241#255#248#250#244#255#255#255#254#255#255#250#252#255#240#230#236#255#255
+  +#251#255#255#250#255#255#0#250#255#255#0#242#247#246#255#251#255#254#255#243
+  +#246#244#255#253#255#251#255#253#255#251#255#246#251#242#255#253#255#249#255
+  +#244#249#240#255#253#255#252#255#253#255#252#255#251#255#255#255#251#255#255
+  +#255#245#250#251#255#250#255#255#0#241#243#253#255#250#253#255#255#251#253
+  +#255#255#238#241#246#255#253#254#255#255#245#247#248#255#253#255#255#255#253
+  +#255#255#255#248#250#250#255#253#255#255#255#236#238#239#255#252#253#255#255
+  +#248#251#255#255#246#248#255#255#250#252#255#255#249#251#255#255#250#247#255
+  +#255#250#247#255#255#249#245#255#255#251#248#255#255#251#246#255#255#253#249
+  +#255#255#252#249#255#255#248#245#255#255#251#248#255#255#249#246#255#255#253
+  +#249#255#255#249#244#255#255#251#248#255#255#251#248#255#255#250#247#255#255
+  +#249#246#255#255#145#141#170#255#138#135#161#255#141#136#163#255#150#146#171
+  +#255#140#134#157#255#147#142#163#255#141#136#157#255#152#147#168#255#149#144
+  +#165#255#147#142#163#255#150#144#167#255#150#144#167#255#140#136#161#255#139
+  ,#134#161#255#137#133#162#255#140#136#165#255#141#141#159#255#250#250#255#255
+  +#249#247#255#255#245#244#255#255#250#247#255#255#253#251#255#255#253#251#255
+  +#255#248#247#255#255#248#247#255#255#252#251#255#255#252#250#255#255#248#245
+  +#255#255#251#250#255#255#251#250#255#255#147#147#165#255#139#139#157#255#141
+  +#142#156#255#250#251#255#255#251#251#255#255#251#252#255#255#252#251#255#255
+  +#253#252#255#255#253#253#255#255#249#249#255#255#253#253#255#255#253#253#255
+  +#255#249#248#255#255#253#252#255#255#251#251#255#255#242#242#254#255#250#251
+  +#255#255#137#138#152#255#144#145#159#255#250#251#255#255'\\h'#255#246#247#255
+  +#255'wv'#128#255'baj'#255'ppv'#255'vv|'#255'llr'#255'mms'#255'nmv'#255'lkt'
+  +#255#248#248#255#255#251#251#255#255#250#251#255#255#139#140#154#255#139#140
+  +#154#255#250#251#255#255#251#251#255#255#249#250#255#255#253#252#255#255#253
+  +#252#255#255#246#246#252#255#253#253#255#255#253#253#255#255#250#250#255#255
+  +#253#252#255#255#251#250#255#255#251#251#255#255#249#249#255#255#248#249#255
+  +#255#145#146#160#255#150#151#165#255#242#243#255#255'nnz'#255#251#252#255#255
+  +'poy'#255'jir'#255'qqw'#255'nnt'#255'ppv'#255'eek'#255'sr{'#255'qpy'#255#250
+  +#250#255#255#247#247#255#255#250#251#255#255#138#139#153#255#131#132#146#255
+  +#250#251#255#255#251#251#255#255#244#245#255#255#253#252#255#255#253#252#255
+  +#255#251#251#255#255#253#253#255#255#252#252#255#255#253#253#255#255#253#252
+  +#255#255#239#238#247#255#251#251#255#255#251#251#255#255#248#249#255#255#148
+  +#149#163#255#141#142#156#255#250#251#255#255#251#251#255#255'jku'#255'lku'
+  +#255#253#252#255#255'eek'#255'llr'#255#248#248#254#255#253#253#255#255#253
+  +#252#255#255#253#252#255#255#247#247#255#255#251#251#255#255#245#246#255#255
+  +#143#144#158#255#147#147#165#255#243#243#255#255#251#249#255#255#244#243#255
+  +#255#253#250#255#255#253#251#255#255#251#249#255#255#253#252#255#255#253#252
+  +#255#255#248#247#255#255#251#249#255#255#249#246#255#255#251#250#255#255#250
+  +#249#255#255#241#241#255#255#150#150#168#255#137#133#162#255#154#151#177#255
+  +#140#135#162#255#154#150#175#255#141#135#158#255#141#136#157#255#154#149#170
+  +#255#141#136#157#255#143#138#159#255#147#142#163#255#155#149#172#255#143#137
+  +#160#255#150#146#171#255#139#134#161#255#158#154#183#255#131#127#156#255#250
+  +#247#255#255#242#239#255#255#251#247#255#255#248#245#255#255#253#248#255#255
+  +#249#245#255#255#251#248#255#255#249#246#255#255#248#245#255#255#253#250#255
+  +#255#250#246#255#255#250#245#255#255#251#248#255#255#245#242#255#255#250#247
+  +#255#255#250#247#255#255#250#252#255#255#248#251#255#255#251#253#255#255#248
+  +#251#255#255#253#254#255#255#253#255#255#255#251#253#253#255#253#255#255#255
+  +#253#255#255#255#253#255#255#255#246#248#249#255#253#254#255#255#251#254#255
+  +#255#251#253#255#255#248#250#255#255#244#246#255#255#250#255#255#0#246#251
+  +#252#255#251#255#255#255#250#255#253#255#253#255#254#255#250#254#248#255#247
+  +#251#245#255#253#255#249#255#250#255#246#255#253#255#249#255#253#255#252#255
+  +#253#255#252#255#248#253#252#255#244#249#248#255#250#255#255#0#250#255#255#0
+  +#0#0#9'TSQLQuery'#9'SQLQuery1'#14'AutoCalcFields'#8#8'ReadOnly'#8#6'Params'
+  +#14#0#4'left'#3'('#2#3'top'#3#8#1#0#0#9'TSQLQuery'#9'SQLQuery2'#14'AutoCalcF'
+  +'ields'#8#8'ReadOnly'#8#6'Params'#14#0#4'left'#3'x'#2#3'top'#3#24#1#0#0#0
+]);

+ 519 - 0
tablemanage.pas

@@ -0,0 +1,519 @@
+unit TableManage;
+
+{$mode objfpc}
+
+interface
+
+uses
+  Classes, SysUtils, sqldb, IBConnection, FileUtil, LResources, Forms, Controls,
+  Graphics, Dialogs, ComCtrls, Grids, Buttons, StdCtrls, CheckLst;
+
+type
+
+  { TfmTableManage }
+
+  TfmTableManage = class(TForm)
+    bbCreateIndex: TBitBtn;
+    bbDrop: TBitBtn;
+    bbDropConstraint: TBitBtn;
+    bbEdit: TBitBtn;
+    bbNew: TBitBtn;
+    bbNewConstraint: TBitBtn;
+    bbRefresh: TBitBtn;
+    bbRefreshConstraint: TBitBtn;
+    bbRefreshIndices: TBitBtn;
+    bbRefreshTriggers: TBitBtn;
+    bbNewTrigger: TBitBtn;
+    bbEditTrigger: TBitBtn;
+    bbDropTrigger: TBitBtn;
+    bbRefreshPermissions: TBitBtn;
+    bbAddUser: TBitBtn;
+    edEditPermission: TBitBtn;
+    cbIndexType: TComboBox;
+    cbSortType: TComboBox;
+    clbFields: TCheckListBox;
+    cxUnique: TCheckBox;
+    edDrop: TBitBtn;
+    edIndexName: TEdit;
+    GroupBox1: TGroupBox;
+    ImageList1: TImageList;
+    Label2: TLabel;
+    Label3: TLabel;
+    PageControl1: TPageControl;
+    sgTriggers: TStringGrid;
+    sgPermissions: TStringGrid;
+    SQLQuery1: TSQLQuery;
+    SQLQuery2: TSQLQuery;
+    sgFields: TStringGrid;
+    sgIndices: TStringGrid;
+    sgConstraints: TStringGrid;
+    tsPermissions: TTabSheet;
+    tsTriggers: TTabSheet;
+    tsIndices: TTabSheet;
+    tsConstraints: TTabSheet;
+    tsFields: TTabSheet;
+    procedure bbAddUserClick(Sender: TObject);
+    procedure bbCreateIndexClick(Sender: TObject);
+    procedure bbDropClick(Sender: TObject);
+    procedure bbDropConstraintClick(Sender: TObject);
+    procedure bbDropTriggerClick(Sender: TObject);
+    procedure bbEditClick(Sender: TObject);
+    procedure bbEditTriggerClick(Sender: TObject);
+    procedure bbNewClick(Sender: TObject);
+    procedure bbNewConstraintClick(Sender: TObject);
+    procedure bbNewTriggerClick(Sender: TObject);
+    procedure bbRefreshClick(Sender: TObject);
+    procedure bbRefreshConstraintClick(Sender: TObject);
+    procedure bbRefreshIndicesClick(Sender: TObject);
+    procedure bbRefreshPermissionsClick(Sender: TObject);
+    procedure bbRefreshTriggersClick(Sender: TObject);
+    procedure cbIndexTypeChange(Sender: TObject);
+    procedure edDropClick(Sender: TObject);
+    procedure edEditPermissionClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
+  private
+    fdbIndex: Integer;
+    fTableName: string;
+    ibConnection: TIBConnection;
+    sqlTrans: TSQLTransaction;
+  public
+    PKeyName, ConstraintName: string;
+    procedure Init(dbIndex: Integer; TableName: string);
+    procedure FillConstraints(dbIndex: Integer);
+    procedure ViewTriggers;
+    procedure FillPermissions;
+  end;
+
+var
+  fmTableManage: TfmTableManage;
+
+implementation
+
+{ TfmTableManage }
+
+uses NewEditField, Main, QueryWindow, SysTables, NewConstraint, PermissionManage;
+
+procedure TfmTableManage.FormClose(Sender: TObject;
+  var CloseAction: TCloseAction);
+begin
+  CloseAction:= caFree;
+end;
+
+
+procedure TfmTableManage.bbEditClick(Sender: TObject);
+var
+  fmNewEditField: TfmNewEditField;
+  FieldName, FieldType, DefaultValue, Description: string;
+  FieldOrder, FieldSize: Integer;
+  AllowNull: Boolean;
+begin
+  fmNewEditField:= TfmNewEditField.Create(nil);
+  with sgFields, fmNewEditField do
+  begin
+    FieldName:= Cells[1, Row];
+    FieldType:= Cells[2, Row];
+    FieldSize:= StrtoInt(Cells[3, Row]);
+    AllowNull:= Boolean(StrToInt(Cells[4, Row]));
+    DefaultValue:= Cells[5, Row];
+    Description:= Cells[6, Row];
+    FieldOrder:= Row;
+    fmNewEditField.Init(fdbIndex, fTableName, foEdit, FieldName, FieldType, DefaultValue, Description, FieldSize,
+      FieldOrder, AllowNull, bbRefresh);
+
+    Caption:= 'Edit field: ' + OldFieldName;
+
+    fmNewEditField.Show;
+  end;
+end;
+
+procedure TfmTableManage.bbEditTriggerClick(Sender: TObject);
+var
+  ATriggerName: string;
+  List: TStringList;
+begin
+  if sgTriggers.RowCount > 1 then
+  begin
+    List:= TStringList.Create;
+    ATriggerName:= sgTriggers.Cells[0, sgTriggers.Row];
+    dmSysTables.ScriptTrigger(fdbIndex, ATriggerName, List);
+    fmMain.ShowCompleteQueryWindow(fdbIndex, 'Edit Trigger ', List.Text, bbRefreshTriggers.OnClick);
+    List.Free;
+  end;
+
+end;
+
+procedure TfmTableManage.bbDropClick(Sender: TObject);
+begin
+  with sgIndices do
+  if RowCount > 1 then
+    if MessageDlg('Are you sure you want to drop index: ' + Cells[0, Row], mtConfirmation,
+      [mbYes, mbNo], 0) = mrYes then
+      begin
+        if Cells[0, Row] = PKeyName then // Delete primary key
+          fmMain.ShowCompleteQueryWindow(fdbIndex,  'Drop Primary Key on Table: ' + fTableName,
+            'alter table ' + fTableName + ' DROP constraint ' + ConstraintName, bbRefreshIndices.OnClick)
+        else // Delete secondary key
+          fmMain.ShowCompleteQueryWindow(fdbIndex, 'Drop Secondary Index on table: ' + fTableName,
+            'DROP INDEX ' + Cells[0, Row], bbRefreshIndices.OnClick);
+
+      end;
+end;
+
+procedure TfmTableManage.bbDropConstraintClick(Sender: TObject);
+var
+  QWindow: TfmQueryWindow;
+  ConstName: string;
+begin
+  if sgConstraints.Row > 0 then
+  begin
+    ConstName:= sgConstraints.Cells[0, sgConstraints.Row];
+    if MessageDlg('Are you sure you want to drop ' + ConstName, mtConfirmation, [mbYes, mbNo], 0) = mrYes then
+    begin
+      QWindow:= fmMain.ShowQueryWindow(fdbIndex, 'drop constrain: ' + ConstName);
+      QWindow.meQuery.Lines.Text:= 'ALTER TABLE ' + fTableName + ' DROP CONSTRAINT ' + ConstName;
+      fmMain.Show;
+      QWindow.OnCommit:= bbRefreshConstraint.OnClick;
+    end;
+  end;
+end;
+
+procedure TfmTableManage.bbDropTriggerClick(Sender: TObject);
+var
+  ATriggerName: string;
+begin
+  if (sgTriggers.RowCount > 1) and
+    (MessageDlg('Are You sure to drop this trigger', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
+  begin
+    ATriggerName:= sgTriggers.Cells[0, sgTriggers.Row];
+      fmMain.ShowCompleteQueryWindow(fdbIndex, 'Drop Trigger : ' + ATriggerName,
+        'drop trigger ' + ATriggerName, bbRefreshTriggers.OnClick);
+
+  end;
+end;
+
+procedure TfmTableManage.bbCreateIndexClick(Sender: TObject);
+var
+  Fields: string;
+  i: Integer;
+  QWindow: TfmQueryWindow;
+  FirstLine: string;
+begin
+  Fields:= '';
+  for i:= 0 to clbFields.Count - 1 do
+    if clbFields.Checked[i] then
+      Fields:= Fields + Trim(clbFields.Items[i]) + ',';
+  Delete(Fields, Length(Fields), 1);
+
+  if Trim(Fields) = '' then
+    MessageDlg('Error', 'Your should select one field at least', mtError, [mbOk], 0)
+  else
+  if Trim(edIndexName.Text) = '' then
+    MessageDlg('Error', 'Your should enter new index name', mtError, [mbOk], 0)
+  else
+  begin
+    QWindow:= fmMain.ShowQueryWindow(fdbIndex, 'Create new index');
+    QWindow.meQuery.Lines.Clear;
+
+    if cbIndexType.ItemIndex = 0 then // primary key
+    begin
+      QWindow.meQuery.Lines.Text:= 'alter table ' + fTableName + #13#10 +
+      'add constraint ' + edIndexName.Text + #13#10 +
+      'primary key (' + Fields + ')';
+    end
+    else    // Secondary index
+    begin
+      FirstLine:= 'create ';
+      if cxUnique.Checked then
+        FirstLine:= FirstLine + 'unique ';
+      FirstLine:= FirstLine + cbSortType.Text + ' index ' + edIndexName.Text;
+
+
+      QWindow.meQuery.Lines.Text:= FirstLine + #13+#10 + 'on ' + fTableName + #13#10 + Fields;
+    end;
+    QWindow.OnCommit:= bbRefreshIndices.OnClick;
+
+    QWindow.Show;
+  end;
+
+end;
+
+procedure TfmTableManage.bbAddUserClick(Sender: TObject);
+var
+  fmPermissions: TfmPermissionManage;
+begin
+  fmPermissions:= TfmPermissionManage.Create(nil);
+  fmPermissions.Init(fdbIndex, fTableName, '', 1, bbRefreshPermissions.OnClick);
+  fmPermissions.Show;
+end;
+
+procedure TfmTableManage.bbNewClick(Sender: TObject);
+var
+  fmNewEditField: TfmNewEditField;
+begin
+  fmNewEditField:= TfmNewEditField.Create(nil);
+  with fmNewEditField do
+  begin
+    Init(fdbIndex, fTableName, foNew, '', '', '', '', 0, 0, False, bbRefresh);
+    Caption:= 'Add new field on Table: ' + fTableName;
+    Show;
+  end;
+end;
+
+procedure TfmTableManage.bbNewConstraintClick(Sender: TObject);
+var
+  Count: Integer;
+  FieldsList: TStringList;
+begin
+  // Get current fields
+  FieldsList:= TStringList.Create;
+  fmMain.GetFields(fdbIndex, fTableName, FieldsList);
+  fmNewConstraint.clxOnFields.Clear;
+  fmNewConstraint.clxOnFields.Items.AddStrings(FieldsList);
+  FieldsList.Free;
+  fmMain.SQLQuery1.Close;
+  fmNewConstraint.edNewName.Text:= 'FK_' + fTableName + '_' + IntToStr(sgConstraints.RowCount);
+
+  // Foriegn tables
+  fmNewConstraint.cbTables.Items.CommaText:= dmSysTables.GetDBObjectNames(fdbIndex, 1, Count);
+  fmNewConstraint.DatabaseIndex:= fdbIndex;
+
+  fmNewConstraint.laTable.Caption:= fTableName;
+  fmNewConstraint.Caption:= 'New Constraint for : ' + fTableName;
+  if fmNewConstraint.ShowModal = mrOK then
+  begin
+    Hide;
+    fmNewConstraint.QWindow.OnCommit:= bbRefreshConstraint.OnClick;
+  end;
+end;
+
+procedure TfmTableManage.bbNewTriggerClick(Sender: TObject);
+begin
+  if fmMain.CreateNewTrigger(fdbIndex, fTableName, bbRefreshTriggers.OnClick) then
+    Hide;
+end;
+
+procedure TfmTableManage.bbRefreshClick(Sender: TObject);
+begin
+  fmMain.ViewTableFields(fTableName, fdbIndex, sgFields);
+  Show;
+end;
+
+procedure TfmTableManage.bbRefreshConstraintClick(Sender: TObject);
+begin
+  SQLTrans.Commit;
+  fmMain.FillAndShowConstraintsForm(Self, fTableName, fdbIndex);
+  Show;
+end;
+
+procedure TfmTableManage.bbRefreshIndicesClick(Sender: TObject);
+begin
+  fmMain.ShowIndicesManagement(Self, fdbIndex, fTableName);
+  Show;
+end;
+
+procedure TfmTableManage.bbRefreshPermissionsClick(Sender: TObject);
+begin
+  FillPermissions;
+  Show;
+end;
+
+procedure TfmTableManage.bbRefreshTriggersClick(Sender: TObject);
+begin
+  SQLTrans.Commit;
+  ViewTriggers;
+  Show;
+end;
+
+procedure TfmTableManage.cbIndexTypeChange(Sender: TObject);
+begin
+  case cbIndexType.ItemIndex of
+    0: edIndexName.Text:= 'PK_' + fTableName + '_1';
+    1: edIndexName.Text:= 'IX_' + fTableName + '_' + IntToStr(sgIndices.RowCount);
+  end;
+end;
+
+procedure TfmTableManage.edDropClick(Sender: TObject);
+begin
+  if MessageDlg('Are you sure you want to delete the field: ' + sgFields.Cells[1, sgFields.Row] +
+    ' with its data', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
+    begin
+      fmMain.ShowCompleteQueryWindow(fdbIndex, 'Drop field', 'ALTER TABLE ' + fTableName + ' DROP ' +
+        sgFields.Cells[1, sgFields.Row], @bbRefreshClick);
+    end;
+end;
+
+procedure TfmTableManage.edEditPermissionClick(Sender: TObject);
+var
+  fmPermissions: TfmPermissionManage;
+  UserType: Integer;
+begin
+  if sgPermissions.Row > 0 then
+  begin
+    if sgPermissions.Cells[1, sgPermissions.Row] = 'User' then
+      UserType:= 1
+    else
+      UserType:= 2;
+    fmPermissions:= TfmPermissionManage.Create(nil);
+    fmPermissions.Init(fdbIndex, fTableName, sgPermissions.Cells[0, sgPermissions.Row], UserType);
+    fmPermissions.Show;
+  end
+  else
+    ShowMessage('There is no selected user/role');
+end;
+
+
+procedure TfmTableManage.Init(dbIndex: Integer; TableName: string);
+begin
+  try
+    fdbIndex:= dbIndex;
+    fTableName:= TableName;
+    with fmMain do
+    begin
+      ibConnection:= RegisteredDatabases[dbIndex].IBConnection;
+      ibConnection.Close;
+      sqlTrans:= RegisteredDatabases[dbIndex].SQLTrans;
+      ibConnection.Transaction:= sqlTrans;
+    end;
+    SQLQuery1.Close;
+    SQLQuery1.DataBase:= ibConnection;
+    SQLQuery2.Close;
+    SQLQuery2.DataBase:= ibConnection;
+
+  except
+    on e: exception do
+    begin
+      MessageDlg('Error while initalizing Table Management: ' + e.Message, mtError, [mbOk], 0);
+    end;
+  end;
+end;
+
+procedure TfmTableManage.FillConstraints(dbIndex: Integer);
+var
+  IndexFields: string;
+begin
+  SQLQuery1.First;
+  fdbIndex:= dbIndex;
+  sgConstraints.RowCount:= 1;
+  with sgConstraints do
+  while not SQLQuery1.EOF do
+  begin
+    RowCount:= RowCount + 1;
+    Cells[0, RowCount - 1]:= SQLQuery1.Fields[0].AsString;
+    Cells[1, RowCount - 1]:= SQLQuery1.Fields[1].AsString;
+    Cells[2, RowCount - 1]:= SQLQuery1.Fields[3].AsString;
+    Cells[3, RowCount - 1]:= SQLQuery1.Fields[4].AsString;
+    Cells[4, RowCount - 1]:= dmSysTables.GetConstraintForiegnKeyFields(SQLQuery1.Fields[5].AsString, SQLQuery2);
+
+    Cells[5, RowCount - 1]:= SQLQuery1.Fields[6].AsString;
+    Cells[6, RowCount - 1]:= SQLQuery1.Fields[7].AsString;
+    SQLQuery1.Next;
+  end;
+  SQLQuery1.Close;
+end;
+
+procedure TfmTableManage.ViewTriggers;
+begin
+  SQLQuery1.Close;
+  SQLQuery1.SQL.Text:= 'SELECT RDB$Trigger_Name, RDB$Trigger_Inactive FROM RDB$TRIGGERS WHERE RDB$SYSTEM_FLAG=0 ' +
+    'and RDB$Relation_Name = ''' + fTableName + '''';
+  SQLQuery1.Open;
+  sgTriggers.RowCount:= 1;
+  with sgTriggers, SQLQuery1 do
+  while not EOF do
+  begin
+    RowCount:= RowCount + 1;
+    Cells[0, RowCount - 1]:= SQLQuery1.Fields[0].AsString;
+    if SQLQuery1.Fields[1].AsString = '1' then
+      Cells[1, RowCount - 1]:= '0'
+    else
+      Cells[1, RowCount - 1]:= '1';
+    Next;
+  end;
+  SQLQuery1.Close;
+end;
+
+procedure TfmTableManage.FillPermissions;
+var
+  UsersList: TStringList;
+  i: Integer;
+  UserName: string;
+  ObjType: Integer;
+  Permissions: string;
+begin
+  UsersList:= TStringList.Create;
+  UsersList.CommaText:= dmSysTables.GetDBUsers(fdbIndex, fTableName);
+  sgPermissions.RowCount:= UsersList.Count + 1;
+  for i:= 0 to UsersList.Count - 1 do
+  begin
+    UserName:= UsersList[i];
+    if Pos('<R>', UserName) = 1 then
+      begin
+        sgPermissions.Cells[1, i + 1]:= 'Role';
+        Delete(UserName, 1, 3);
+      end
+    else
+      sgPermissions.Cells[1, i + 1]:= 'User';
+
+    sgPermissions.Cells[0, i + 1]:= UserName;
+
+    // Permissions
+    Permissions:= dmSysTables.GetObjectUserPermission(fdbIndex, fTableName, UserName, ObjType);
+
+    if Pos('S', Permissions) > 0 then
+      sgPermissions.Cells[2, i + 1]:= '1'
+    else
+      sgPermissions.Cells[2, i + 1]:= '0';
+
+    if Pos('I', Permissions) > 0 then
+      sgPermissions.Cells[3, i + 1]:= '1'
+    else
+      sgPermissions.Cells[3, i + 1]:= '0';
+
+    if Pos('U', Permissions) > 0 then
+      sgPermissions.Cells[4, i + 1]:= '1'
+    else
+      sgPermissions.Cells[4, i + 1]:= '0';
+
+    if Pos('D', Permissions) > 0 then
+      sgPermissions.Cells[5, i + 1]:= '1'
+    else
+      sgPermissions.Cells[5, i + 1]:= '0';
+
+    if Pos('R', Permissions) > 0 then
+      sgPermissions.Cells[6, i + 1]:= '1'
+    else
+      sgPermissions.Cells[6, i + 1]:= '0';
+
+    if Pos('SG', Permissions) > 0 then
+      sgPermissions.Cells[7, i + 1]:= '1'
+    else
+      sgPermissions.Cells[7, i + 1]:= '0';
+
+    if Pos('IG', Permissions) > 0 then
+      sgPermissions.Cells[8, i + 1]:= '1'
+    else
+      sgPermissions.Cells[8, i + 1]:= '0';
+
+    if Pos('UG', Permissions) > 0 then
+      sgPermissions.Cells[9, i + 1]:= '1'
+    else
+      sgPermissions.Cells[9, i + 1]:= '0';
+
+    if Pos('DG', Permissions) > 0 then
+      sgPermissions.Cells[10, i + 1]:= '1'
+    else
+      sgPermissions.Cells[10, i + 1]:= '0';
+
+    if Pos('RG', Permissions) > 0 then
+      sgPermissions.Cells[11, i + 1]:= '1'
+    else
+      sgPermissions.Cells[11, i + 1]:= '0';
+  end;
+  UsersList.Free;
+end;
+
+initialization
+  {$I tablemanage.lrs}
+
+end.
+

+ 98 - 0
udfinfo.lfm

@@ -0,0 +1,98 @@
+object fmUDFInfo: TfmUDFInfo
+  Left = 330
+  Height = 277
+  Top = 216
+  Width = 489
+  ActiveControl = meBody
+  Caption = 'fmUDFInfo'
+  ClientHeight = 277
+  ClientWidth = 489
+  OnClose = FormClose
+  Position = poScreenCenter
+  LCLVersion = '0.9.31'
+  object Label1: TLabel
+    Left = 11
+    Height = 18
+    Top = 15
+    Width = 102
+    Caption = 'Function Name'
+    ParentColor = False
+  end
+  object Label2: TLabel
+    Left = 11
+    Height = 18
+    Top = 96
+    Width = 35
+    Caption = 'Body'
+    ParentColor = False
+  end
+  object Label3: TLabel
+    Left = 11
+    Height = 18
+    Top = 44
+    Width = 52
+    Caption = 'Module'
+    ParentColor = False
+  end
+  object Label7: TLabel
+    Left = 11
+    Height = 18
+    Top = 72
+    Width = 75
+    Caption = 'Entry Point'
+    DragCursor = crAppStart
+    ParentColor = False
+  end
+  object meBody: TMemo
+    Left = 11
+    Height = 160
+    Top = 112
+    Width = 469
+    Anchors = [akTop, akLeft, akRight, akBottom]
+    ReadOnly = True
+    ScrollBars = ssAutoBoth
+    TabOrder = 0
+  end
+  object edName: TEdit
+    Left = 120
+    Height = 21
+    Top = 14
+    Width = 256
+    Anchors = [akTop, akLeft, akRight]
+    AutoSelect = False
+    BorderStyle = bsNone
+    Font.Color = clNavy
+    ParentFont = False
+    ReadOnly = True
+    TabOrder = 1
+    Text = 'edName'
+  end
+  object edModule: TEdit
+    Left = 120
+    Height = 21
+    Top = 44
+    Width = 256
+    Anchors = [akTop, akLeft, akRight]
+    AutoSelect = False
+    BorderStyle = bsNone
+    Font.Color = clNavy
+    ParentFont = False
+    ReadOnly = True
+    TabOrder = 2
+    Text = 'edModule'
+  end
+  object edEntry: TEdit
+    Left = 120
+    Height = 21
+    Top = 72
+    Width = 256
+    Anchors = [akTop, akLeft, akRight]
+    AutoSelect = False
+    BorderStyle = bsNone
+    Font.Color = clNavy
+    ParentFont = False
+    ReadOnly = True
+    TabOrder = 3
+    Text = 'edGenName'
+  end
+end

+ 28 - 0
udfinfo.lrs

@@ -0,0 +1,28 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfmUDFInfo','FORMDATA',[
+  'TPF0'#10'TfmUDFInfo'#9'fmUDFInfo'#4'Left'#3'J'#1#6'Height'#3#21#1#3'Top'#3
+  +#216#0#5'Width'#3#233#1#13'ActiveControl'#7#6'meBody'#7'Caption'#6#9'fmUDFIn'
+  +'fo'#12'ClientHeight'#3#21#1#11'ClientWidth'#3#233#1#7'OnClose'#7#9'FormClos'
+  +'e'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#6'TLabel'#6
+  +'Label1'#4'Left'#2#11#6'Height'#2#18#3'Top'#2#15#5'Width'#2'f'#7'Caption'#6
+  +#13'Function Name'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#11#6
+  +'Height'#2#18#3'Top'#2'`'#5'Width'#2'#'#7'Caption'#6#4'Body'#11'ParentColor'
+  +#8#0#0#6'TLabel'#6'Label3'#4'Left'#2#11#6'Height'#2#18#3'Top'#2','#5'Width'#2
+  +'4'#7'Caption'#6#6'Module'#11'ParentColor'#8#0#0#6'TLabel'#6'Label7'#4'Left'
+  +#2#11#6'Height'#2#18#3'Top'#2'H'#5'Width'#2'K'#7'Caption'#6#11'Entry Point'
+  +#10'DragCursor'#7#10'crAppStart'#11'ParentColor'#8#0#0#5'TMemo'#6'meBody'#4
+  +'Left'#2#11#6'Height'#3#160#0#3'Top'#2'p'#5'Width'#3#213#1#7'Anchors'#11#5'a'
+  +'kTop'#6'akLeft'#7'akRight'#8'akBottom'#0#8'ReadOnly'#9#10'ScrollBars'#7#10
+  +'ssAutoBoth'#8'TabOrder'#2#0#0#0#5'TEdit'#6'edName'#4'Left'#2'x'#6'Height'#2
+  +#21#3'Top'#2#14#5'Width'#3#0#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0
+  +#10'AutoSelect'#8#11'BorderStyle'#7#6'bsNone'#10'Font.Color'#7#6'clNavy'#10
+  +'ParentFont'#8#8'ReadOnly'#9#8'TabOrder'#2#1#4'Text'#6#6'edName'#0#0#5'TEdit'
+  +#8'edModule'#4'Left'#2'x'#6'Height'#2#21#3'Top'#2','#5'Width'#3#0#1#7'Anchor'
+  +'s'#11#5'akTop'#6'akLeft'#7'akRight'#0#10'AutoSelect'#8#11'BorderStyle'#7#6
+  +'bsNone'#10'Font.Color'#7#6'clNavy'#10'ParentFont'#8#8'ReadOnly'#9#8'TabOrde'
+  +'r'#2#2#4'Text'#6#8'edModule'#0#0#5'TEdit'#7'edEntry'#4'Left'#2'x'#6'Height'
+  +#2#21#3'Top'#2'H'#5'Width'#3#0#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'
+  +#0#10'AutoSelect'#8#11'BorderStyle'#7#6'bsNone'#10'Font.Color'#7#6'clNavy'#10
+  +'ParentFont'#8#8'ReadOnly'#9#8'TabOrder'#2#3#4'Text'#6#9'edGenName'#0#0#0
+]);

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.